Closed Bug 1517297 Opened 5 years ago Closed 5 years ago

Assertion failure: mOwner == ExpectedOwnerForChild(aFrame) (Missed some frame in the hierarchy?), at /builds/worker/workspace/build/src/layout/base/RestyleManager.cpp:2017

Categories

(Core :: Layout: Columns, defect, P3)

defect

Tracking

()

RESOLVED FIXED
mozilla66
Tracking Status
firefox-esr60 --- unaffected
firefox64 --- unaffected
firefox65 --- unaffected
firefox66 --- fixed

People

(Reporter: jkratzer, Assigned: TYLin)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(2 files)

Attached file testcase.html
Testcase found while fuzzing mozilla-central rev 5826b2352ac0.

Assertion failure: mOwner == ExpectedOwnerForChild(aFrame) (Missed some frame in the hierarchy?), at /builds/worker/workspace/build/src/layout/base/RestyleManager.cpp:2017

We currently don't have symbolized debug builds so no stack trace is available at this time.
Flags: in-testsuite?
Has column-span -> Over to layout: columns.
Component: CSS Parsing and Computation → Layout: Columns
Flags: needinfo?(aethanyc)
Tentatively P3, since we haven't shipped column-span yet.
Priority: -- → P3
A column-span element in multicol subtree should not go into this path because we have a specialized logic for it in RestyleManager::ProcessPostTraversal() [1].

When the assertion happens,

(rr) p aFrame
$1 = (const nsGridContainerFrame *) 0x7f383c9e9240
(rr) p aFrame->IsColumnSpan()
$2 = true
(rr) p aFrame->IsColumnSpanInMulticolSubtree()
$3 = false

That's because after bug 1507244 is landed, only block and inline frames can have NS_FRAME_HAS_MULTI_COLUMN_ANCESTOR. We need a new notion for IsColumnSpanInMulticolSubtree().

[1] https://searchfox.org/mozilla-central/source/layout/base/RestyleManager.cpp#2590-2591,2621-2624
Assignee: nobody → aethanyc
Blocks: 1507244
Status: NEW → ASSIGNED
Flags: needinfo?(aethanyc)
After Bug 1507244 Part 2, only block and inline frames can have
NS_FRAME_HAS_MULTI_COLUMN_ANCESTOR bit set. We need another notion for
IsColumnSpanInMulticolSubtree().

Under multi-column formatting context, every frame having a
column-span:all style will be wrapped by a -moz-column-span-wrapper
frame. We can use this to check whether other types of frames such as
nsGridContainerFrame having column-span:all style are really in a
multi-column subtree.
Pushed by aethanyc@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/763f3f9bc7c3
Fix nsIFrame::IsColumnSpanInMulticolSubtree(). r=emilio
https://hg.mozilla.org/mozilla-central/rev/763f3f9bc7c3
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla66
Flags: in-testsuite? → in-testsuite+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: