Closed Bug 359132 Opened 19 years ago Closed 18 years ago

ASSERTION: Some frame destructors were not called when closing Print Preview

Categories

(Core :: Layout, defect)

x86
Linux
defect
Not set
major

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: ispiked, Unassigned)

References

Details

(Keywords: assertion, helpwanted)

Attachments

(3 files, 2 obsolete files)

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20061030 Minefield/3.0a1 Steps to reproduce: 1. Load the testcase. 2. File > Print Preview 3. Close Print Preview. Results: The following assertion appears in the console: ###!!! ASSERTION: Some frame destructors were not called: 'mFrameCount == 0', file /moz/trunk/mozilla/layout/base/nsPresShell.cpp, line 625 This is an unminimized testcase. It's sort of hard to minimize since it involves print previewing each time. You're welcome to try and reduce it further.
Attached file unminimized testcase
Blocks: framedest
Group: security
Really need a minimal-ish testcase here if humanly possible. Debugging this assertion is a PITA, since it fires _long_ after the problem really happened... So the only way to debug is to step through frame construction line by line. That's hundreds of lines of code per DOM node.
Keywords: helpwanted
We can use Lithium to reduce the testcase if we can add some JavaScript to it that triggers Print Preview. Who would know how to do that?
I will try whether the trick from https://bugzilla.mozilla.org/attachment.cgi?id=236723 works for this.
So the relevant assert is probably: ###!!! ASSERTION: bad geometric parent: 'IsChild(aNextInFlow)', file ../../../mozilla/layout/generic/nsBlockFrame.cpp, line 6090 with the stack: #0 0xb638742e in nsBlockFrame::DeleteNextInFlowChild (this=0x8b15280, aPresContext=0x8a95a58, aNextInFlow=0x8b29f1c) at ../../../mozilla/layout/generic/nsBlockFrame.cpp:6090 #1 0xb63877ce in nsBlockFrame::ReflowFloat (this=0x8b15280, aState=@0xbfff57dc, aPlaceholder=0x8b17750, aFloatCache=0x8b28548, aReflowStatus=@0xbfff50dc) at ../../../mozilla/layout/generic/nsBlockFrame.cpp:6211 #2 0xb6390539 in nsBlockReflowState::FlowAndPlaceFloat (this=0xbfff57dc, aFloatCache=0x8b28548, aIsLeftFloat=0xbfff4e48, aReflowStatus=@0xbfff50dc, aForceFit=0) at ../../../mozilla/layout/generic/nsBlockReflowState.cpp:855 #3 0xb638ff9a in nsBlockReflowState::AddFloat (this=0xbfff57dc, aLineLayout=@0xbfff51dc, aPlaceholder=0x8b17750, aInitialReflow=0, aReflowStatus=@0xbfff50dc) at ../../../mozilla/layout/generic/nsBlockReflowState.cpp:630 #4 0xb63e7bac in nsLineLayout::AddFloat (this=0xbfff51dc, aFrame=0x8b17750, aReflowStatus=@0xbfff50dc) at ../../../mozilla/layout/generic/nsLineLayout.h:257 #5 0xb63e416d in nsLineLayout::ReflowFrame (this=0xbfff51dc, aFrame=0x8b17750, aReflowStatus=@0xbfff50dc, aMetrics=0x0, aPushedFrame=@0xbfff50d8) at ../../../mozilla/layout/generic/nsLineLayout.cpp:1004 Here the aNextInFlow is a placeholder, whose parent is the block that's |this| in frame 1. Said |this| has no next in flow. Interestingly, I can only reproduce this in a thebes build... Probably still need a minimalish testcase to debug usefully.
I don't see any asserts on Linux with the smaller testcase. :(
Comment on attachment 244434 [details] smaller, but not minimised testcase (In reply to comment #8) > I don't see any asserts on Linux with the smaller testcase. :( Yeah, I don't see it either with the smaller testcase. I guess I optimised it wrongly, so I should try again.
Attachment #244434 - Attachment is obsolete: true
Attached file Unminimised testcase3
I'm attaching these unminimised testcases to prevent my first testcase disaster.
Attached file minimised testcase (obsolete) —
Ok, I finally managed to get a minimised testcase, that still asserts when closing print preview.
With a slightly more minimised testcase, I get a different assertion when opening print preview, I filed bug 362084 for that.
So... I can't seem to reproduce the asserts on linux with thebes builds now... either on the original testcase or the "minimised testcase".
Comment on attachment 246782 [details] minimised testcase Oh, now I can't reproduce it with the minimised testcase. (but I still can with Unminimised testcase3)
Attachment #246782 - Attachment is obsolete: true
Martijn, do you still see this? (I can't test on Mac because print preview goes through the normal print path on Mac.)
No, I don't see this assertion anymore with a freshly build debug build. Marking worksforme.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → WORKSFORME
Group: core-security → core-security-release
Group: core-security-release
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: