Closed Bug 267804 Opened 20 years ago Closed 19 years ago

FF10RC1 crash blocking iframes with AdBlock extension [@ nsDocShell::GetVisibility]

Categories

(Core :: Layout, defect)

Other Branch
defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: jay, Assigned: dbaron)

Details

(Keywords: crash, topcrash)

Crash Data

Attachments

(1 file)

This is a topcrash for Firefox 1.0 RC1 and is clearly related to the AdBlock
extension.  Comments suggest it's more directly a result of blocking iframes:

Count   Offset    Real Signature
[ 25   nsDocShell::GetVisibility d3962dc2 - nsDocShell::GetVisibility ]
 
     Crash date range: 01-NOV-04 to 31-OCT-04
     Min/Max Seconds since last crash: 17 - 385701
     Min/Max Runtime: 4077 - 396191
 
     Count   Platform List 
     25   Windows XP [Windows NT 5.1 build 2600] 
 
     Count   Build Id List 
     25   2004102622
 
     No of Unique Users        22
 
 Stack trace(Frame) 

	 nsDocShell::GetVisibility
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/docshell/base/nsDocShell.cpp
 line 3363] 
	 PresShell::IsVisible
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/layout/html/base/src/nsPresShell.cpp
 line 6158] 
	 IsViewVisible
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/view/src/nsViewManager.cpp
 line 416] 
	 nsViewManager::SetWindowDimensions
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/view/src/nsViewManager.cpp
 line 684] 
	 DocumentViewerImpl::InitPresentationStuff
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/content/base/src/nsDocumentViewer.cpp
 line 690] 
	 DocumentViewerImpl::InitInternal
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/content/base/src/nsDocumentViewer.cpp
 line 876] 
	 DocumentViewerImpl::Init
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/content/base/src/nsDocumentViewer.cpp
 line 639] 
	 nsDocShell::Embed
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/docshell/base/nsDocShell.cpp
 line 4235] 
	 nsDocShell::CreateAboutBlankContentViewer
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/docshell/base/nsDocShell.cpp
 line 4549] 
	 nsDocShell::EnsureContentViewer
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/docshell/base/nsDocShell.cpp
 line 4478] 
	 nsWebShell::GetInterface
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/docshell/base/nsWebShell.cpp
 line 313] 
	 nsGetInterface::operator()
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/xpcom/glue/nsIInterfaceRequestorUtils.cpp
 line 53] 
	 nsCOMPtr_base::assign_from_helper
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/xpcom/glue/nsCOMPtr.cpp
 line 114] 
	 GlobalWindowImpl::GetDocument
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsGlobalWindow.cpp
 line 1108] 
	 nsWindowSH::OnDocumentChanged
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsDOMClassInfo.cpp
 line 4391] 
	 nsWindowSH::NewResolve
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsDOMClassInfo.cpp
 line 4661] 
	 XPC_WN_Helper_NewResolve
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp
 line 929] 
	 js_LookupPropertyWithFlags
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsobj.c  line
2489] 
	 js_LookupProperty
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsobj.c  line
2587] 
	 js_GetProperty
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsobj.c  line
2693] 
	 js_Interpret
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 2801] 
	 js_Invoke
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 958] 
	 js_InternalInvoke
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 1035] 
	 JS_CallFunctionValue
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsapi.c  line
3698] 
	 nsJSContext::CallEventHandler
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsJSEnvironment.cpp
 line 1297] 
	 GlobalWindowImpl::RunTimeout
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsGlobalWindow.cpp
 line 5309] 
	 GlobalWindowImpl::TimerCallback
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsGlobalWindow.cpp
 line 5671] 
	 nsXULWindow::ShowModal
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/xpfe/appshell/src/nsXULWindow.cpp
 line 362] 
	 nsContentTreeOwner::ShowAsModal
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/xpfe/appshell/src/nsContentTreeOwner.cpp
 line 443] 
	 GlobalWindowImpl::OpenInternal
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsGlobalWindow.cpp
 line 4903] 
	 GlobalWindowImpl::OpenDialog
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsGlobalWindow.cpp
 line 3448] 
	 XPTC_InvokeByIndex
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/xpcom/reflect/xptcall/src/md/win32/xptcinvoke.cpp
 line 102] 
	 XPCWrappedNative::CallMethod
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp
 line 2034] 
	 XPC_WN_CallMethod
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp
 line 1287] 
	 js_Invoke
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 941] 
	 js_Interpret
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 2972] 
	 js_Invoke
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 958] 
	 js_Interpret
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 2972] 
	 js_Invoke
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 958] 
	 js_InternalInvoke
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsinterp.c 
line 1035] 
	 JS_CallFunctionValue
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/js/src/jsapi.c  line
3698] 
	 nsJSContext::CallEventHandler
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/base/nsJSEnvironment.cpp
 line 1297] 
	 nsJSEventListener::HandleEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/dom/src/events/nsJSEventListener.cpp
 line 184] 
	 nsEventListenerManager::HandleEventSubType
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/content/events/src/nsEventListenerManager.cpp
 line 1436] 
	 nsEventListenerManager::HandleEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/content/events/src/nsEventListenerManager.cpp
 line 1516] 
	 nsXULElement::HandleDOMEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/content/xul/content/src/nsXULElement.cpp
 line 2841] 
	 PresShell::HandleDOMEventWithTarget
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/layout/html/base/src/nsPresShell.cpp
 line 6139] 
	 nsMenuFrame::Execute
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/layout/xul/base/src/nsMenuFrame.cpp
 line 1671] 
	 nsMenuFrame::HandleEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/layout/xul/base/src/nsMenuFrame.cpp
 line 454] 
	 PresShell::HandleEventInternal
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/layout/html/base/src/nsPresShell.cpp
 line 6103] 
	 PresShell::HandleEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/layout/html/base/src/nsPresShell.cpp
 line 5921] 
	 nsViewManager::HandleEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/view/src/nsViewManager.cpp
 line 2326] 
	 nsViewManager::DispatchEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/view/src/nsViewManager.cpp
 line 2066] 
	 HandleEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/view/src/nsView.cpp 
line 77] 
	 nsWindow::DispatchEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp
 line 1067] 
	 nsWindow::DispatchMouseEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp
 line 5261] 
	 ChildWindow::DispatchMouseEvent
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp
 line 5511] 
	 nsWindow::WindowProc
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsWindow.cpp
 line 1349] 
	 USER32.dll + 0x8709 (0x77d48709)  
	 USER32.dll + 0x87eb (0x77d487eb)  
	 USER32.dll + 0x89a5 (0x77d489a5)  
	 USER32.dll + 0x89e8 (0x77d489e8)  
	 nsAppShell::Run
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/widget/src/windows/nsAppShell.cpp
 line 159] 
	 nsAppShellService::Run
[d:/builds/tinderbox/firefox-1.0/WINNT_5.0_Clobber/mozilla/xpfe/appshell/src/nsAppShellService.cpp
 line 495]  
 
     (1708502)	URL: www.bluesnews.com
     (1708502)	Comments: configuring adblock extension
     (1689987)	Comments: was adding an iframe to be blocked by 'adblock' firefox
extension.
     (1680437)	URL: http://www.nforce.nl
     (1680437)	Comments: NOTHING
     (1675816)	Comments: ad block iframe
     (1655812)	URL: http://www.bluesnews.com
     (1655812)	Comments: blocking an ad with adblocker extension
     (1636632)	Comments: edited an Adblock address  removing only the
querystring from an url to a .php page
     (1621567)	URL: http://www.xbitlabs.com/articles/cpu/display/athlon64-fx55.html
     (1621567)	Comments: Twice this has happened so I think it may be
repeatable. I was blocking an iFrame using Adblock. The iFrame is about halfway
down the page and is in the middle of the content.
     (1600439)	URL: www.betanews.com
     (1600439)	Comments: adblocking without a * wildcard
     (1583888)	URL: http://www.rage3d.com/board
     (1583888)	Comments: Adblocking the banner ad.
     (1578070)	URL: http://www.wired.com/news/ebiz/0 1272 65503 00.html/wn_ascii
     (1578070)	Comments: Attempting to block an iframe with the adblock extension.
This is happening on all platforms.
OS: Windows XP → All
Hardware: PC → All
WFM using Firefox 1.0 RC2 build Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7.5) Gecko/20041103 Firefox/1.0RC2 

I was not able to crash at any of the urls found in Talkback data after
installing Adblock v.5 d2 * nightly 39.  I tried blocking every iframe ad I
could find on those websites and things worked fine for me.
Assignee: nobody → dbaron
I've looked at the disassembly from talkback incident 1758597.  The line number
in GetVisibility is completely bogus, and I can't see any good reason for it to
be that way.

However, the "code around the PC" section shows that slightly after the crash
point there are three function calls:
 * 0x28 virtual function with 2 arguments (including this)
 * 0x74 virtual function with 2 arguments (including this)
 * 0x7c virtual function with 3 arguments (including this)
 * 0xc4 virtual function with 1 arguments (including this)


The dissasembly seems to match the following code perfectly (in other respects
as well):

        pPresShell->GetDocument(getter_AddRefs(pDoc));
                                                                                
        nsIContent *shellContent = pDoc->FindContentForSubDocument(doc);
        NS_ASSERTION(shellContent, "subshell not in the map");
                                                                                
        nsIFrame* frame;
        pPresShell->GetPrimaryFrameFor(shellContent, &frame);
        if (frame && !frame->AreAncestorViewsVisible()) {

And if that's correct, the crash is because |pPresShell| is null.
Attached patch proposed patchSplinter Review
Dunno if this is enough to really fix the crash, since I can't reproduce, but
it's worth a try since this is pretty high on the topcrash list.
Attachment #164819 - Flags: superreview?(jst)
Attachment #164819 - Flags: review?(jst)
Attachment #164819 - Flags: approval1.7.x?
Attachment #164819 - Flags: approval-aviary?
I should add an NS_NOTREACHED as well.
Comment on attachment 164819 [details] [diff] [review]
proposed patch

r+sr=jst
Attachment #164819 - Flags: superreview?(jst)
Attachment #164819 - Flags: superreview+
Attachment #164819 - Flags: review?(jst)
Attachment #164819 - Flags: review+
Attachment #164819 - Flags: approval1.7.x?
Attachment #164819 - Flags: approval1.7.x+
Attachment #164819 - Flags: approval-aviary?
Attachment #164819 - Flags: approval-aviary+
Fix checked in to AVIARY_1_0_20040515_BRANCH, 2004-11-05 23:58 -0700.
Fix checked in to MOZILLA_1_7_BRANCH, 2004-11-05 23:58 -0700.
Fix checked in to trunk, 2004-11-05 23:59 -0700.

Not marking fixed because I don't know if this fully fixed the crash (although
it probably fixed this signature of the crash.)
Using today's FF branch Mac build 2004-11-06-06-0.11 - I tested going to a few
of these sites with the Adblock extension installed. Going to
http://www.nforce.nl and operating on the Adblock controls froze the browser
(and I did get the spinning wheel like it wanted to crash, but it didn't) - the
only way I could move forward was the Force-Quit. I then went back and
uninstalled the extension and had no problems navigating that site.
http://www.rage3d.com/board was also a problem.
I installed adblock on 
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041106 Firefox/1.0 --
fedora core2 from u.m.o, 
then went to http://www.nforce.nl 

I didn't freeze, but I also had difficult in getting the extension to actually
block images.  flash block seems to work ok. but image blocking didn't happen.
the adblock tabs were shown on http://www.rage3d.com/board and worked to block
the ads...  no freeze or crash on linux on this site so far...
marcia@mozilla.org: can you
1. run "Activity Monitor"
2. double click "firefox"
3. click "sample"
4. copy the sample to a file and attach it here (or just show it to dbaron)
Using last night's trunk cvs on Windows XP I'm crashing while trying to block
the atdmt iframe in the middle of the right-hand column on
http://www.warp2search.net/.  I'm getting the following stack often; I was only
able to reproduce the nsESM::PreHandleEvent stack in talkback once.

JS API usage error: the address passed to JS_AddNamedRoot currently holds an
invalid jsval.  This is usually caused by a missing call to JS_RemoveRoot.
The root's name is "exn.report.root".
Assertion failure: root_points_to_gcArenaPool, at
c:/Mozilla/mozilla/js/src/jsgc.c:1335

 ntdll.dll!7c901230() 	
>js3250.dll!JS_Assert(const char * s=0x100cb0a0, const char * file=0x100cb07c,
int ln=1335)  Line 155	C
 js3250.dll!gc_root_marker(JSDHashTable * table=0x00af8028, JSDHashEntryHdr *
hdr=0x02710264, unsigned long num=256, void * arg=0x02cf3c60)  Line 1335 +
0x1c bytes	C
 js3250.dll!JS_DHashTableEnumerate(JSDHashTable * table=0x00af8028,
JSDHashOperator (JSDHashTable *, JSDHashEntryHdr *, unsigned long, void *)*
etor=0x10043980, void * arg=0x02cf3c60)  Line 618 + 0x19 bytes	C
 js3250.dll!js_GC(JSContext * cx=0x02cf3c60, unsigned int gcflags=0)  Line 1551
+ 0x15 bytes	C
 js3250.dll!js_ForceGC(JSContext * cx=0x02cf3c60, unsigned int gcflags=0)  Line
1363 + 0xd bytes	C
 js3250.dll!JS_GC(JSContext * cx=0x02cf3c60)  Line 1747 + 0xb bytes	C
 js3250.dll!JS_MaybeGC(JSContext * cx=0x02cf3c60)  Line 1766 + 0x9 bytes	C
 gklayout.dll!nsJSContext::ScriptEvaluated(int aTerminated=0)  Line 1876 + 0xd
bytes	C++
 gklayout.dll!nsJSContext::ScriptExecuted()  Line 1947	C++
 xpc3250.dll!AutoScriptEvaluate::~AutoScriptEvaluate()  Line 107	C++
 xpc3250.dll!nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS *
wrapper=0x01ffc248, unsigned short methodIndex=3, const nsXPTMethodInfo *
info=0x00ba4598, nsXPTCMiniVariant * nativeParams=0x0012b200)  Line 1588 +
0x1f bytes	C++
 xpc3250.dll!nsXPCWrappedJS::CallMethod(unsigned short methodIndex=3, const
nsXPTMethodInfo * info=0x00ba4598, nsXPTCMiniVariant * params=0x0012b200) 
Line 450	C++
 xpcom_core.dll!PrepareAndDispatch(nsXPTCStubBase * self=0x01ffc248, unsigned
int methodIndex=3, unsigned int * args=0x0012b2c8, unsigned int *
stackBytesToPop=0x0012b2b8)  Line 117 + 0x1e bytes	C++
 xpcom_core.dll!SharedStub()  Line 147	C++
 xpcom_core.dll!XPTC_InvokeByIndex(nsISupports * that=0x0012b3d8, unsigned int
methodIndex=1226172, unsigned int paramCount=12802554, nsXPTCVariant *
params=0x01ffc248)  Line 102	C++
 xpc3250.dll!AutoJSSuspendRequest::SuspendRequest()  Line 3009 + 0xd bytes	C++
 js3250.dll!GetPropertyTreeChild(JSContext * cx=0x003e4aa0, JSScopeProperty *
parent=0x02e3cdf8, JSScopeProperty * child=0x02d302e8)  Line 785 + 0x9 bytes	C
 00000001()
sdwalker: interesting report with good data, but a different bug, I think. 
Could you file a new one on Core: JavaScript Engine with that last comment?  Thanks.
(In reply to comment #13)
> sdwalker: interesting report with good data, but a different bug, I think. 
> Could you file a new one on Core: JavaScript Engine with that last comment? 

Was filed as Bug 274096 and it is fixed.

I only see 6 incidents in Talkback data, which means this crash is long gone. 
Marking this fixed.  If we find other AdBlock related crashes under a different
stack signature, let's log a new bug.
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Crash Signature: [@ nsDocShell::GetVisibility]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: