Print-previewing a flex item with page-break-before triggers: "Assertion failure: aFrame1 && aFrame2 (why do we have an anonymous box without any non-anonymous descendants?), at layout/generic/nsFlexContainerFrame.cpp:974

ASSIGNED
Assigned to

Status

()

Core
Layout
ASSIGNED
2 years ago
2 years ago

People

(Reporter: dholbert, Assigned: dholbert)

Tracking

({assertion})

Trunk
assertion
Points:
---

Firefox Tracking Flags

(firefox47 affected)

Details

Attachments

(1 attachment)

Created attachment 8717709 [details]
testcase 1

STR:
 1. Load the attached testcase in a debug build.
 2. File | Print-preview.

ACTUAL RESULTS:
 - In a debug build: "Assertion failure: aFrame1 && aFrame2 (why do we have an anonymous box without any non-anonymous descendants?), at layout/generic/nsFlexContainerFrame.cpp:974"

This happens *while we're evaluating the NS_ASSERTION condition* in nsFlexContainerFrame::BuildDisplayList (checking "IsFrameListSorted"), because we're not expecting these anonymous frames to be mixed in among our flex items.

Opt builds don't evaluate the NS_ASSERTION in, of course, so they don't hit this.  (But even if they did trigger this codepath via some other way, they'd just crash with a null deref, so nothing too scary should happen.)

Anyway. We should fix this by preventing pagebreak frames in flex containers, like we're doing for grid containers in bug 1144096 part 7.


We could either layer this bug's fix on top of bug 1144096 (as suggested in bug 1144096 comment 26), or we could fix this up-front and having mats rebase bug 1144096 part 7 on top of it.  (If bug 1144096 has more coming, then maybe it'd be good to get this fixed first, though, for robustness against crashes/assertion failures. But if bug 1144096 is landing soon, I'll try to avoid creating rebasing work here.)
Summary: Print-preview a flex item with "page-break-before" triggers "Assertion failure: aFrame1 && aFrame2 (why do we have an anonymous box without any non-anonymous descendants?), at layout/generic/nsFlexContainerFrame.cpp:974 → Print-previewing a flex item with page-break-before triggers: "Assertion failure: aFrame1 && aFrame2 (why do we have an anonymous box without any non-anonymous descendants?), at layout/generic/nsFlexContainerFrame.cpp:974
You need to log in before you can comment on or make changes to this bug.