Bug 141032

Summary: ASSERTION FAILED: !root->needsLayout() in WebCore::FrameView::layout
Product: WebKit Reporter: Renata Hodovan <rhodovan.u-szeged>
Component: Layout and RenderingAssignee: Hyungwook Lee <hyungwook.lee>
Status: RESOLVED FIXED    
Severity: Normal CC: cdumez, commit-queue, hyungwook.lee, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 116980    
Attachments:
Description Flags
Test case
none
patch
none
patch none

Description Renata Hodovan 2015-01-29 07:18:16 PST
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
Comment 1 Hyungwook Lee 2015-01-30 05:59:00 PST
I've start to look at this issue.
Comment 2 Hyungwook Lee 2015-02-03 05:52:18 PST
Created attachment 245934 [details]
patch

patch for this issue.
Comment 3 Darin Adler 2015-02-03 08:47:35 PST
Comment on attachment 245934 [details]
patch

This patch doesn’t apply. Could you rebase and attach one that does apply? That change looks fine.
Comment 4 Hyungwook Lee 2015-02-03 17:45:32 PST
Created attachment 245998 [details]
patch
Comment 5 Darin Adler 2015-02-04 09:12:44 PST
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.
Comment 6 Hyungwook Lee 2015-02-05 01:05:13 PST
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 7 WebKit Commit Bot 2015-02-05 17:05:14 PST
Comment on attachment 245998 [details]
patch

Clearing flags on attachment: 245998

Committed r179726: <http://trac.webkit.org/changeset/179726>
Comment 8 WebKit Commit Bot 2015-02-05 17:05:18 PST
All reviewed patches have been landed.  Closing bug.