Closed
Bug 486613
Opened 17 years ago
Closed 16 years ago
Assertion running test_urlformatter.js test
Categories
(Core :: XPConnect, defect, P1)
Core
XPConnect
Tracking
()
RESOLVED
DUPLICATE
of bug 486585
People
(Reporter: Waldo, Unassigned)
References
Details
(Keywords: assertion, testcase)
TEST-UNEXPECTED-FAIL | /Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/_tests/xpcshell/test_urlformatter/unit/test_urlformatter.js | test failed, see following log:
>>>>>>>
### XPCOM_MEM_LEAK_LOG defined -- logging leaks to /tmp/runxpcshelltests_leaks.log
*** test pending
*** test finished
*** exiting
*** PASS ***
WARNING: nsExceptionService ignoring thread destruction after shutdown: file /Users/jwalden/moz/2/xpcom/base/nsExceptionService.cpp, line 194
###!!! ASSERTION: bad!: 'Error', file /Users/jwalden/moz/2/js/src/xpconnect/src/xpccallcontext.cpp, line 88
908daed28fa2 demonstrates the bug, sometime the Sunday before (March 22) does not -- I'm bisecting to figure out what caused this. Putting here until it's clearer what caused the bug...
I am going to bite my tongue and not point out bug 372581 too insistently here, even though it wasted a few hours of at least one person's time trying to debug a problem his patch didn't even cause.
| Reporter | ||
Comment 1•17 years ago
|
||
| Reporter | ||
Comment 2•17 years ago
|
||
| Reporter | ||
Comment 3•17 years ago
|
||
| Reporter | ||
Comment 4•17 years ago
|
||
http://hg.mozilla.org/mozilla-central/rev/6955c8360d08 is bad.
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=a07d2c4218f9&tochange=6955c8360d08 for reference, I think the question now is which of peterv's changes caused this, but doing a last few builds now to be sure...
| Reporter | ||
Comment 5•17 years ago
|
||
http://hg.mozilla.org/mozilla-central/rev/5aec561609cd is good, which makes it extremely likely that http://hg.mozilla.org/mozilla-central/rev/1e484f30d821 is the culprit.
| Reporter | ||
Comment 6•17 years ago
|
||
And the loser is:
http://hg.mozilla.org/mozilla-central/rev/1e484f30d821
Peter, could you fix this ASAP please? TraceMonkey developers, for starters, want to be able to run tests on debug builds so as to uncover JS assertions, and this makes it impossible to do a full xpcshell test run.
The stack plus a trivial amount of debugging show that having nsWrapperCache not implement nsISupports is at least part of the problem:
find-waldo-now:~/moz/2 jwalden$ make -s -C obj-i386-apple-darwin8.11.1/toolkit/components/urlformatter/tests/ check | tools/rb/fix-macosx-stack.pl
TEST-UNEXPECTED-FAIL | /Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/_tests/xpcshell/test_urlformatter/unit/test_urlformatter.js | test failed, see log
/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/_tests/xpcshell/test_urlformatter/unit/test_urlformatter.js.log:
>>>>>>>
*** test pending
*** test finished
*** exiting
*** PASS ***
WARNING: nsExceptionService ignoring thread destruction after shutdown: file /Users/jwalden/moz/2/xpcom/base/nsExceptionService.cpp, line 194
###!!! ASSERTION: bad!: 'Error', file /Users/jwalden/moz/2/js/src/xpconnect/src/xpccallcontext.cpp, line 88
XPCCallContext::XPCCallContext(XPCContext::LangType, JSContext*, JSObject*, JSObject*, long, unsigned int, long*, long*) (/Users/jwalden/moz/2/js/src/xpconnect/src/xpccallcontext.cpp:88)
GetContextFromObject(JSObject*) (/Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappedjsclass.cpp:583)
nsXPCWrappedJSClass::DelegatedQueryInterface(nsXPCWrappedJS*, nsID const&, void**) (/Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappedjsclass.cpp:645)
nsXPCWrappedJS::QueryInterface(nsID const&, void**) (/Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappedjs.cpp:184)
nsXPTCStubBase::QueryInterface(nsID const&, void**) (/Users/jwalden/moz/2/xpcom/reflect/xptcall/src/xptcall.cpp:53)
nsCreateInstanceByContractID::nsCreateInstanceByContractID(char const*, nsISupports*, unsigned int*)+0x00006380 (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/js/src/xpconnect/loader/../../../../dist/include/xpcom/nsISupportsUtils.h:203)
XPCWrappedNative::FlatJSObjectFinalized(JSContext*) (/Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappednative.cpp:1155)
XPC_WN_NoHelper_Finalize(JSContext*, JSObject*) (/Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappednativejsops.cpp:639)
js_FinalizeObject (/Users/jwalden/moz/2/js/src/jsobj.cpp:3483)
js_GC (/Users/jwalden/moz/2/js/src/jsgc.cpp:3648)
js_DestroyContext (/Users/jwalden/moz/2/js/src/jscntxt.cpp:544)
JS_DestroyContext (/Users/jwalden/moz/2/js/src/jsapi.cpp:1089)
XPCJSContextStack::~XPCJSContextStack() (/Users/jwalden/moz/2/js/src/xpconnect/src/xpcthreadcontext.cpp:61)
XPCPerThreadData::CleanupAllThreads() (/Users/jwalden/moz/2/js/src/xpconnect/src/xpcthreadcontext.cpp:505)
nsXPConnect::~nsXPConnect() (/Users/jwalden/moz/2/js/src/xpconnect/src/nsXPConnect.cpp:143)
nsXPConnect::Release() (/Users/jwalden/moz/2/js/src/xpconnect/src/nsXPConnect.cpp:56)
nsScriptSecurityManager::Shutdown() (/Users/jwalden/moz/2/caps/src/nsScriptSecurityManager.cpp:3298)
CapsModuleDtor(nsIModule*) (/Users/jwalden/moz/2/caps/src/nsSecurityManagerFactory.cpp:503)
nsGenericModule::Shutdown() (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/build/nsGenericFactory.cpp:340)
nsGenericModule::~nsGenericModule() (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/build/nsGenericFactory.cpp:237)
nsGenericModule::Release() (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/build/nsGenericFactory.cpp:245)
nsSupportsWeakReference::~nsSupportsWeakReference()+0x00001D0A (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/string/src/../../dist/include/xpcom/nsCOMPtr.h:495)
nsSupportsWeakReference::~nsSupportsWeakReference()+0x00001D8C (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/string/src/../../dist/include/xpcom/nsCOMPtr.h:1181)
nsSupportsWeakReference::~nsSupportsWeakReference()+0x00003668 (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/string/src/../../dist/include/xpcom/nsTHashtable.h:640)
nsNativeModuleLoader::ReleaserFunc(nsIHashable*, nsNativeModuleLoader::NativeLoadData&, void*) (/Users/jwalden/moz/2/xpcom/components/nsNativeComponentLoader.cpp:240)
nsSupportsWeakReference::~nsSupportsWeakReference()+0x00003459 (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/string/src/../../dist/include/xpcom/nsBaseHashtable.h:346)
PL_DHashTableEnumerate (pldhash.c:754)
nsSupportsWeakReference::~nsSupportsWeakReference()+0x000030BE (/Users/jwalden/moz/2/obj-i386-apple-darwin8.11.1/xpcom/string/src/../../dist/include/xpcom/nsBaseHashtable.h:221)
nsNativeModuleLoader::UnloadLibraries() (/Users/jwalden/moz/2/xpcom/components/nsNativeComponentLoader.cpp:281)
nsComponentManagerImpl::Shutdown() (/Users/jwalden/moz/2/xpcom/components/nsComponentManager.cpp:748)
NS_ShutdownXPCOM_P (/Users/jwalden/moz/2/xpcom/build/nsXPComInit.cpp:847)
NS_ShutdownXPCOM (/Users/jwalden/moz/2/xpcom/stub/nsXPComStub.cpp:175)
main (/Users/jwalden/moz/2/js/src/xpconnect/shell/xpcshell.cpp:1770)
_start (/Users/jwalden/moz/2/js/src/xpconnect/shell/xpcshell.cpp:88)
start (/Users/jwalden/moz/2/js/src/xpconnect/shell/xpcshell.cpp:88)
<<<<<<<
make: *** [check] Error 1
(gdb) up
#5 0x0193a64f in NS_DebugBreak_P (aSeverity=1, aStr=0x30a8b54 "bad!", aExpr=0x30a7e5c "Error", aFile=0x30a8b14 "/Users/jwalden/moz/2/js/src/xpconnect/src/xpccallcontext.cpp", aLine=88) at /Users/jwalden/moz/2/xpcom/base/nsDebugImpl.cpp:350
350 Abort(buf.buffer);
(gdb) up
#6 0x030113aa in XPCCallContext::XPCCallContext (this=0xbfffe62c, callerLanguage=LANG_NATIVE, cx=0x0, obj=0x0, funobj=0x0, name=0, argc=4294967295, argv=0x0, rval=0x0) at /Users/jwalden/moz/2/js/src/xpconnect/src/xpccallcontext.cpp:88
88 NS_ERROR("bad!");
(gdb) lis
83 XPCJSContextStack* stack = mThreadData->GetJSContextStack();
84 JSContext* topJSContext;
85
86 if(!stack || NS_FAILED(stack->Peek(&topJSContext)))
87 {
88 NS_ERROR("bad!");
89 mJSContext = nsnull;
90 return;
91 }
92
(gdb) up
#7 0x030400fc in GetContextFromObject (obj=0x7aa7e0) at /Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappedjsclass.cpp:583
583 XPCCallContext ccx(NATIVE_CALLER);
(gdb) lis
578
579 if(stack && NS_SUCCEEDED(stack->Peek(&topJSContext)) && topJSContext)
580 return nsnull;
581
582 // In order to get a context, we need a context.
583 XPCCallContext ccx(NATIVE_CALLER);
584 if(!ccx.IsValid())
585 return nsnull;
586 XPCWrappedNativeScope* scope =
587 XPCWrappedNativeScope::FindInJSObjectScope(ccx, obj);
(gdb) up
#8 0x03041986 in nsXPCWrappedJSClass::DelegatedQueryInterface (this=0x635c50, self=0x635d80, aIID=@0x30d9380, aInstancePtr=0xbfffe930) at /Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappedjsclass.cpp:645
645 JSContext *context = GetContextFromObject(self->GetJSObject());
(gdb) lis
640 *aInstancePtr = (void*) static_cast<nsIPropertyBag*>(root);
641 return NS_OK;
642 }
643
644
645 JSContext *context = GetContextFromObject(self->GetJSObject());
646 XPCCallContext ccx(NATIVE_CALLER, context);
647 if(!ccx.IsValid())
648 {
649 *aInstancePtr = nsnull;
(gdb) up
#9 0x0303aa62 in nsXPCWrappedJS::QueryInterface (this=0x635d80, aIID=@0x30d9380, aInstancePtr=0xbfffe930) at /Users/jwalden/moz/2/js/src/xpconnect/src/xpcwrappedjs.cpp:184
184 return mClass->DelegatedQueryInterface(this, aIID, aInstancePtr);
(gdb) lis
179 if(outer)
180 return outer->QueryInterface(aIID, aInstancePtr);
181
182 // else...
183
184 return mClass->DelegatedQueryInterface(this, aIID, aInstancePtr);
185 }
186
187
188 // Refcounting is now similar to that used in the chained (pre-flattening)
(gdb) up
#10 0x0194210e in nsXPTCStubBase::QueryInterface (this=0x635d70, aIID=@0x30d9380, aInstancePtr=0xbfffe930) at /Users/jwalden/moz/2/xpcom/reflect/xptcall/src/xptcall.cpp:53
53 return mOuter->QueryInterface(aIID, aInstancePtr);
(gdb) up
#11 0x030bfce8 in CallQueryInterface<nsISupports, nsWrapperCache> (aSource=0x635d70, aDestination=0xbfffe930) at ../../../../dist/include/xpcom/nsISupportsUtils.h:203
203 reinterpret_cast<void**>(aDestination));
Flags: blocking1.9.1?
| Reporter | ||
Comment 7•17 years ago
|
||
The object in question is XULAppInfo, defined in <http://mxr.mozilla.org/mozilla-central/source/toolkit/components/urlformatter/tests/unit/head_urlformatter.js>. Should you be bailing earlier when looking at an xpconnecty thing?
Comment 9•17 years ago
|
||
(making p1, bad crash in GC, should probably block not that I understand what the bug is about)
Comment 10•16 years ago
|
||
I disabled the test until someone fixes this.
http://hg.mozilla.org/tracemonkey/rev/1d2bb1304fe4
Updated•16 years ago
|
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → DUPLICATE
Comment 12•16 years ago
|
||
(In reply to comment #6)
> The stack plus a trivial amount of debugging show that having nsWrapperCache
> not implement nsISupports is at least part of the problem:
I don't see what that has to do with it at all.
Comment 13•16 years ago
|
||
(In reply to comment #9)
> (making p1, bad crash in GC, should probably block not that I understand what
> the bug is about)
Need to fix the assertion for sure, but I don't see how this crashes? The failure is handled gracefully, we check for a valid call context everywhere.
Comment 14•16 years ago
|
||
This is not an assert. This is a crash during GC as the shell shuts down. Observed on macosx.
Comment 16•16 years ago
|
||
(In reply to comment #14)
> This is not an assert. This is a crash during GC as the shell shuts down.
Please give some details about the crash, because I'm not seeing it and so can't fix it. All I see is the abort from the assertion (assertion which in this case is bogus and I can comment out without any harm).
You need to log in
before you can comment on or make changes to this bug.
Description
•