Closed Bug 266075 Opened 21 years ago Closed 12 years ago

Assertion failure: !fp->script && (!fp->fun || fp->fun->native), at c:/mozilla/js/src/jsopcode.c:2544

Categories

(Core :: XPConnect, defect, P5)

x86
Windows XP
defect

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: timeless, Unassigned)

References

()

Details

(Keywords: assertion)

###!!! ASSERTION: XPConnect is being called on a scope without a 'Components' property! This is pretty much always bad. It usually means that native code is making a callback to an interface implemented in JavaScript, but the document where the JS object was created has already been cleared and the global properties of that document's window are *gone*. Generally this indicates a problem that should be addressed in the design and use of the callback code. : 'Error', file c:/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp, line 554 ************************************************************ * Call to xpconnect wrapped JSObject produced this error: * [Exception... "'[JavaScript Error: "Object is not defined" {file: "chrome://venkman/content/venkman-debugger.js" line: 189}]' when calling method: [jsdIScriptHook::onScriptCreated]" nsresult: "0x80570021 (NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS)" location: "JS frame :: chrome://global/content/globalOverlay.js :: goQuitApplication :: line 37" data: yes] ************************************************************ ###!!! ASSERTION: XPConnect is being called on a scope without a 'Components' property! This is pretty much always bad. It usually means that native code is making a callback to an interface implemented in JavaScript, but the document where the JS object was created has already been cleared and the global properties of that document's window are *gone*. Generally this indicates a problem that should be addressed in the design and use of the callback code. : 'Error', file c:/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp, line 554 ###!!! ASSERTION: XPConnect is being called on a scope without a 'Components' property! This is pretty much always bad. It usually means that native code is making a callback to an interface implemented in JavaScript, but the document where the JS object was created has already been cleared and the global properties of that document's window are *gone*. Generally this indicates a problem that should be addressed in the design and use of the callback code. : 'Error', file c:/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp, line 554 ************************************************************ * Call to xpconnect wrapped JSObject produced this error: * [Exception... "'[JavaScript Error: "dd is not defined" {file: "chrome://venkman/content/venkman-debugger.js" line: 245}]' when calling method: [jsdIExecutionHook::onExecute]" nsresult: "0x80570021 (NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS)" location: "JS frame :: chrome://navigator/content/navigator.js :: Shutdown :: line 736" data: yes] ************************************************************ ###!!! ASSERTION: XPConnect is being called on a scope without a 'Components' property! This is pretty much always bad. It usually means that native code is making a callback to an interface implemented in JavaScript, but the document where the JS object was created has already been cleared and the global properties of that document's window are *gone*. Generally this indicates a problem that should be addressed in the design and use of the callback code. : 'Error', file c:/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp, line 554 ************************************************************ * Call to xpconnect wrapped JSObject produced this error: * [Exception... "'[JavaScript Error: "console is not defined" {file: "chrome://venkman/content/venkman-debugger.js" line: 379}]' when calling method: [jsdIErrorHook::onError]" nsresult: "0x80570021 (NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS)" location: "<unknown>" data: yes] ************************************************************ JavaScript error: line 0: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIControllers.removeController]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://navigator/content/navigator.js :: Shutdown :: line 736" data: no] --WEBSHELL == 13 ###!!! ASSERTION: expected a XUL document: 'xuldoc', file c:/mozilla/content/xul/templates/src/nsXULContentBuilder.cpp, line 1468 ###!!! ASSERTION: expected a XUL document: 'xuldoc', file c:/mozilla/content/xul/templates/src/nsXULContentBuilder.cpp, line 1468 ###!!! ASSERTION: expected a XUL document: 'xuldoc', file c:/mozilla/content/xul/templates/src/nsXULContentBuilder.cpp, line 1468 ###!!! ASSERTION: expected a XUL document: 'xuldoc', file c:/mozilla/content/xul/templates/src/nsXULContentBuilder.cpp, line 1468 blorf!!! WARNING: getting z level of unregistered window, file c:/mozilla/xpfe/appshell/src/nsWindowMediator.cpp, line 636 WARNING: getting z level of unregistered window, file c:/mozilla/xpfe/appshell/src/nsWindowMediator.cpp, line 636 ###!!! ASSERTION: XPConnect is being called on a scope without a 'Components' property! This is pretty much always bad. It usually means that native code is making a callback to an interface implemented in JavaScript, but the document where the JS object was created has already been cleared and the global properties of that document's window are *gone*. Generally this indicates a problem that should be addressed in the design and use of the callback code. : 'Error', file c:/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp, line 554 Assertion failure: !fp->script && (!fp->fun || fp->fun->native), at c:/mozilla/js/src/jsopcode.c:2544 ntdll.dll!77f75a58() js3250.dll!JS_Assert(s=0x00c75104, file=0x00c750dc, ln=2544) Line 155 C > js3250.dll!js_DecompileValueGenerator(cx=0x00a7aa18, spindex=1, v=88823656, fallback=0x00a23878) Line 2544 + 0x34 C js3250.dll!js_DefaultValue(cx=0x00a7aa18, obj=0x054b5768, hint=JSTYPE_STRING, vp=0x0012d0d4) Line 3087 + 0x13 C js3250.dll!js_ValueToString(cx=0x00a7aa18, v=88823656) Line 2655 + 0x19 C js3250.dll!JS_ValueToString(cx=0x00a7aa18, v=88823656) Line 529 + 0xd C xpc3250.dll!XPCConvert::JSValToXPCException(ccx={...}, s=88823656, ifaceName=0x03041588, methodName=0x03ea9ab8, exceptn=0x0012d35c) Line 1242 + 0xe C++ xpc3250.dll!nsXPCWrappedJSClass::CheckForException(ccx={...}, aPropertyName=0x03ea9ab8, anInterfaceName=0x03041588) Line 826 + 0x30 C++ xpc3250.dll!nsXPCWrappedJSClass::CallMethod(wrapper=0x043004c8, methodIndex=3, info=0x03ea9a98, nativeParams=0x0012d674) Line 1373 + 0x1c C++ xpc3250.dll!nsXPCWrappedJS::CallMethod(methodIndex=3, info=0x03ea9a98, params=0x0012d674) Line 450 C++ xpcom.dll!PrepareAndDispatch(self=0x043004c8, methodIndex=3, args=0x0012d73c, stackBytesToPop=0x0012d72c) Line 117 + 0x1c C++ xpcom.dll!SharedStub() Line 147 C++ jsd3250.dll!jsds_ScriptHookProc(jsdc=0x00aab028, jsdscript=0x02c7a7b0, creating=1, callerdata=0x00000000) Line 723 C++ jsd3250.dll!jsd_NewScriptHookProc(cx=0x00a7aa18, filename=0x034d9825, lineno=361, script=0x051ed718, fun=0x02c8cf50, callerdata=0x00aab028) Line 562 + 0x11 C js3250.dll!js_CallNewScriptHook(cx=0x00a7aa18, script=0x051ed718, fun=0x02c8cf50) Line 1143 + 0x27 C js3250.dll!js_NewScriptFromCG(cx=0x00a7aa18, cg=0x0012d85c, fun=0x02c8cf50) Line 1110 + 0x11 C js3250.dll!js_CompileFunctionBody(cx=0x00a7aa18, ts=0x05317de0, fun=0x02c8cf50) Line 694 + 0x14 C js3250.dll!JS_CompileUCFunctionForPrincipals(cx=0x00a7aa18, obj=0x031a8390, principals=0x00a9214c, name=0x0359d72c, nargs=1, argnames=0x01f01480, chars=0x034e85e0, length=141, filename=0x034cb528, lineno=361) Line 3345 + 0x11 C gklayout.dll!nsJSContext::CompileEventHandler(aTarget=0x031a8390, aName=0x0359d720, aBody={...}, aURL=0x034cb528, aLineNo=361, aShared=1, aHandler=0x0012e058) Line 1192 + 0x4a C++ gklayout.dll!nsXBLPrototypeHandler::ExecuteHandler (aReceiver=0x03164258, aEvent=0x02414c80) Line 441 C++ gklayout.dll!nsXBLPrototypeHandler::BindingDetached (aReceiver=0x03164258) Line 533 C++ gklayout.dll!nsXBLPrototypeBinding::BindingDetached (aReceiver=0x03164258) Line 383 + 0x12 C++ gklayout.dll!nsXBLBinding::ExecuteDetachedHandler() Line 863 C++ gklayout.dll!ExecuteDetachedHandler(aTable=0x028ff8ac, aHdr=0x03e34bd8, aNumber=11, aClosure=0x00000000) Line 956 C++ xpcom.dll!PL_DHashTableEnumerate(table=0x028ff8ac, etor=0x01af1f60, arg=0x00000000) Line 619 + 0x19 C gklayout.dll!nsBindingManager::ExecuteDetachedHandlers() Line 965 + 0x13 C++ gklayout.dll!GlobalWindowImpl::HandleDOMEvent(aPresContext=0x02bb2b70, aEvent=0x0012e314, aDOMEvent=0x0012e2e4, aFlags=7, aEventStatus=0x0012e310) Line 862 C++ gklayout.dll!DocumentViewerImpl::Unload() Line 1094 C++ docshell.dll!nsDocShell::FireUnloadNotification() Line 826 C++ docshell.dll!nsDocShell::Destroy() Line 3033 C++ docshell.dll!nsWebShell::Destroy() Line 1230 C++ appshell.dll!nsXULWindow::Destroy() Line 491 C++ appshell.dll!nsWebShellWindow::Destroy() Line 1663 + 0x9 C++ appshell.dll!nsChromeTreeOwner::Destroy() Line 330 C++ gklayout.dll!GlobalWindowImpl::ReallyCloseWindow() Line 3694 C++ gklayout.dll!GlobalWindowImpl::CloseWindow(aWindow=0x02946474) Line 4819 C++ gklayout.dll!nsJSContext::ScriptEvaluated(aTerminated=1) Line 1753 + 0x12 C++ gklayout.dll!nsJSContext::CallEventHandler(aTarget=0x04998e08, aHandler=0x04998e18, argc=1, argv=0x0012e71c, rval=0x0012e724) Line 1301 C++ gklayout.dll!nsJSEventListener::HandleEvent(aEvent=0x04f9e600) Line 175 + 0x2b C++ gklayout.dll!nsXBLPrototypeHandler::ExecuteHandler (aReceiver=0x04864cb0, aEvent=0x04f9e600) Line 461 C++ gklayout.dll!nsXBLWindowHandler::WalkHandlersInternal (aEvent=0x04f9e600, aEventType=0x00a14d08, aHandler=0x032d70e0) Line 320 + 0x18 C++ gklayout.dll!nsXBLWindowKeyHandler::WalkHandlers(aKeyEvent=0x04f9e600, aEventType=0x00a14d08) Line 162 C++ gklayout.dll!nsXBLWindowKeyHandler::KeyPress(aKeyEvent=0x04f9e600) Line 178 C++ gklayout.dll!DispatchToInterface(aEvent=0x04f9e600, aListener=0x02b816d0, aMethod=0x01a40420, aIID={...}, aHasInterface=0x0012ef78) Line 127 + 0xb C++ gklayout.dll!nsEventListenerManager::HandleEvent (aPresContext=0x02bb2b70, aEvent=0x0012f764, aDOMEvent=0x0012f424, aCurrentTarget=0x0247e1d0, aFlags=514, aEventStatus=0x0012f598) Line 1520 + 0x23 C++ gklayout.dll!nsXULDocument::HandleDOMEvent(aPresContext=0x02bb2b70, aEvent=0x0012f764, aDOMEvent=0x0012f424, aFlags=514, aEventStatus=0x0012f598) Line 1249 C++ gklayout.dll!nsXULElement::HandleDOMEvent(aPresContext=0x02bb2b70, aEvent=0x0012f764, aDOMEvent=0x0012f424, aFlags=519, aEventStatus=0x0012f598) Line 2875 + 0x36 C++ gklayout.dll!PresShell::HandleEventInternal(aEvent=0x0012f764, aView=0x02bb0388, aFlags=1, aStatus=0x0012f598) Line 6048 + 0x31 C++ gklayout.dll!PresShell::HandleEvent(aView=0x02bb0388, aEvent=0x0012f764, aEventStatus=0x0012f598, aForceHandle=1, aHandled=1) Line 5916 + 0x19 C++ gklayout.dll!nsViewManager::HandleEvent(aView=0x02bb0388, aEvent=0x0012f764, aCaptured=0) Line 2239 C++ gklayout.dll!nsViewManager::DispatchEvent(aEvent=0x0012f764, aStatus=0x0012f6c0) Line 2025 + 0x14 C++ gklayout.dll!HandleEvent(aEvent=0x0012f764) Line 79 C++ gkwidget.dll!nsWindow::DispatchEvent(event=0x0012f764, aStatus=nsEventStatus_eIgnore) Line 1067 + 0xa C++ gkwidget.dll!nsWindow::DispatchWindowEvent(event=0x0012f764) Line 1088 C++ gkwidget.dll!nsWindow::DispatchKeyEvent(aEventType=131, aCharCode=113, aVirtualCharCode=0, aKeyData=0) Line 2978 + 0xf C++ gkwidget.dll!nsWindow::OnChar(mbcsCharCode=17, virtualKeyCode=0, isMultiByte=false) Line 3165 C++ gkwidget.dll!nsWindow::ProcessMessage(msg=258, wParam=17, lParam=1048577, aRetValue=0x0012fbf8) Line 3880 + 0x22 C++ gkwidget.dll!nsWindow::WindowProc(hWnd=0x00e20230, msg=258, wParam=17, lParam=1048577) Line 1349 + 0x1b C++ user32.dll!77d43a50() user32.dll!77d43b1f() user32.dll!77d43d79() ntdll.dll!77f944a8() xpcom.dll!nsAutoLock::~nsAutoLock() Line 189 + 0x8 C++ user32.dll!77d43ddf() gkwidget.dll!nsAppShell::Run() Line 135 C++ appshell.dll!nsAppShellService::Run() Line 524 C++ mozilla.exe!main1(argc=1, argv=0x002a54e0, nativeApp=0x00a3e888) Line 1303 + 0x20 C++ mozilla.exe!main(argc=1, argv=0x002a54e0) Line 1791 + 0x25 C++ mozilla.exe!mainCRTStartup() Line 398 + 0x11 C kernel32.dll!77e814c7() ntdll.dll!77f944a8() - fp 0x0012d7ac {callobj=0x00000000 {map=??? slots=??? } argsobj=0x00000000 {map=??? slots=??? } varobj=0x00000000 {map=??? slots=??? } ...} JSStackFrame * |+ callobj 0x00000000 {map=??? slots=??? } JSObject * |+ argsobj 0x00000000 {map=??? slots=??? } JSObject * |+ varobj 0x00000000 {map=??? slots=??? } JSObject * |- script 0x051ed718 {code=0x051ed748 "A5" length=25 main=0x051ed748 "A5" ...} JSScript * |+ code 0x051ed748 "A5" unsigned char * || length 25 unsigned long ||+ main 0x051ed748 "A5" unsigned char * || version JSVERSION_DEFAULT JSVersion ||+ atomMap {vector=0x02586428 length=3 } JSAtomMap ||+ filename 0x034d9825 "chrome://global/content/bindings/browser.xml" const char * || lineno 361 unsigned int || depth 2 unsigned int ||+ trynotes 0x00000000 {start=??? length=??? catchStart=??? } JSTryNote * ||+ principals 0x00a9214c {codebase=0x00a92198 "[System Principal]" getPrincipalArray=0x00c97860 globalPrivilegesEnabled=0x00c97870 ...} JSPrincipals * |\+ object 0x00000000 {map=??? slots=??? } JSObject * |+ fun 0x00000000 {nrefs=??? object=??? native=??? ...} JSFunction * |+ thisp 0x00000000 {map=??? slots=??? } JSObject * | argc 0 unsigned int |+ argv 0x00000000 long * | rval 0 long | nvars 0 unsigned int |+ vars 0x00000000 long * |+ down 0x0012d92c {callobj=0x00000000 {map=??? slots=??? } argsobj=0x00000000 {map=??? slots=??? } varobj=0x054b56f0 {map=0x04c41fb8 {nrefs=1 ops=0x00c6db28 _js_ObjectOps nslots=5 ...} slots=0x0251d984 } ...} JSStackFrame * | annotation 0x00000000 void * |+ scopeChain 0x00000000 {map=??? slots=??? } JSObject * |+ pc 0x00000000 <Bad Ptr> unsigned char * |+ sp 0x00000000 long * |+ spbase 0x00000000 long * | sharpDepth 0 unsigned int |+ sharpArray 0x00000000 {map=??? slots=??? } JSObject * | flags 0 unsigned long |+ dormantNext 0x00000000 {callobj=??? argsobj=??? varobj=??? ...} JSStackFrame * \+ objAtomMap 0x00000000 {vector=??? length=??? } JSAtomMap * @ xpc3250.dll!XPCConvert::JSValToXPCException(ccx={...}, s=88823656, ifaceName=0x03041588, methodName=0x03ea9ab8, exceptn=0x0012d35c) Line 1242 + 0xe C++ - report 0x03b0dc98 {filename=0x0498a520 "chrome://venkman/content/venkman-debugger.js" lineno=189 linebuf=0x00000000 <Bad Ptr> ...} const JSErrorReport * + filename 0x0498a520 "chrome://venkman/content/venkman- debugger.js" const char * lineno 189 unsigned int + linebuf 0x00000000 <Bad Ptr> const char * + tokenptr 0x00000000 <Bad Ptr> const char * + uclinebuf 0x00000000 <Bad Ptr> const unsigned short * + uctokenptr 0x00000000 <Bad Ptr> const unsigned short * flags 0 unsigned int errorNumber 1 unsigned int + ucmessage 0x04d511e8 "Object is not defined" const unsigned short * + messageArgs 0x0259e348 const unsigned short * * @ js3250.dll!JS_CompileUCFunctionForPrincipals(cx=0x00a7aa18, obj=0x031a8390, principals=0x00a9214c, name=0x0359d72c, nargs=1, argnames=0x01f01480, chars=0x034e85e0, length=141, filename=0x034cb528, lineno=361) Line 3345 + 0x11 C + chars 0x034e85e0 " if (this.mDragDropHandler) this.mDragDropHandler.detach(); this.securityUI = null; " const unsigned short * length 141 unsigned int + filename 0x034cb528 "chrome://global/content/bindings/browser.xml" const char * lineno 361 unsigned int @ xpc3250.dll!nsXPCWrappedJSClass::CallMethod(wrapper=0x043004c8, methodIndex=3, info=0x03ea9a98, nativeParams=0x0012d674) Line 1373 + 0x1c C++ + name 0x03ea9ab8 "onScriptCreated" const char * <timeless> (this case is basically catastrophic teardown, everything that could go wrong did go wrong) <dbradley> So a script was being created on shutdown <timeless> specifically a destructor <timeless> dbradley: is it reasonable to assert that nsXPCWJSC::CallMethod took the !JSVAL_IS_PRIMITIVE(fval) branch <timeless> thus the exception it's trying to report would come from: <timeless> success = js_Invoke(cx, argc, JSINVOKE_INTERNAL); <dbradley> timeless: But that sounds reasonable <timeless> dbradley: ok <timeless> suppose i decide to blame xpconnect <timeless> instead of venkman <timeless> specifically callmethod <timeless> is checkforexception presuming that the cx-<timeless>fp is still related to the one that was running when the code failed? <timeless> if so, the code doesn't work <dbradley> timeless: I think the question is, is this exception valid? Can you tell why the exception is being thrown? <timeless> since callmethod has already reset cx-<timeless>fp <dbradley> timeless: Possibly, I'd havve to look at the code <timeless> the cx-<timeless>fp stuff is browser.xml <timeless> which isn't the right stack <timeless> the exception is venkman <timeless> which would be the exception that callmethod generated in that if block <timeless> so i think the problem is that checkexception is called too late <dbradley> timeless: Ok, well that sounds like a reasonable description, exception handling logic using the wrong frame pointer <timeless> and therefore spidermonkey is **** <dbradley> timeless: Can you reproduce this? <timeless> dbradley: hrm <timeless> i don't want to lose what i have <timeless> i think i frequently crash while quiting while venkman is debugging stuff <timeless> but not always <timeless> i also rarely do this <timeless> i mean, i'm evil, but not that consistently evil * dbradley laughs <dbradley> timeless: Well it's worth a review of that logic
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P5
Assignee: dbradley → nobody
QA Contact: pschwartau → xpconnect
8+ years without any activity and an assertion that no longer exists doesn't sound like the makings of an actionable bug.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.