Closed Bug 371681 Opened 13 years ago Closed 13 years ago

"ASSERTION: not in child list" with float, <xul:hbox>

Categories

(Core :: Layout: Floats, defect)

defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: jruderman, Assigned: mats)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(6 files, 1 obsolete file)

Loading this testcase triggers:

###!!! ASSERTION: not in child list: 'nsFrameList(aChildFrame->GetParent()->GetFirstChild(listName)) .ContainsFrame(aChildFrame)', file /Users/jruderman/trunk/mozilla/layout/base/nsCSSFrameConstructor.cpp, line 1752
Attachment #256419 - Attachment description: testcase → testcase that triggers the assertion
This is the same testcase, without the script.  It's mysteriously blank.  Shouldn't there be an 'X' and a 'Y' floating around?
Attached file stack + frame dump
The frame is on the overflow list.
I think we should update the assertion because the code that does
the actual removal can cope with this, well at least RemoveFloat:
http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/layout/generic/nsBlockFrame.cpp&rev=3.818&root=/cvsroot&mark=4774-4780#4749
and normal flow:
http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/layout/generic/nsBlockFrame.cpp&rev=3.818&root=/cvsroot&mark=4923,4977,4996#4923
but for some reason not positioned frames:
http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/layout/generic/nsBlockFrame.cpp&rev=3.818&root=/cvsroot&mark=4907-4911#4893
Maybe we should have a "Try our overflow list" block here like RemoveFloat?
Attached patch Patch rev. 1 (obsolete) — Splinter Review
Fixes the assertion.
eech. Can you break that up using #ifdef NS_DEBUG and a variable declaration or two?

In theory abs-pos frames (currently) get put on the first-in-flow's abs-pos children list and then don't move out of it even if the placeholder moves around. So that should be OK.
The reason for the blank page - the first float have a NS_UNCONSTRAINEDSIZE
(or near) height and ascent. The marked numbers indicates we do calculations
with NS_UNCONSTRAINEDSIZE :(
Attached patch fwiw...Splinter Review
FWIW, this seems to fix the blank testcase. (I'm NOT pretending this is
a correct fix though - just thought it might help...)
OS: Mac OS X → All
Hardware: PC → All
Attached patch Patch rev. 2Splinter Review
Now only checks overflowOutOfFlowList for floats.
Attachment #256431 - Attachment is obsolete: true
Attachment #256447 - Flags: superreview?(roc)
Attachment #256447 - Flags: review?(roc)
Attachment #256447 - Flags: superreview?(roc)
Attachment #256447 - Flags: superreview+
Attachment #256447 - Flags: review?(roc)
Attachment #256447 - Flags: review+
> The marked numbers indicates we do calculations with NS_UNCONSTRAINEDSIZE :(

Do you have the fix for bug 371348 in your tree?
Nope, I didn't. I do now and it fixes both testcases. Excellent.
Assignee: nobody → mats.palmgren
Comment on attachment 256447 [details] [diff] [review]
Patch rev. 2

Checked in on trunk at 2007-02-28 04:27 PST.

-> FIXED
Status: NEW → RESOLVED
Closed: 13 years ago
Depends on: 371348
Resolution: --- → FIXED
Flags: in-testsuite?
I checked in the first testcase as a crashtest and the second testcase ("mysteriously blank testcase") as a not-blank reftest.
Flags: in-testsuite? → in-testsuite+
You need to log in before you can comment on or make changes to this bug.