[Webkit-unassigned] [Bug 190169] New: RenderBox::clippedOverflowRectForRepaint() should not use enclosingLayer()->hasVisibleContent()

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Oct 1 15:12:49 PDT 2018


https://bugs.webkit.org/show_bug.cgi?id=190169

            Bug ID: 190169
           Summary: RenderBox::clippedOverflowRectForRepaint() should not
                    use enclosingLayer()->hasVisibleContent()
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Layout and Rendering
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: simon.fraser at apple.com
                CC: bfulgham at webkit.org, simon.fraser at apple.com,
                    zalan at apple.com

RenderBox::clippedOverflowRectForRepaint() calls enclosingLayer()->hasVisibleContent(), but hasVisibleContent() relies on an up-to-date RenderLayer tree with updated z-order lists, which we can't guarantee at the time when clippedOverflowRectForRepaint() is called (i.e. during layout). Here's an example of a bad stack:

2   com.apple.WebCore                   0x000000076b2537aa WebCore::RenderLayer::hasVisibleContent() const + 122 (RenderLayer.cpp:956)
3   com.apple.WebCore                   0x000000076b14a754 WebCore::RenderBox::clippedOverflowRectForRepaint(WebCore::RenderLayerModelObject const*) const + 68 (RenderBox.cpp:2120)
4   com.apple.WebCore                   0x000000076b372946 WebCore::RenderText::clippedOverflowRectForRepaint(WebCore::RenderLayerModelObject const*) const + 214 (RenderText.cpp:1399)
5   com.apple.WebCore                   0x000000076b2eb4b5 WebCore::RenderObject::repaint() const + 133 (RenderObject.cpp:900)
6   com.apple.WebCore                   0x000000076b55ad12 WebCore::RenderTreeBuilder::detachFromRenderElement(WebCore::RenderElement&, WebCore::RenderObject&) + 578 (RenderTreeBuilder.cpp:795)
7   com.apple.WebCore                   0x000000076b570f14 WebCore::RenderTreeBuilder::Inline::splitInlines(WebCore::RenderInline&, WebCore::RenderBlock*, WebCore::RenderBlock*, WebCore::RenderBlock*, WebCore::RenderObject*, WebCore::RenderBoxModelObject*) + 4084
8   com.apple.WebCore                   0x000000076b56fa3f WebCore::RenderTreeBuilder::Inline::splitFlow(WebCore::RenderInline&, WebCore::RenderObject*, std::__1::unique_ptr<WebCore::RenderBlock, WebCore::RenderObjectDeleter>, std::__1::unique_ptr<WebCore::RenderObject, WebCore::RenderObjectDeleter>, WebCore::RenderBoxModelObject*) + 4655 (RenderTreeBuilderInline.cpp:246)
9   com.apple.WebCore                   0x000000076b56debf WebCore::RenderTreeBuilder::Inline::attachIgnoringContinuation(WebCore::RenderInline&, std::__1::unique_ptr<WebCore::RenderObject, WebCore::RenderObjectDeleter>, WebCore::RenderObject*) + 1551 (RenderTreeBuilderInline.cpp:188)
10  com.apple.WebCore                   0x000000076b56c662 WebCore::RenderTreeBuilder::Inline::attach(WebCore::RenderInline&, std::__1::unique_ptr<WebCore::RenderObject, WebCore::RenderObjectDeleter>, WebCore::RenderObject*) + 1282 (RenderTreeBuilderInline.cpp:116)
11  com.apple.WebCore                   0x000000076b558611 WebCore::RenderTreeBuilder::attach(WebCore::RenderElement&, std::__1::unique_ptr<WebCore::RenderObject, WebCore::RenderObjectDeleter>, WebCore::RenderObject*) + 12049 (RenderTreeBuilder.cpp:298)
12  com.apple.WebCore                   0x000000076b55b254 WebCore::RenderTreeBuilder::attach(WebCore::RenderTreePosition&, std::__1::unique_ptr<WebCore::RenderObject, WebCore::RenderObjectDeleter>) + 516 (RenderTreeBuilder.cpp:363)
13  com.apple.WebCore                   0x000000076b5870a5 WebCore::RenderTreeUpdater::createRenderer(WebCore::Element&, WebCore::RenderStyle&&) + 2517 (RenderTreeUpdater.cpp:397)
14  com.apple.WebCore                   0x000000076b58521a WebCore::RenderTreeUpdater::updateElementRenderer(WebCore::Element&, WebCore::Style::ElementUpdate const&) + 970 (RenderTreeUpdater.cpp:338)
15  com.apple.WebCore                   0x000000076b584752 WebCore::RenderTreeUpdater::updateRenderTree(WebCore::ContainerNode&) + 1138 (RenderTreeUpdater.cpp:204)
16  com.apple.WebCore                   0x000000076b583fcd WebCore::RenderTreeUpdater::commit(std::__1::unique_ptr<WebCore::Style::Update const, std::__1::default_delete<WebCore::Style::Update const> >) + 1005
17  com.apple.WebCore                   0x000000076a01abe8 WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) + 2072 (Document.cpp:1916)
18  com.apple.WebCore                   0x000000076a01c3dd WebCore::Document::updateStyleIfNeeded() + 493 (Document.cpp:2024)
19  com.apple.WebCore                   0x000000076a034f43 WebCore::Document::finishedParsing() + 595 (Document.cpp:5524)
20  com.apple.WebCore                   0x000000076a5c7cb8 WebCore::HTMLConstructionSite::finishedParsing() + 24 (HTMLConstructionSite.cpp:420)

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20181001/ad63b04e/attachment.html>


More information about the webkit-unassigned mailing list