Closed Bug 604734 Opened 14 years ago Closed 14 years ago

Crash in [@ nsPresContext::IsRootContentDocument ]


(Core :: Layout, defect)

Not set



Tracking Status
blocking2.0 --- beta7+


(Reporter: marcia, Assigned: MatsPalmgren_bugz)




(5 keywords)

Crash Data


(1 file, 2 obsolete files)

Seen while running Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b8pre) Gecko/20101015 Firefox/4.0b8pre. links to the other crashes, which are all Mac.

1. Load (site requires a login)
2. Click on/off the Intelligence Beta link. Eventually you will crash. Sometimes you crash the first time.

Module 	Signature [Expand] 	Source
0 	XUL 	nsPresContext::IsRootContentDocument 	layout/base/nsPresContext.cpp:2371
1 	XUL 	nsGfxScrollFrameInner::IsScrollingActive 	layout/generic/nsGfxScrollFrame.cpp:1570
2 	XUL 	nsHTMLScrollFrame::InvalidateInternal 	layout/generic/nsGfxScrollFrame.cpp:202
3 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
4 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
5 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
6 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
7 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
8 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
9 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
10 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
11 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
12 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
13 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
14 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
15 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
16 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
17 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
18 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
19 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
20 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
21 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
22 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
23 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
24 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
25 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
26 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
27 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
28 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
29 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
30 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
31 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
32 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
33 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
34 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
35 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
36 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
37 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
38 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
39 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
40 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
41 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
42 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
43 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
44 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
45 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
46 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
47 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
48 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
49 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
50 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
51 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
52 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
53 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
54 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
55 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
56 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
57 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
58 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
59 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
60 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
61 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
62 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
63 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
64 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
65 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
66 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
67 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
68 	XUL 	nsHTMLScrollFrame::InvalidateInternal 	layout/generic/nsGfxScrollFrame.cpp:209
69 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
70 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
71 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
72 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
73 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
74 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
75 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
76 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
77 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
78 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
79 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
80 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
81 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
82 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
83 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
84 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
85 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
86 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
87 	XUL 	nsBlockFrame::InvalidateInternal 	layout/generic/nsBlockFrame.cpp:543
88 	XUL 	nsIFrame::InvalidateInternalAfterResize 	layout/generic/nsFrame.cpp:4116
89 	XUL 	nsIFrame::InvalidateInternal 	layout/generic/nsFrame.cpp:4137
90 	XUL 	nsPluginInstanceOwner::InvalidateRect 	layout/generic/nsIFrame.h:1969
91 	XUL 	nsNPAPIPluginInstance::InvalidateRect 	modules/plugin/base/src/nsNPAPIPluginInstance.cpp:1142
92 	XUL 	mozilla::plugins::parent::_invalidaterect 	modules/plugin/base/src/nsNPAPIPlugin.cpp:1249
93 	XUL 	mozilla::plugins::PluginInstanceParent::RecvNPN_InvalidateRect 	dom/plugins/PluginInstanceParent.cpp:470
94 	XUL 	mozilla::plugins::PPluginInstanceParent::OnMessageReceived 	PPluginInstanceParent.cpp:846
95 	XUL 	mozilla::plugins::PPluginModuleParent::OnMessageReceived 	PPluginModuleParent.cpp:357
96 	XUL 	mozilla::ipc::AsyncChannel::OnDispatchMessage 	ipc/glue/AsyncChannel.cpp:262
97 	XUL 	mozilla::ipc::RPCChannel::Call 	ipc/glue/RPCChannel.cpp:244
98 	XUL 	mozilla::plugins::PPluginInstanceParent::CallNPP_SetWindow 	PPluginInstanceParent.cpp:206
99 	XUL 	mozilla::plugins::PluginInstanceParent::NPP_SetWindow 	dom/plugins/PluginInstanceParent.cpp:652
100 	XUL 	mozilla::plugins::PluginModuleParent::NPP_SetWindow 	dom/plugins/PluginModuleParent.cpp:439
101 	XUL 	nsNPAPIPluginInstance::SetWindow 	modules/plugin/base/src/nsNPAPIPluginInstance.cpp:469
102 	XUL 	nsPluginInstanceOwner::FixUpPluginWindow 	layout/generic/nsObjectFrame.cpp:6366
103 	XUL 	nsObjectFrame::StopPluginInternal 	layout/generic/nsObjectFrame.cpp:1360
104 	XUL 	nsObjectFrame::DestroyFrom 	layout/generic/nsObjectFrame.cpp:675
105 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
106 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
107 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
108 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
109 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
110 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
111 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
112 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
113 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
114 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
115 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
116 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
117 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
118 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
119 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
120 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
121 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
122 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
123 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
124 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
125 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
126 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
127 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
128 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
129 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
130 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
131 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
132 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
133 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
134 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:312
135 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
136 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
137 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
138 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
139 	XUL 	nsLineBox::DeleteLineList 	layout/generic/nsLineBox.cpp:342
140 	XUL 	nsBlockFrame::DestroyFrom 	layout/generic/nsBlockFrame.cpp:316
141 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
142 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
143 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
144 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
145 	XUL 	nsFrameList::DestroyFramesFrom 	layout/generic/nsFrameList.cpp:98
146 	XUL 	nsContainerFrame::DestroyFrom 	layout/generic/nsContainerFrame.cpp:272
147 	XUL 	nsFrameManager::Destroy 	layout/generic/nsIFrame.h:538
148 	XUL 	PresShell::Destroy 	layout/base/nsPresShell.cpp:2025
149 	XUL 	DocumentViewerImpl::DestroyPresShell 	layout/base/nsDocumentViewer.cpp:4300
150 	XUL 	DocumentViewerImpl::Destroy 	layout/base/nsDocumentViewer.cpp:1619
151 	XUL 	DocumentViewerImpl::Show 	layout/base/nsDocumentViewer.cpp:1935
152 	XUL 	nsPresContext::EnsureVisible 	layout/base/nsPresContext.cpp:1665
153 	XUL 	nsPluginInstanceOwner::Init 	layout/generic/nsObjectFrame.cpp:6040
154 	XUL 	nsObjectFrame::PrepareInstanceOwner 	layout/generic/nsObjectFrame.cpp:2241
155 	XUL 	nsObjectFrame::Instantiate 	layout/generic/nsObjectFrame.cpp:2299
156 	XUL 	nsObjectLoadingContent::Instantiate 	content/base/src/nsObjectLoadingContent.cpp:1895
157 	XUL 	nsAsyncInstantiateEvent::Run 	content/base/src/nsObjectLoadingContent.cpp:166
158 	XUL 	nsThread::ProcessNextEvent 	xpcom/threads/nsThread.cpp:547
159 	XUL 	NS_ProcessPendingEvents_P 	nsThreadUtils.cpp:200
160 	XUL 	nsBaseAppShell::NativeEventCallback 	widget/src/xpwidgets/nsBaseAppShell.cpp:131
161 	XUL 	nsAppShell::ProcessGeckoEvents 	widget/src/cocoa/
162 	CoreFoundation 	CoreFoundation@0x4de90
I also reproduced this with a completely clean profile.
Looking at the stack I would guess this is a regression from bug 587534.

The FixUpPluginWindow in the stack above is from DidSetWidgetGeometry

We could do an early return in nsPresContext::IsRootContentDocument
if the pres shell IsDestroying, but I think it would be safer to not
enter into frame related code at all.

I think it should work if we just skip the block added in bug 587534
if 'aDelayedStop' is true (ie. when we're destroying the frame).
blocking2.0: --- → ?
Attached patch Like so? (wdiff) (obsolete) — Splinter Review
Would this work w/o regressing bug 587534?
I also crashed in this stack trying to repro another bug that involved plugins:
I think the bug only occurs on OSX since DidSetWidgetGeometry is empty
on other platforms:
Keywords: pp
I also see the OS X crash report dialog for the plugin process when I crash here. triggers this in today's nightly with IPC enabled.
If the plugin isn't hidden and we unregister for geometry updates here, what hides the plugin in the aDelayedStop case?
Here is another easy way to reproduce this bug:

1. Load
2. Click on the Videos link

I crash 100% following these steps using Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b8pre) Gecko/20101018 Firefox/4.0b8pre
Let's get this in please. It's crashing my nightly very frequently.
> I think the bug only occurs on OSX since DidSetWidgetGeometry is empty
> on other platforms:

the distribution of OSes of trunk users might also affect this but it also looks like this is only 10.6

os breakdown
nsPresContext::IsRootContentDocumentTotal 80
Win5.1  0.00
Win6.0  0.00
Win6.1  0.00
Mac10.4 0.00
Mac10.5 0.00
Mac10.6 1.00
Lin2.4  0.00

  80 Mac OS X 10.6 nsPresContext::IsRootContentDocument

74      0.925   Mac OS X10.6.4 10F569
3       0.0375  Mac OS X10.6.5 10H548
3       0.0375  Mac OS X10.6.5 10H542

Its also see on a wide variety of high profile sites
(In reply to comment #8)
> If the plugin isn't hidden and we unregister for geometry updates here, what
> hides the plugin in the aDelayedStop case?

There's a call to mWidget->Show(PR_FALSE) in PrepareToStop with aDelayedStop true --- for non-Mac.

What I don't understand is that StopPluginInternal calls DoStopPlugin which calls SetWindow on the plugin. Why doesn't that trigger a crash exactly like the one reported here? Mats, can you figure out why?
(In reply to comment #12)
> What I don't understand is that StopPluginInternal calls DoStopPlugin which
> calls SetWindow on the plugin. Why doesn't that trigger a crash exactly like
> the one reported here?

SetWindow(nsnull) appears to be a NOP:

> Mats, can you figure out why?

Sorry, I'm on OSX 10.5.8 and can't trigger any of the reported crashes :(
So basically the problem is that on Mac, there are a few cases (Quickdraw plugins, Quicktime doing weird things in our window on its own) where we need to tell the plugin that it's hidden. But it's not safe to do so under nsObjectFrame::DestroyFrom. OK, so how about we hide it off an event? We already are calling into DoDelayedStop, which either stops the plugin immediately (for some plugins), which means they're OK, or else we dispatch a nsStopPluginRunnable. So how about we have nsStopPluginRunnable::Run do the FixUpPluginWindow as its first action, instead of calling DidSetWidgetGeometry from StopPluginInternal?
At the end of StopPluginInternal there is "owner->SetOwner(nsnull)":
which will set 'mObjectFrame' to NULL:
which makes FixUpPluginWindow take the early return:

Note: I haven't debugged this, I'm just guessing (which goes for the
attached patch too!)
blocking final+
blocking2.0: ? → final+
I think we can try comment #14 without going through the frame, we just need the plugin instance so we can call SetWindow on it.
Given that this is >100 crashes per day on *Mac* nightlies, it should block beta8.
blocking2.0: final+ → beta8+
That patch is broken. Mats, please try comment #17.
Assignee: nobody → matspal
Keywords: checkin-needed
the patch for bug 587534 landed on mozilla central 2010-08-19 21:15:01

are there other intervening patches that caused the spike in crashes around oct 15?

date     tl crashes at, count build, count build, ...
20101015 56 4.0b8pre2010101503 56 , 
20101016 80  40 4.0b8pre2010101603, 
	        40 4.0b8pre2010101503, 
20101017 121  60 4.0b8pre2010101703, 
	        54 4.0b8pre2010101603, 7 4.0b8pre2010101503, 
20101018 130  60 4.0b8pre2010101803, 
	        56 4.0b8pre2010101703, 8 4.0b8pre2010101603, 
	        6 4.0b8pre2010101503, 
20101019 127  57 4.0b8pre2010101803, 
	        50 4.0b8pre2010101903, 18 4.0b8pre2010101703, 
	        1 4.0b8pre2010101603, 1 4.0b8pre2010101503, 
20101020 120  61 4.0b8pre2010101903, 
	        23 4.0b8pre2010102003, 16 4.0b8pre2010102010, 
	        13 4.0b8pre2010101803, 6 4.0b8pre2010101703, 
	        1 4.0b8pre2010101603, 
20101021 120  46 4.0b8pre2010102103, 
	        32 4.0b8pre2010102010, 18 4.0b8pre2010102003, 
	        15 4.0b8pre2010101903, 4 4.0b8pre2010101803, 
	        4 4.0b8pre2010101703, 1 4.0b8pre2010101503, 

all the crashes reported appear to to be b8pre, but we should verify that none of the fixes or backouts to reduce the volume on this need to make it on to the b7pre branch.
Build identifier: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b8pre) Gecko/20101025 Firefox/4.0b8pre

+1 on hitting the crash:
Number #3 Topcrash from the last 3 days for Beta8pre
Keywords: topcrash
Moving this up to beta7 - git'er done.
blocking2.0: beta8+ → beta7+
I can reproduce this bug at will with my saved session -- it's killing my dogfooding. I'm loath to turn off flash. Any tips on how to work around? FWIW, I'm running the mac64 flash plugin from

OS: Mac OS X → Windows 7
I don't see any workaround short of disabling Flash.
Attached patch wip2 (obsolete) — Splinter Review
nsStopPluginRunnable::Run() has code reschedule the event in case
there are nested event loops.  I'd prefer to run the SetWindow call
after that, so we might as well do it in DoStopPlugin.

There should be TryServer builds available for testing in a few hours:

Does it fix the crash? without regressing bug 587534?
It shouldn't regress bug 587534 on Windows and Linux (the DidSetWindow call is a no-op there). The equivalent bug for Mac is bug 592563 though.
I just had a crash in [@ nsPresContext::CheckForInterrupt ]. Could they be related?

Mats, that patch does fix the crash I'm seeing in this signature. (Tiny bit of bitrot-fix needed, is all.)
Attachment #483614 - Attachment is obsolete: true
Great, thanks for testing!
Attached patch wip2Splinter Review
Updated to tip.
Attachment #486233 - Attachment is obsolete: true
Comment on attachment 486416 [details] [diff] [review]

Steven, I'd appreciate your feedback on this patch, in particular
any risk of regressing bug 592563.
Attachment #486416 - Flags: feedback?(smichaud)
(In reply to comment #30)
Gordon, that stack looks like a separate problem; please file a new bug.
(In reply to comment #35)
> (In reply to comment #30)
> Gordon, that stack looks like a separate problem; please file a new bug.

Done: bug 607778.
Comment on attachment 486416 [details] [diff] [review]

I tested this patch with my DebugEventsPlugin (using one of your
tryserver builds from comment #28) and had no problems.  And testing
in 32-bit mode, I broke (in gdb) on nsChildView::HidePlugin() and saw
that nsChildView::Show(PR_FALSE) is called on a plugin when it should
be (for example when switching tabs).

So no, this patch doesn't regress the fix for bug 592563.
Attachment #486416 - Flags: feedback?(smichaud) → feedback+
Great, thanks Steven!
Attachment #486416 - Flags: review?(roc)
Closed: 14 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.0b7
Blocks: 623108
Crash Signature: [@ nsPresContext::IsRootContentDocument ]
You need to log in before you can comment on or make changes to this bug.