memory.top_7_stress

8 views
Skip to first unread message

Kentaro Hara

unread,
Jun 7, 2015, 9:57:16 PM6/7/15
to Yuta Kitamura, oilpan-...@chromium.org
Hi

Let me summarize the current status about the peak memory increase in memory.top_7_stress.

The following 3 CLs would be a key to fix the peak memory increase.

(a) https://codereview.chromium.org/1161903004/ (Oilpan: Don't call didV8GC in V8's minor GC)

(b) https://codereview.chromium.org/1158683003/ (Oilpan: We shouldn't schedule a GC before we complete sweeping)

(c) https://codereview.chromium.org/1156863002/ (Oilpan: Tweak a GC threshold to consider memory increase in PartitionAlloc)

We already landed (a) and (b) but haven't yet landed (c) because it causes OOM in dromaeo/dom-modify.html. It seems that these CLs changed GC heuristics and unintentionally delayed GCs in some cases. Maybe we need to tweak the GC threshold in ThreadState::shouldForceConservativeGC() (e.g., decrease the threshold from 400% to a more modest value etc).


Yuta-san: Would you investigate what's going on around here and fix the peak memory usage somehow?

The success criteria would be:

- The peak memory increase of memory.top_7_stress is fixed.

- When we observe about:tracing of memory.top_7_stress, GCs are properly scheduled.

- The number of GCs scheduled in the following benchmarks doesn't change; or if it changes, it changes in a reasonable way.

--- LargeDistributionWithoutLayout
--- textarea-dom
--- create-element
--- dom-modify
--- EventsDispatching
--- EventsDispatchingInShadowTrees
--- EventsDispatchingInDeeplyNestedShadowTrees



--
Kentaro Hara, Tokyo, Japan

Yuta Kitamura

unread,
Jun 8, 2015, 7:02:06 AM6/8/15
to Kentaro Hara, oilpan-...@chromium.org
Well, I'd like to make sure if it's really OOM that's happening in Dromaeo.

In my local testing on Linux, Dromaeo did indeed cause a segv, but it did not seem to be caused by a OOM. And seemed like the crash had nothing to do with the patch (c) above; I was able to reproduce the crash with ToT.

The below is the log from my gdb session (sorry for giant text blob!). Apparently there's a memory corruption stomping some region of Element (highlighted below)...

==========

#0  blink::Member<blink::LocalFrame>::operator blink::LocalFrame* (this=0x15f2) at ../../third_party/WebKit/Source/platform/heap/Handle.h:694
#1  0x000055555a47aff5 in blink::Document::settings (this=0x1402) at ../../third_party/WebKit/Source/core/dom/Document.cpp:1479
#2  0x000055555ad93694 in blink::ImageLoader::getImageAnimationPolicy (this=0x252314d79e88, policy=@0x7fffffffa074: blink::ImageAnimationPolicyAllowed)
    at ../../third_party/WebKit/Source/core/loader/ImageLoader.cpp:628
#3  0x000055555ab46d0f in blink::ImageResource::updateImageAnimationPolicy (this=0x205b9e01c520)
    at ../../third_party/WebKit/Source/core/fetch/ImageResource.cpp:436
#4  0x000055555ad92f92 in blink::ImageLoader::notifyFinished (this=0x5af984328e8, resource=0x205b9e01c520)
    at ../../third_party/WebKit/Source/core/loader/ImageLoader.cpp:457
#5  0x000055555a6d62ac in blink::HTMLImageLoader::notifyFinished (this=0x5af984328e8) at ../../third_party/WebKit/Source/core/html/HTMLImageLoader.cpp:82
#6  0x000055555ab5e9ae in blink::Resource::didAddClient (this=0x205b9e01c520, c=0x5af984328e8) at ../../third_party/WebKit/Source/core/fetch/Resource.cpp:536
#7  0x000055555ab44f23 in blink::ImageResource::didAddClient (this=0x205b9e01c520, c=0x5af984328e8)
    at ../../third_party/WebKit/Source/core/fetch/ImageResource.cpp:105
#8  0x000055555ab5e720 in blink::Resource::addClient (this=0x205b9e01c520, client=0x5af984328e8) at ../../third_party/WebKit/Source/core/fetch/Resource.cpp:530
#9  0x000055555ad9266f in blink::ImageLoader::doUpdateFromElement (this=0x5af984328e8, bypassBehavior=blink::ImageLoader::DoNotBypassMainWorldCSP, 
    updateBehavior=blink::ImageLoader::UpdateIgnorePreviousError) at ../../third_party/WebKit/Source/core/loader/ImageLoader.cpp:360
#10 0x000055555ad92bef in blink::ImageLoader::updateFromElement (this=0x5af984328e8, updateBehavior=blink::ImageLoader::UpdateIgnorePreviousError)
    at ../../third_party/WebKit/Source/core/loader/ImageLoader.cpp:394
#11 0x000055555a6cfd3b in blink::HTMLImageElement::selectSourceURL (this=0x31d584ce3bf8, behavior=blink::ImageLoader::UpdateIgnorePreviousError)
    at ../../third_party/WebKit/Source/core/html/HTMLImageElement.cpp:666
#12 0x000055555a6d0a2d in blink::HTMLImageElement::parseAttribute (this=0x31d584ce3bf8, name="src", value="http://www.w3.org/Icons/w3c_home")
    at ../../third_party/WebKit/Source/core/html/HTMLImageElement.cpp:267
#13 0x000055555a4e7c97 in blink::Element::attributeChanged (this=0x31d584ce3bf8, name="src", newValue="http://www.w3.org/Icons/w3c_home", 
    reason=blink::Element::ModifiedDirectly) at ../../third_party/WebKit/Source/core/dom/Element.cpp:1107
#14 0x000055555a4f40cd in blink::Element::attributeChangedFromParserOrByCloning (this=0x31d584ce3bf8, name="src", newValue="http://www.w3.org/Icons/w3c_home", 
    reason=blink::Element::ModifiedDirectly) at ../../third_party/WebKit/Source/core/dom/Element.cpp:1161
#15 0x000055555a4e8d25 in blink::Element::parserSetAttributes (this=0x31d584ce3bf8, attributeVector=WTF::Vector of length 4, capacity 4 = {...})
    at ../../third_party/WebKit/Source/core/dom/Element.cpp:1297
#16 0x000055555a8e9113 in blink::setAttributes (element=0x31d584ce3bf8, token=0x7fffffffb4d8, parserContentPolicy=blink::AllowScriptingContent)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp:66
#17 0x000055555a8ea3f2 in blink::HTMLConstructionSite::createHTMLElement (this=0x5af98429c58, token=0x7fffffffb4d8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp:757
#18 0x000055555a8ea82a in blink::HTMLConstructionSite::insertSelfClosingHTMLElement (this=0x5af98429c58, token=0x7fffffffb4d8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp:633
#19 0x000055555a869011 in blink::HTMLTreeBuilder::processStartTagForInBody (this=0x5af98429c40, token=0x7fffffffb4d8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp:791
#20 0x000055555a862fa2 in blink::HTMLTreeBuilder::processStartTag (this=0x5af98429c40, token=0x7fffffffb4d8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp:1143
#21 0x000055555a86231a in blink::HTMLTreeBuilder::processToken (this=0x5af98429c40, token=0x7fffffffb4d8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp:417
#22 0x000055555a8613bb in blink::HTMLTreeBuilder::constructTree (this=0x5af98429c40, token=0x7fffffffb4d8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp:377
#23 0x000055555a829c01 in blink::HTMLDocumentParser::constructTreeFromCompactHTMLToken (this=0x5af984298c8, compactToken=...)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp:710
#24 0x000055555a8297cd in blink::HTMLDocumentParser::processParsedChunkFromBackgroundParser (this=0x5af984298c8, popChunk=...)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp:492
#25 0x000055555a827ff8 in blink::HTMLDocumentParser::pumpPendingSpeculations (this=0x5af984298c8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp:563
#26 0x000055555a827b3c in blink::HTMLDocumentParser::resumeParsingAfterYield (this=0x5af984298c8)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp:307
#27 0x000055555a83d968 in blink::HTMLParserScheduler::continueParsing (this=0x2faeb0afdd90)
    at ../../third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp:165
#28 0x000055555a83e179 in WTF::FunctionWrapper<void (blink::HTMLParserScheduler::*)()>::operator() (this=0x180e2ffe4568, c=0x2faeb0afdd90)
    at ../../third_party/WebKit/Source/wtf/Functional.h:83
#29 0x000055555a83e100 in WTF::PartBoundFunctionImpl<1, WTF::FunctionWrapper<void (blink::HTMLParserScheduler::*)()>, void (blink::HTMLParserScheduler*)>::operator()() (this=0x180e2ffe4560) at ../../third_party/WebKit/Source/wtf/Functional.h:178
#30 0x00005555617465ea in blink::CancellableTaskFactory::CancellableTask::run (this=0x180e2ecc06b0)
    at ../../third_party/WebKit/Source/platform/scheduler/CancellableTaskFactory.cpp:29
#31 0x000055555db04bee in scheduler::WebSchedulerImpl::runTask (task=...) at ../../components/scheduler/child/web_scheduler_impl.cc:46
#32 0x000055555db06aca in base::internal::RunnableAdapter<void (*)(scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> >)>::Run (
    this=0x7fffffffb888, args=...) at ../../base/bind_internal.h:157
#33 0x000055555db06a02 in base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (*)(scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> >)>, base::internal::TypeList<scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> > > >::MakeItSo (
    runnable=..., args=...) at ../../base/bind_internal.h:293
#34 0x000055555db069b3 in base::internal::Invoker<base::IndexSequence<0ul>, base::internal::BindState<base::internal::RunnableAdapter<void (*)(scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> >)>, void (scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> >), base::internal::TypeList<base::internal::PassedWrapper<scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> > > > >, base::internal::TypeList<base::internal::UnwrapTraits<base::internal::PassedWrapper<scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> > > > >, base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (*)(scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> >)>, base::internal::TypeList<scoped_ptr<blink::WebThread::Task, base::DefaultDeleter<blink::WebThread::Task> > > >, void ()>::Run(base::internal::BindStateBase*) (base=0x180e2f864790) at ../../base/bind_internal.h:343
#35 0x000055555625359e in base::Callback<void ()>::Run() const (this=0x7fffffffbb38) at ../../base/callback.h:396
#36 0x00005555575f7498 in base::debug::TaskAnnotator::RunTask (this=0x180e2df44664, queue_function=0x555563d3f3d6 <.L.str.26> "TaskQueueManager::PostTask", 
    run_function=0x555563d3f3f1 <.L.str.27> "TaskQueueManager::RunTask", pending_task=...) at ../../base/debug/task_annotator.cc:62
#37 0x000055555dafb86d in scheduler::TaskQueueManager::ProcessTaskFromWorkQueue (this=0x180e2df44620, queue_index=5, has_previous_task=false, 
    previous_task=0x7fffffffbdc0) at ../../components/scheduler/child/task_queue_manager.cc:674
#38 0x000055555dafa3a4 in scheduler::TaskQueueManager::DoWork (this=0x180e2df44620, posted_from_main_thread=false)
    at ../../components/scheduler/child/task_queue_manager.cc:627
#39 0x000055555db04246 in base::internal::RunnableAdapter<void (scheduler::TaskQueueManager::*)(bool)>::Run (this=0x7fffffffc1c0, object=0x180e2df44620, 
    args=@0x180e2ded9658: false) at ../../base/bind_internal.h:176
#40 0x000055555db04126 in base::internal::InvokeHelper<true, void, base::internal::RunnableAdapter<void (scheduler::TaskQueueManager::*)(bool)>, base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager> const&, bool const&> >::MakeItSo (runnable=..., weak_ptr=..., args=@0x180e2ded9658: false)
    at ../../base/bind_internal.h:303
#41 0x000055555db040c1 in base::internal::Invoker<base::IndexSequence<0ul, 1ul>, base::internal::BindState<base::internal::RunnableAdapter<void (scheduler::TaskQueueManager::*)(bool)>, void (scheduler::TaskQueueManager*, bool), base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager>, bool> >, base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<scheduler::TaskQueueManager> >, base::internal::UnwrapTraits<bool> >, base::internal::InvokeHelper<true, void, base::internal::RunnableAdapter<void (scheduler::TaskQueueManager::*)(bool)>, base::internal::TypeList<base::WeakPtr<scheduler::TaskQueueManager> const&, bool const&> >, void ()>::Run(base::internal::BindStateBase*) (base=0x180e2ded9620) at ../../base/bind_internal.h:343
#42 0x000055555625359e in base::Callback<void ()>::Run() const (this=0x7fffffffc648) at ../../base/callback.h:396
#43 0x00005555575f7498 in base::debug::TaskAnnotator::RunTask (this=0x180e2df3f390, queue_function=0x5555632983ad <.L.str.9> "MessageLoop::PostTask", 
    run_function=0x5555632983c3 <.L.str.15> "MessageLoop::RunTask", pending_task=...) at ../../base/debug/task_annotator.cc:62
#44 0x00005555574deb51 in base::MessageLoop::RunTask (this=0x180e2df3f1a0, pending_task=...) at ../../base/message_loop/message_loop.cc:458
#45 0x00005555574deca8 in base::MessageLoop::DeferOrRunPendingTask (this=0x180e2df3f1a0, pending_task=...) at ../../base/message_loop/message_loop.cc:468
#46 0x00005555574dee72 in base::MessageLoop::DoWork (this=0x180e2df3f1a0) at ../../base/message_loop/message_loop.cc:580
#47 0x00005555574f2743 in base::MessagePumpDefault::Run (this=0x180e2dea9da0, delegate=0x180e2df3f1a0) at ../../base/message_loop/message_pump_default.cc:34
#48 0x00005555574de70f in base::MessageLoop::RunHandler (this=0x180e2df3f1a0) at ../../base/message_loop/message_loop.cc:424
#49 0x00005555575249f4 in base::RunLoop::Run (this=0x7fffffffcac8) at ../../base/run_loop.cc:55
#50 0x00005555574ddc86 in base::MessageLoop::Run (this=0x180e2df3f1a0) at ../../base/message_loop/message_loop.cc:286
#51 0x000055555dbe1c8b in content::RendererMain (parameters=...) at ../../content/renderer/renderer_main.cc:220
#52 0x00005555573c4a66 in content::RunNamedProcessTypeMain (process_type=..., main_function_params=..., delegate=0x7fffffffd840)
    at ../../content/app/content_main_runner.cc:388
#53 0x00005555573c673d in content::ContentMainRunnerImpl::Run (this=0x180e2dde6380) at ../../content/app/content_main_runner.cc:801
#54 0x00005555573c4062 in content::ContentMain (params=...) at ../../content/app/content_main.cc:19
#55 0x00005555561249a2 in ChromeMain (argc=17, argv=0x7fffffffd988) at ../../chrome/app/chrome_main.cc:66
#56 0x0000555556124952 in main (argc=17, argv=0x7fffffffd988) at ../../chrome/app/chrome_exe_main_aura.cc:17


#2  0x000055555ad93694 in blink::ImageLoader::getImageAnimationPolicy (this=0x252314d79e88, policy=@0x7fffffffa074: blink::ImageAnimationPolicyAllowed)
    at ../../third_party/WebKit/Source/core/loader/ImageLoader.cpp:628
628         if (!element()->document().settings())
(gdb) p m_element
$1 = {
  m_raw = 0x31d584d1b0b0
}
(gdb) p *m_element      
$2 = (blink::Element &) @0x31d584d1b0b0: {
  <blink::ContainerNode> = {
    <blink::Node> = {
      <blink::EventTarget> = {
        <blink::GarbageCollectedFinalized<blink::EventTarget>> = {
          <blink::GarbageCollected<blink::EventTarget>> = {<No data fields>}, <No data fields>}, 
        <blink::ScriptWrappable> = {
          _vptr$ScriptWrappable = 0x31d584d1b038, 
          m_wrapper = {
            <v8::PersistentBase<v8::Object>> = {
              val_ = 0x31d584d1b140
            }, <No data fields>}
        }, 
      }, 
      members of blink::Node: 
      m_nodeFlags = 3423658256, 
      m_parentOrShadowHostNode = {
        m_raw = 0x31d584d1b0f0
      }, 
      m_treeScope = {
        m_raw = 0x31d584d1b0f0
      }, 
      m_previous = {
        m_raw = 0x2faeb0a40350
      }, 
      m_next = {
        m_raw = 0x0
      }, 
      m_data = {
        m_layoutObject = 0x2a2afff100d80050, 
        m_rareData = 0x2a2afff100d80050
      }
    }, 
    members of blink::ContainerNode: 
    m_firstChild = {
      m_raw = 0x5555686a8148 <vtable for blink::Text+16>
    }, 
    m_lastChild = {
      m_raw = 0x0    // This is strange, because m_firstChild is non-null
    }
  }, 
  members of blink::Element: 
  m_tagName = <error reading variable: Cannot access memory at address 0x1422>{
    m_impl = WTF::RefPtr((blink::QualifiedName::QualifiedNameImpl *)0x1402)
  }, 
  m_elementData = {
    m_raw = 0x31d584d1b088
  }
}
(gdb) x/128a &*m_element
0x31d584d1b0b0: 0x31d584d1b038  0x31d584d1b140
0x31d584d1b0c0: 0x218acc10e110  0x31d584d1b0f0
0x31d584d1b0d0: 0x31d584d1b0f0  0x2faeb0a40350
0x31d584d1b0e0: 0x0     0x2a2afff100d80050
0x31d584d1b0f0: 0x5555686a8148 <_ZTVN5blink4TextE+16>   0x0
0x31d584d1b100: 0x1402  0x31d584d1b088
0x31d584d1b110: 0x31d584d65a38  0x0
0x31d584d1b120: 0x0     0x218acc103b90
0x31d584d1b130: 0x11c67d638100  0x2a2afff100d80078
0x31d584d1b140: 0x55556888e590 <_ZTVN5blink16HTMLOListElementE+16>      0x0
0x31d584d1b150: 0x141c  0x31d584d15980
0x31d584d1b160: 0x31d584d65a38  0x31d584d1b088
0x31d584d1b170: 0x0     0x218acc10e210
0x31d584d1b180: 0x31d584d1b1b8  0x31d584d1b2c0
0x31d584d1b190: 0x2faeb0a3dbf0  0x0
0x31d584d1b1a0: 0xbadbeef       0x4
0x31d584d1b1b0: 0x2a2afff100d80050      0x5555686a8148 <_ZTVN5blink4TextE+16>
0x31d584d1b1c0: 0x0     0x1402
0x31d584d1b1d0: 0x31d584d1b140  0x31d584d65a38
0x31d584d1b1e0: 0x0     0x31d584d1b208
0x31d584d1b1f0: 0x0     0x11c66ee21aa0
0x31d584d1b200: 0x2a2afff100d80068      0x55556888c050 <_ZTVN5blink13HTMLLIElementE+16>
0x31d584d1b210: 0x0     0x141c
0x31d584d1b220: 0x31d584d1b140  0x31d584d65a38
0x31d584d1b230: 0x31d584d1b1b8  0x31d584d1b2c0
0x31d584d1b240: 0x218accdbe6e0  0x31d584d1b270
0x31d584d1b250: 0x31d584d1b270  0x2faeb0a3cb10
0x31d584d1b260: 0x0     0x2a2afff100d80050
0x31d584d1b270: 0x5555686a8148 <_ZTVN5blink4TextE+16>   0x0
0x31d584d1b280: 0x1402  0x31d584d1b208
0x31d584d1b290: 0x31d584d65a38  0x0
0x31d584d1b2a0: 0x0     0x218acc103c30
0x31d584d1b2b0: 0x11c67d5e6870  0x2a2afff100d80068
0x31d584d1b2c0: 0x55556888c050 <_ZTVN5blink13HTMLLIElementE+16> 0x0
0x31d584d1b2d0: 0x141c  0x31d584d1b140
0x31d584d1b2e0: 0x31d584d65a38  0x31d584d1b208
0x31d584d1b2f0: 0x0     0x218accdbe7f8
0x31d584d1b300: 0x31d584d1b328  0x31d584d1b328
0x31d584d1b310: 0x2faeb0a3cb10  0x0
0x31d584d1b320: 0x2a2afff100d80050      0x5555686a8148 <_ZTVN5blink4TextE+16>
0x31d584d1b330: 0x0     0x1402
0x31d584d1b340: 0x31d584d1b2c0  0x31d584d65a38
0x31d584d1b350: 0x0     0x0
0x31d584d1b360: 0x218acc103cd0  0x11c67dcd0cb8
0x31d584d1b370: 0x2a2afff100d80050      0x5555686a8148 <_ZTVN5blink4TextE+16>
0x31d584d1b380: 0x0     0x1402
0x31d584d1b390: 0x31d584d68f78  0x31d584d65a38
0x31d584d1b3a0: 0x31d584d15980  0x31d584d1b3c8
0x31d584d1b3b0: 0x0     0x11c66ee26720
0x31d584d1b3c0: 0x2a2afff100d80068      0x55556888af58 <_ZTVN5blink18HTMLHeadingElementE+16>
0x31d584d1b3d0: 0x0     0x141c
0x31d584d1b3e0: 0x31d584d68f78  0x31d584d65a38
0x31d584d1b3f0: 0x31d584d1b378  0x31d584d1b508
0x31d584d1b400: 0x218acc10e310  0x31d584d1b430
0x31d584d1b410: 0x31d584d1b4b8  0x2faeb0a3bb50
0x31d584d1b420: 0x0     0x2a2afff100d80088
0x31d584d1b430: 0x5555686ab618 <_ZTVN5blink17HTMLAnchorElementE+16>     0x0
0x31d584d1b440: 0x80141c        0x31d584d1b3c8
0x31d584d1b450: 0x31d584d65a38  0x0
0x31d584d1b460: 0x31d584d1b4b8  0x218acc103d70
0x31d584d1b470: 0x0     0x0
0x31d584d1b480: 0x2faeb0a38010  0x28fed3d9cdd8
0x31d584d1b490: 0x5555686abae0 <_ZTVN5blink17HTMLAnchorElementE+1240>   0x0
0x31d584d1b4a0: 0x0     0x0

Yuta Kitamura

unread,
Jun 8, 2015, 7:07:44 AM6/8/15
to Kentaro Hara, oilpan-...@chromium.org
For repro, run Dromaeo DOM core tests <http://dromaeo.com/?dom> a few times (press "Run" button, wait for tests to finish, and run again if the browser hasn't crashed yet). In my local testing, I could reliably repro with 3 or 4 repeats at most. I probably need to reduce it to a minimized repro case...

Yuta Kitamura

unread,
Jun 9, 2015, 6:04:49 AM6/9/15
to Kentaro Hara, oilpan-...@chromium.org
Okay, this seemed like an issue with lazy sweeping. If you disable lazy sweeping, you will no longer get a crash.

Haraken: can you take a look at this? To reproduce, open http://dromaeo.com/?dom-modify and run the test a few times (I did not have time to reduce further). Sounded like ImageLoader-related, because I've always seen it in stack straces.

Will check the peak memory on mobile devices tomorrow.

Kentaro Hara

unread,
Jun 9, 2015, 6:24:38 AM6/9/15
to Yuta Kitamura, oilpan-...@chromium.org
Thanks Yuta-san for the investigation!

My guess is that Heap::willObjectBeLazilySwept in ImageLoader is doing something wrong:

The problem might be related to what I commented in https://codereview.chromium.org/1151163002/#msg13.

Kentaro Hara

unread,
Jun 9, 2015, 7:04:32 AM6/9/15
to Yuta Kitamura, oilpan-...@chromium.org

Yuta Kitamura

unread,
Jun 11, 2015, 2:43:15 AM6/11/15
to Kentaro Hara, oilpan-...@chromium.org
I have done measuring memory statistics with these patches applied, but unfortunately it turned out that these didn't fix peak memory increase...


Even patch (c) didn't make the situation better (Blogger regression stayed at the same level); these need further investigation.

Thanks,
Yuta

Sigbjorn Finne

unread,
Jun 11, 2015, 11:33:22 AM6/11/15
to Yuta Kitamura, Kentaro Hara, oilpan-...@chromium.org
Den 6/11/2015 08:42, Yuta Kitamura skreiv:
> I have done measuring memory statistics with these patches applied, but
> unfortunately it turned out that these didn't fix peak memory increase...
>
> https://www.googledrive.com/host/0B6XhrzUCq5lhUjloNWR3b0xxRXM/2015/mem61.html
>
> Even patch (c) didn't make the situation better (Blogger regression
> stayed at the same level); these need further investigation.
>

You're the better judge if it may make a difference for
memory.top_7_stress without (c), but if it sticks,
https://codereview.chromium.org/1174123002/ is now available.

--sigbjorn
Reply all
Reply to author
Forward
0 new messages