Created attachment 245618 [details] Test case Load this with debug WK: <style> * { display:list-item; } </style> <marquee> <font></font> </marquee> Backtrace: ASSERTION FAILED: !root->needsLayout() ../../Source/WebCore/page/FrameView.cpp(1379) : void WebCore::FrameView::layout(bool) Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fff8affd700 (LWP 10698)] 0x00007fffed72443d in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321 321 *(int *)(uintptr_t)0xbbadbeef = 0; #0 0x00007fffed72443d in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321 #1 0x00007ffff3520215 in WebCore::FrameView::layout (this=0x7ffff7ec4b00, allowSubtree=true) at ../../Source/WebCore/page/FrameView.cpp:1379 #2 0x00007ffff2ec5963 in WebCore::Document::implicitClose (this=0x7fff9851c000) at ../../Source/WebCore/dom/Document.cpp:2497 #3 0x00007ffff33c6915 in WebCore::FrameLoader::checkCallImplicitClose (this=0x7ffff7f37a98) at ../../Source/WebCore/loader/FrameLoader.cpp:901 #4 0x00007ffff33c6681 in WebCore::FrameLoader::checkCompleted (this=0x7ffff7f37a98) at ../../Source/WebCore/loader/FrameLoader.cpp:847 #5 0x00007ffff33c63ea in WebCore::FrameLoader::finishedParsing (this=0x7ffff7f37a98) at ../../Source/WebCore/loader/FrameLoader.cpp:767 #6 0x00007ffff2ece858 in WebCore::Document::finishedParsing (this=0x7fff9851c000) at ../../Source/WebCore/dom/Document.cpp:4629 #7 0x00007ffff32372b3 in WebCore::HTMLConstructionSite::finishedParsing (this=0x7ffff7f31800) at ../../Source/WebCore/html/parser/HTMLConstructionSite.cpp:404 #8 0x00007ffff3273c26 in WebCore::HTMLTreeBuilder::finished (this=0x7ffff7f317e0) at ../../Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2941 #9 0x00007ffff323fb32 in WebCore::HTMLDocumentParser::end (this=0x7ffff7ecc100) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:402 #10 0x00007ffff323fc00 in WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd (this=0x7ffff7ecc100) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:411 #11 0x00007ffff323e8b0 in WebCore::HTMLDocumentParser::prepareToStopParsing (this=0x7ffff7ecc100) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:132 #12 0x00007ffff323fc37 in WebCore::HTMLDocumentParser::attemptToEnd (this=0x7ffff7ecc100) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:423 #13 0x00007ffff323fce5 in WebCore::HTMLDocumentParser::finish (this=0x7ffff7ecc100) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:451 #14 0x00007ffff33b6ac7 in WebCore::DocumentWriter::end (this=0x7ffff7eb7aa0) at ../../Source/WebCore/loader/DocumentWriter.cpp:247 #15 0x00007ffff33a212b in WebCore::DocumentLoader::finishedLoading (this=0x7ffff7eb7a00, finishTime=0) at ../../Source/WebCore/loader/DocumentLoader.cpp:440 #16 0x00007ffff33a1e94 in WebCore::DocumentLoader::notifyFinished (this=0x7ffff7eb7a00, resource=0x7ffff7ec4680) at ../../Source/WebCore/loader/DocumentLoader.cpp:374 #17 0x00007ffff345619c in WebCore::CachedResource::checkNotify (this=0x7ffff7ec4680) at ../../Source/WebCore/loader/cache/CachedResource.cpp:296 #18 0x00007ffff345629a in WebCore::CachedResource::finishLoading (this=0x7ffff7ec4680) at ../../Source/WebCore/loader/cache/CachedResource.cpp:312 #19 0x00007ffff34528a1 in WebCore::CachedRawResource::finishLoading (this=0x7ffff7ec4680, data=0x7fff98514570) at ../../Source/WebCore/loader/cache/CachedRawResource.cpp:104 #20 0x00007ffff34050fd in WebCore::SubresourceLoader::didFinishLoading (this=0x7ffff7ec4200, finishTime=0) at ../../Source/WebCore/loader/SubresourceLoader.cpp:364 #21 0x00007ffff3400a37 in WebCore::ResourceLoader::didFinishLoading (this=0x7ffff7ec4200, finishTime=0) at ../../Source/WebCore/loader/ResourceLoader.cpp:502 #22 0x00007ffff3db16a5 in WebCore::readCallback (asyncResult=0x6ba1f0, data=0x7fff9850c100) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1295 #23 0x00007fffeb26d7e6 in async_ready_callback_wrapper (source_object=0x7c72d0, res=0x6ba1f0, user_data=user_data@entry=0x7fff9850c100) at ginputstream.c:523 #24 0x00007fffeb2930e5 in g_task_return_now (task=0x6ba1f0) at gtask.c:1077 #25 0x00007fffeb293109 in complete_in_idle_cb (task=0x6ba1f0) at gtask.c:1086 #26 0x00007fffea54ba1d in g_main_dispatch (context=0x478b00) at gmain.c:3064 #27 g_main_context_dispatch (context=context@entry=0x478b00) at gmain.c:3663 #28 0x00007fffea54bd88 in g_main_context_iterate (context=0x478b00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3734 #29 0x00007fffea54c04a in g_main_loop_run (loop=0x901bd0) at gmain.c:3928 #30 0x00007ffff44b40b6 in WTF::RunLoop::run () at ../../Source/WTF/wtf/gtk/RunLoopGtk.cpp:59 #31 0x00007ffff299deac in WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain> (argc=2, argv=0x7fffffffd988) at ../../Source/WebKit2/Shared/unix/ChildProcessMain.h:61 #32 0x00007ffff299dd11 in WebKit::WebProcessMainUnix (argc=2, argv=0x7fffffffd988) at ../../Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:77 #33 0x00000000004008d1 in main (argc=2, argv=0x7fffffffd988) at ../../Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp:44
I've start to look at this issue.
Created attachment 245934 [details] patch patch for this issue.
Comment on attachment 245934 [details] patch This patch doesn’t apply. Could you rebase and attach one that does apply? That change looks fine.
Created attachment 245998 [details] patch
Comment on attachment 245998 [details] patch I think this change is OK;I am a little bit unclear on this. If one layout can cause the need for another layout, maybe we have a real problem here, not just a misplaced assert.
In my understanding RenderLayer::updateLayerPositionsAfterLayout() can makes another layout when we have Marquee Element. I think FrameView::layout() looks allowing another layout internally if needed.
Comment on attachment 245998 [details] patch Clearing flags on attachment: 245998 Committed r179726: <http://trac.webkit.org/changeset/179726>
All reviewed patches have been landed. Closing bug.