[Webkit-unassigned] [Bug 77154] New: Assertion in FrameView::scheduleRelayoutOfSubtree
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Jan 26 15:25:21 PST 2012
https://bugs.webkit.org/show_bug.cgi?id=77154
Summary: Assertion in FrameView::scheduleRelayoutOfSubtree
Product: WebKit
Version: 528+ (Nightly build)
Platform: Unspecified
OS/Version: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: Layout and Rendering
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: dominicc at chromium.org
CC: hyatt at apple.com, dglazkov at chromium.org
Specifically:
ASSERTION FAILED: !m_layoutRoot->container() || !m_layoutRoot->container()->needsLayout()
/WebKit/Source/WebCore/page/FrameView.cpp(2010) : void WebCore::FrameView::scheduleRelayoutOfSubtree(WebCore::RenderObject*)
1 0x102d52550 WebCore::FrameView::scheduleRelayoutOfSubtree(WebCore::RenderObject*)
2 0x103587140 WebCore::RenderObject::scheduleRelayout()
3 0x1035874f3 WebCore::RenderObject::markContainingBlocksForLayout(bool, WebCore::RenderObject*)
4 0x102b83146 WebCore::RenderObject::setNeedsLayout(bool, bool)
5 0x1034c6c4b WebCore::RenderObject::setNeedsLayoutAndPrefWidthsRecalc()
6 0x1035927db WebCore::RenderObjectChildList::removeChildNode(WebCore::RenderObject*, WebCore::RenderObject*, bool)
11 0x1034fc034 WebCore::RenderBoxModelObject::willBeDestroyed()
12 0x1034ee590 WebCore::RenderBox::willBeDestroyed()
13 0x10349e162 WebCore::RenderBlock::willBeDestroyed()
14 0x1035878f6 WebCore::RenderObject::destroy()
15 0x103592d36 WebCore::RenderObjectChildList::destroyLeftoverChildren()
16 0x10349e011 WebCore::RenderBlock::willBeDestroyed()
17 0x1035878f6 WebCore::RenderObject::destroy()
18 0x1033fab55 WebCore::Node::detach()
19 0x1029c7950 WebCore::ContainerNode::detach()
20 0x102ca72b9 WebCore::Element::detach()
21 0x102e12308 WebCore::HTMLFormControlElement::detach()
22 0x1029c792a WebCore::ContainerNode::detach()
23 0x102ca72b9 WebCore::Element::detach()
…
This repro is based on a fuzzer, posting it until I come up with a better one.
The repro constructs this DOM:
.afterSpan:after { content: counter(section); }
.afterDiv:after { content: counter(section); }
.nthChildSpan:nth-child(0) {}
<div id=”container”>
<td>
<textarea></textarea>
</td>
<div style=”counter-reset: section 0;”></div>
<div style=”content: counter(section, decimal);”>
<td style=”counter-reset: section 0;”></td>
</div>
<div class=”afterDiv”>
<div style=”position: fixed”>
<span class=”afterSpan”></span>
</div>
</div>
<span class=”nthChildSpan”></span>
<div></div>
</div>
The element traffic up to inserting <span class="afterSpan"> causes the first TD to be marked for layout. Then it removes the TEXTAREA. As the TEXTAREA is removed, it marks the shadow DIV as needing layout as part of the generic operation off RenderObjectChildList::removeChildNode. RenderObject::markContainingBlocksForLayout walks back up the tree to the TEXTAREA and marks it for layout, but stops there, because the TEXTAREA is a layout boundary (objectIsLayoutBoundary) and schedules the TEXTAREA for layout. The assertion fires because the TEXTAREA is scheduled for layout but the TD has needsLayout.
It looks like this assertion has been firing for some time (at least since mid last year.)
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list