[Webkit-unassigned] [Bug 140441] New: [CSSRegions] Assert failure in RenderBlock::locateFlowThreadContainingBlock when showing the render tree debug info

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jan 14 07:06:13 PST 2015


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

            Bug ID: 140441
           Summary: [CSSRegions] Assert failure in
                    RenderBlock::locateFlowThreadContainingBlock when
                    showing the render tree debug info
    Classification: Unclassified
           Product: WebKit
           Version: 528+ (Nightly build)
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Layout and Rendering
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: mihnea at adobe.com

While debugging the following test file:
<!DOCTYPE html>
<html>
    <head>
        <style>
            #article { -webkit-column-count: 2; }
        </style>
    </head>
    <body>
        <div id="article">
            <div id="target">
                <div id="inside"></div>
            </div>
        </div>
        <script type="text/javascript">
            document.body.offsetTop;
            document.getElementById("target").style.position = "absolute";
        </script>
    </body>
</html>

i noticed that if i placed a breakpoint in RenderBlock::styleDidChange(..) on the line with invalidateFlowThreadContainingBlockIncludingDescendants() and i call showRenderTreeForThis() upon hitting the breakpoint, before the invalidation code is executed, i hit the assert ASSERT(rareData->m_flowThreadContainingBlock.value() == RenderBox::locateFlowThreadContainingBlock()) inside the RenderBlock::locateFlowThreadContainingBlock() for the element that changed its position from static to absolute.

The reason is that showRenderTreeForThis() uses the RenderObject::showRegionsInformation(..) method which in turn calls flowThreadContainingBlock() for the renderer. However, in this situation, we did not yet invalidate the cached flow thread information and since the element changed its position, it is not contained inside the multicol flow thread anymore and the computation of flow thread containing block issues a different value, hence the assert.

I will fix this assert by changing the showRegionsInformation(..) method to always use the cached flow thread information. I will leave the existing assert in RenderBlock::locateFlowThreadContainingBlock(..) in place.

-- 
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/20150114/8d29185a/attachment-0002.html>


More information about the webkit-unassigned mailing list