Closed
Bug 275574
Opened 20 years ago
Closed 20 years ago
[FIX]Crash [@ nsFrame::Destroy] with div:hover {display:-moz-box} with inside an image and some other stuff
Categories
(Core :: Layout, defect, P1)
Tracking
()
VERIFIED
FIXED
mozilla1.8beta1
People
(Reporter: martijn.martijn, Assigned: bzbarsky)
Details
(Keywords: crash, regression, testcase)
Crash Data
Attachments
(2 files)
488 bytes,
text/html
|
Details | |
3.13 KB,
patch
|
bryner
:
review+
jst
:
superreview+
|
Details | Diff | Splinter Review |
The testcase that I'll attach crashes my trunk build, when hovering over the image. Talkback ID's: http://talkback-public.mozilla.org/talkback/fastfind.jsp?search=2&type=iid&id=TB2675680Z http://talkback-public.mozilla.org/talkback/fastfind.jsp?search=2&type=iid&id=TB2675895K
Reporter | ||
Comment 1•20 years ago
|
||
Reporter | ||
Updated•20 years ago
|
Severity: normal → critical
Reporter | ||
Comment 2•20 years ago
|
||
Output from one of the Talkback ID's: nsFrame::Destroy [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsFrame.cpp, line 640] nsTextFrame::Destroy [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsTextFrame.cpp, line 830] nsPropertyTable::SetProperty [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/content/base/src/nsPropertyTable.cpp, line 172] nsContainerFrame::SetOverflowFrames [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsContainerFrame.cpp, line 1178] nsInlineFrame::ReflowFrames [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsInlineFrame.cpp, line 538] nsInlineFrame::Reflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsInlineFrame.cpp, line 452] nsFrame::BoxReflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsFrame.cpp, line 5351] nsFrame::DoLayout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsFrame.cpp, line 5091] nsIFrame::Layout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/xul/base/src/nsBox.cpp, line 805] nsBoxFrame::DoLayout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/xul/base/src/nsBoxFrame.cpp, line 1099] nsLineLayout::ReflowFrame [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsLineLayout.cpp, line 1002] nsBlockFrame::ReflowInlineFrame [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 4119] nsBlockFrame::DoReflowInlineFrames [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 3809] nsBlockFrame::ReflowInlineFrames [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 3698] nsBlockFrame::ReflowLine [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 2723] nsBlockFrame::ReflowDirtyLines [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 2234] nsBlockFrame::Reflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 835] nsBlockReflowContext::ReflowBlock [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockReflowContext.cpp, line 547] nsBlockFrame::ReflowBlockFrame [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 3427] nsBlockFrame::ReflowLine [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 2604] nsBlockFrame::ReflowDirtyLines [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 2234] nsBlockFrame::Reflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsBlockFrame.cpp, line 835] nsContainerFrame::ReflowChild [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsContainerFrame.cpp, line 972] CanvasFrame::Reflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsHTMLFrame.cpp, line 549] nsFrame::BoxReflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsFrame.cpp, line 5351] nsFrame::DoLayout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsFrame.cpp, line 5091] nsIFrame::Layout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/xul/base/src/nsBox.cpp, line 805] nsIFrame::Layout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/xul/base/src/nsBox.cpp, line 805] nsGfxScrollFrameInner::LayoutBox [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsGfxScrollFrame.cpp, line 1666] nsHTMLScrollFrame::DoLayout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsGfxScrollFrame.cpp, line 1083] nsIFrame::Layout [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/xul/base/src/nsBox.cpp, line 805] nsXULScrollFrame::Reflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsGfxScrollFrame.cpp, line 1031] nsContainerFrame::ReflowChild [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsContainerFrame.cpp, line 972] ViewportFrame::Reflow [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/generic/nsViewportFrame.cpp, line 249] IncrementalReflow::Dispatch [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/base/nsPresShell.cpp, line 908] PresShell::ProcessReflowCommands [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/base/nsPresShell.cpp, line 6254] PresShell::FlushPendingNotifications [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/base/nsPresShell.cpp, line 4972] nsEventStateManager::FlushPendingEvents [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/content/events/src/nsEventStateManager.cpp, line 4421] PresShell::HandleEventInternal [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/base/nsPresShell.cpp, line 5914] PresShell::HandleEvent [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/layout/base/nsPresShell.cpp, line 5772] nsViewManager::HandleEvent [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/view/src/nsViewManager.cpp, line 2402] nsViewManager::DispatchEvent [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/view/src/nsViewManager.cpp, line 2127] HandleEvent [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/view/src/nsView.cpp, line 174] nsWindow::DispatchEvent [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp, line 1102] nsWindow::DispatchMouseEvent [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp, line 5387] ChildWindow::DispatchMouseEvent [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp, line 5638] nsWindow::WindowProc [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp, line 1383] USER32.dll + 0x1ef0 (0x77e11ef0) USER32.dll + 0x204c (0x77e1204c) USER32.dll + 0x21af (0x77e121af) nsAppStartup::Run [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/toolkit/components/startup/src/nsAppStartup.cpp, line 156] main [c:/builds/tinderbox/firefox/WINNT_5.0_Clobber/mozilla/browser/app/nsBrowserApp.cpp, line 60] KERNEL32.DLL + 0x2893d (0x7c59893d)
Summary: Crash with div:hover {display:-moz-box} with inside an image and some other stuff → Crash [@ nsFrame::Destroy] with div:hover {display:-moz-box} with inside an image and some other stuff
Comment 3•20 years ago
|
||
(gdb) fr 8 #8 0x41ddedb8 in nsFrame::Destroy(nsPresContext*) (this=0x86bef58, aPresContext=0x0) at nsFrame.cpp:640 640 nsIPresShell *shell = aPresContext->GetPresShell(); (gdb) p aPresContext $2 = (class nsPresContext *) 0x0
OS: Windows 2000 → All
Assignee | ||
Comment 4•20 years ago
|
||
Over to bryner. The problem is that nsPropertyTable::SetProperty is buggy. What I'm not sure about is why this doesn't bite us all the time. To be precise, the aPropDtorData pointer passed to SetProperty is completely ignored. So propertyList->mDtorData is always null, and this is what gets passed as the dtor data argument to propertyList->mDtorFunc. In this particular case, mDtorFunc is DestroyOverflowFrames, which wants a prescontext as the destructor arg, so it can pass it to the frames' Destroy() method. But it gets a null prescontext. What's odd is that I'd expect us to crash the moment we try to destroy an overflow list (eg any time we destroy a frame that has overflow). I'm not sure why that's not happening... In any case, we need to store the destructor arg somewhere. Given that it can apparently be different on a per-object basis, I'm not sure storing it on the PropertyList like we try to now will work.
Assignee: nobody → bryner
Keywords: regression
Assignee | ||
Comment 5•20 years ago
|
||
It really worries me that this is not crashing, btw... It suggests that we just forget to clear out the overflow from the property table a lot of the time or something.
Assignee | ||
Comment 6•20 years ago
|
||
OK, so it looks like we pull overflow frames out to the next-in-flow with UnsetProperty, which doesn't have to call the destructor... So not crashing all over is fine. It also looks like each prescontext has its own property table, so it should be ok to continue storing the destructor arg in the list. Just have to bail out if we don't match args with what's already stored.
Assignee | ||
Comment 7•20 years ago
|
||
Attachment #171111 -
Flags: superreview?(jst)
Attachment #171111 -
Flags: review?(bryner)
Assignee | ||
Updated•20 years ago
|
Assignee: bryner → bzbarsky
Priority: -- → P1
Summary: Crash [@ nsFrame::Destroy] with div:hover {display:-moz-box} with inside an image and some other stuff → [FIX]Crash [@ nsFrame::Destroy] with div:hover {display:-moz-box} with inside an image and some other stuff
Target Milestone: --- → mozilla1.8beta
Updated•20 years ago
|
Attachment #171111 -
Flags: review?(bryner) → review+
Comment 8•20 years ago
|
||
Comment on attachment 171111 [details] [diff] [review] Maybe like so? sr=jst
Attachment #171111 -
Flags: superreview?(jst) → superreview+
Assignee | ||
Comment 9•20 years ago
|
||
Fixed.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Verified FIXED with the testcase at https://bugzilla.mozilla.org/attachment.cgi?id=169305 using build Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b) Gecko/20050123 on Windows XP (Seamonkey nightly trunk).
Status: RESOLVED → VERIFIED
Updated•13 years ago
|
Crash Signature: [@ nsFrame::Destroy]
You need to log in
before you can comment on or make changes to this bug.
Description
•