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)
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.
| Reporter | ||
Comment 1•19 years ago
|
||
Comment 2•19 years ago
|
||
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
Comment 3•19 years ago
|
||
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.
Comment 5•19 years ago
|
||
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.
Comment 6•19 years ago
|
||
My first stop would be:
<http://developer.mozilla.org/en/docs/Mozilla_Embedding_FAQ:How_do_I...#How_do_I_print_preview_a_page.3F>
followed quickly by
<http://lxr.mozilla.org/mozilla/source/embedding/browser/webBrowser/nsIWebBrowserPrint.idl> which _is_ scriptable.
Comment 7•19 years ago
|
||
Comment 8•19 years ago
|
||
I don't see any asserts on Linux with the smaller testcase. :(
Comment 9•19 years ago
|
||
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
Comment 10•19 years ago
|
||
Comment 11•19 years ago
|
||
I'm attaching these unminimised testcases to prevent my first testcase disaster.
Comment 12•19 years ago
|
||
Ok, I finally managed to get a minimised testcase, that still asserts when closing print preview.
Comment 13•19 years ago
|
||
With a slightly more minimised testcase, I get a different assertion when opening print preview, I filed bug 362084 for that.
Comment 14•19 years ago
|
||
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 15•19 years ago
|
||
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
Comment 16•18 years ago
|
||
Martijn, do you still see this? (I can't test on Mac because print preview goes through the normal print path on Mac.)
Comment 17•18 years ago
|
||
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
Updated•10 years ago
|
Group: core-security → core-security-release
Updated•10 years ago
|
Group: core-security-release
You need to log in
before you can comment on or make changes to this bug.
Description
•