Closed
Bug 621551
Opened 15 years ago
Closed 7 years ago
Firefox 4.0b8 crash in [@ nsIFrame::GetOffsetToCrossDoc(nsIFrame const*, int) ]
Categories
(Core :: Layout, defect)
Tracking
()
RESOLVED
WONTFIX
People
(Reporter: marcia, Assigned: tnikkel)
References
Details
(Keywords: crash)
Crash Data
Attachments
(2 files)
Seen while reviewing B8 crash stats. Currently #52 on the list. http://tinyurl.com/265ha78 to the crashes which are all Windows. pogo.com football is mentioned twice in the comments.
Sample from the stack:
Frame Module Signature [Expand] Source
0 xul.dll nsIFrame::GetOffsetToCrossDoc layout/generic/nsFrame.cpp:3789
1 xul.dll nsIFrame::GetOffsetToCrossDoc layout/generic/nsFrame.cpp:3817
2 xul.dll nsIFrame::GetOffsetToCrossDoc layout/generic/nsFrame.cpp:3817
3 xul.dll nsIFrame::GetOffsetToCrossDoc layout/generic/nsFrame.cpp:3817
4 xul.dll nsIFrame::GetOffsetToCrossDoc layout/generic/nsFrame.cpp:3817
5 xul.dll nsIFrame::GetOffsetToCrossDoc layout/generic/nsFrame.cpp:381
| Assignee | ||
Comment 1•15 years ago
|
||
There are two distinct types of these crashes: stack overflow crashes, and others.
| Assignee | ||
Comment 2•15 years ago
|
||
I suspect the stack overflow crashes are where the two frames between which the offset is being computed are not in the same document tree. Based on same crash comments indicating hitting the back button this could be caused around document transition. A path forward would be to detect this situation and crash sooner so that we get a complete stack and see who is calling GetOffsetToCrossDoc after the document has been disconnected.
| Assignee | ||
Comment 3•15 years ago
|
||
Is there a better way to do this?
Assignee: nobody → tnikkel
Attachment #536236 -
Flags: review?(dbaron)
| Assignee | ||
Comment 4•15 years ago
|
||
Comment on attachment 536236 [details] [diff] [review]
crash sooner so we get useful stacks
dbaron is away and may not have time for reviews.
Attachment #536236 -
Flags: review?(dbaron) → review?(roc)
| Assignee | ||
Comment 5•15 years ago
|
||
To be clear this is a patch that I'd like to land to get some crash stacks and then back out at some point.
Comment on attachment 536236 [details] [diff] [review]
crash sooner so we get useful stacks
Review of attachment 536236 [details] [diff] [review]:
-----------------------------------------------------------------
Attachment #536236 -
Flags: review?(roc) → review+
| Assignee | ||
Comment 7•15 years ago
|
||
Landed that patch on cedar
http://hg.mozilla.org/projects/cedar/rev/c52ed5e53db9
Whiteboard: [landed on cedar][leave open after merging to mozilla-central]
Comment 8•15 years ago
|
||
Whiteboard: [landed on cedar][leave open after merging to mozilla-central] → [landed on cedar]
Updated•15 years ago
|
Whiteboard: [landed on cedar]
Updated•15 years ago
|
Attachment #536236 -
Flags: checked-in+
Comment 9•15 years ago
|
||
Isn't this what we have NS_RUNTIMEABORT for?
| Assignee | ||
Comment 10•15 years ago
|
||
Are we able to find crash stacks based on the location where NS_RUNTIMEABORT is called and not NS_RUNTIMEABORT or something it calls? I.e. I want to be able to find these crashes in crash stats.
Updated•15 years ago
|
Attachment #536236 -
Flags: checked-in+ → checkin+
Updated•15 years ago
|
Crash Signature: [@ nsIFrame::GetOffsetToCrossDoc(nsIFrame const*, int) ]
| Assignee | ||
Comment 11•15 years ago
|
||
| Assignee | ||
Comment 12•15 years ago
|
||
Some more:
https://crash-stats.mozilla.com/report/index/b2596a9b-429e-478f-b692-18a7c2110619
https://crash-stats.mozilla.com/report/index/2b1ecd4c-a10c-4d40-a2fc-994aa2110619
https://crash-stats.mozilla.com/report/index/d41c29c1-673f-423a-8a01-2572d2110619
https://crash-stats.mozilla.com/report/index/bb3b8167-4170-44d9-be97-64e342110619
https://crash-stats.mozilla.com/report/index/c8de75ad-9215-4990-a562-905be2110620
https://crash-stats.mozilla.com/report/index/195fcd03-f7b2-4fc7-975e-822b42110620
https://crash-stats.mozilla.com/report/index/5597b1be-7ddb-4afd-a9f0-e6df92110621
| Assignee | ||
Comment 13•15 years ago
|
||
I see a lot of stacks when updating plugin geometry. The question is, how does a frame that isn't in the same document tree as the root prescontext get to be a plugin geometry update frame?
We could just check thats its in the same document tree as the root prescontext before proceeding, but it would be nice to know how that happens.
Comment 14•15 years ago
|
||
I'm crashing all the time with this stack, while trying to print on the Mac. On Windows, it seems a little bit harder to trigger. Let me know if you want a testcase, and I'll see if I can come up with one.
Comment 15•15 years ago
|
||
Never mind, here is a zipped up testcase, that automatically prints and toggles the iframes display a lot of times. It uses enhanced privileges.
Unzip it, open the file named 'parentframe.htm', allow the enhanced privileges. Then, it should normally crash within 10 seconds or so.
It does for me here, on windows trunk.
Comment 16•15 years ago
|
||
This might be fallout from the print cloning thing, bug 487667.
Comment 17•15 years ago
|
||
(In reply to comment #14)
> I'm crashing all the time with this stack, while trying to print on the Mac.
In general, when printing anything?
Comment 18•15 years ago
|
||
(In reply to comment #17)
> (In reply to comment #14)
> > I'm crashing all the time with this stack, while trying to print on the Mac.
> In general, when printing anything?
No, while 'testing'. See zipped up testcase, which is a result from this 'testing'.
Comment 19•15 years ago
|
||
I can reproduce the crash on linux if I change the print target
to /tmp/print.pdf
Unfortunately the stack is totally corrupted.
| Assignee | ||
Comment 20•15 years ago
|
||
Thanks for the testcase, very valuable.
| Assignee | ||
Comment 21•15 years ago
|
||
The testcase actually crashes in one of the documents that are being printed. At first I thought it was in a non-printing document because the prescontext type was not a printing type. But it is a document created for printing and the type not being set might be part of the problem. This makes the testcase less interesting because from the comments on crash-stats users aren't crashing when printing, and I don't think the issue in the testcase is likely to be related to the majority of our crashes.
Comment 22•15 years ago
|
||
I might have seen this crash in non-printing ways, not sure. I'm afraid I don't have time to investigate, though.
Updated•10 years ago
|
Crash Signature: [@ nsIFrame::GetOffsetToCrossDoc(nsIFrame const*, int) ] → [@ nsIFrame::GetOffsetToCrossDoc(nsIFrame const*, int) ]
[@ nsIFrame::GetOffsetToCrossDoc ]
Comment 23•9 years ago
|
||
We still have a few of these crashes coming in. The signature have changed though.
bp-5dc17938-8b19-497a-af31-29e512170413
Crash Signature: [@ nsIFrame::GetOffsetToCrossDoc(nsIFrame const*, int) ]
[@ nsIFrame::GetOffsetToCrossDoc ] → [@ Abort | trying to get the offset between frames in different document hierarchies? | mozalloc_abort | NS_DebugBreak | nsIFrame::GetOffsetToCrossDoc ]
| Assignee | ||
Comment 24•9 years ago
|
||
(In reply to Mats Palmgren (:mats) from comment #23)
> We still have a few of these crashes coming in. The signature have changed
> though.
> bp-5dc17938-8b19-497a-af31-29e512170413
The GetOffsetTo call is coming from
https://hg.mozilla.org/releases/mozilla-release/annotate/e81854d6ce91/layout/base/nsDisplayList.cpp#l1196
which gets the offset between aFrame and a frame reached from aFrame purely by calling GetCrossDocParentFrame. So the two frames should definitely be in same document hierarchy. Something must be very messed up.
Comment 25•7 years ago
|
||
Closing because no crash reported since 12 weeks.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WONTFIX
You need to log in
before you can comment on or make changes to this bug.
Description
•