Closed Bug 291442 Opened 20 years ago Closed 7 years ago

bogus error: ###!!! ASSERTION: bad method name: '0', file r:/mozilla/js/src/xpconnect/src/xpcwrappednativeinfo.cpp, line 372

Categories

(Core :: XPConnect, defect)

x86
Windows XP
defect
Not set
trivial

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: timeless, Unassigned)

Details

(Keywords: assertion)

set JS_RUNTIME_SIZE=4

\mozilla\dbg-i686-pc-cygwin\dist\bin\xpcshell.exe

###!!! ASSERTION: bad method name: '0', file
r:/mozilla/js/src/xpconnect/src/xpcwrappednativeinfo.cpp, line 372

-	info	0x00c0b028	const nsXPTMethodInfo *
\-	XPTMethodDescriptor	{name=0x00c0b0d0 "result" params=0x00c0b0d8 {flags=0x60
'`' type={prefix={flags='' } argnum=0x00 argnum2=0x00 ...} } result=0x00c0b0e0
{flags=0x00 type={prefix={flags='' } argnum=0x00 argnum2=0x00 ...} } ...}
XPTMethodDescriptor
 |+	name	0x00c0b0d0 "result"	char *
 |+	params	0x00c0b0d8 {flags=0x60 '`' type={prefix={flags=0x06 '␆' } argnum=0x00
argnum2=0x00 ...} }	XPTParamDescriptor *
 |+	result	0x00c0b0e0 {flags=0x00 type={prefix={flags=0x06 '␆' } argnum=0x00
argnum2=0x00 ...} }	XPTParamDescriptor *
 |	flags	0x80 '€'	unsigned char
 \	num_args	0x01 '␁'	unsigned char

the "method name" is "result" which is *not* bad. otoh, JS_InternString really
did return 0 because it ran out of memory.

###!!! ASSERTION: bad method name: '0', file
r:/mozilla/js/src/xpconnect/src/xpcwrappednativeinfo.cpp, line 372
************************************************************
* Call to xpconnect wrapped JSObject produced this error:  *
[Exception... "[JavaScript Error: "out of memory" {file:
"file:///R:/mozilla/dbg-i686-pc-cygwin/dist/bin/components/hsDialogSupressor.js"
line: 42}]"  nsresult: "0x80570021 (NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS)"
 location: "JS frame ::
file:///R:/mozilla/dbg-i686-pc-cygwin/dist/bin/components/hsDialogSupressor.js
:: anonymous :: line 42"  data: yes]
************************************************************

>	xpc3250.dll!XPCNativeInterface::NewInstance(XPCCallContext & ccx={...},
nsIInterfaceInfo * aInfo=0x00c7fb58)  Line 372	C++
 	xpc3250.dll!XPCNativeInterface::GetNewOrUsed(XPCCallContext & ccx={...}, const
nsID * iid=0x00cfc6b8)  Line 206 + 0x12	C++
 	xpc3250.dll!XPCConvert::NativeInterface2JSObject(XPCCallContext & ccx={...},
nsIXPConnectJSObjectHolder * * dest=0x0012e718, nsISupports * src=0x00c7f648,
const nsID * iid=0x00cfc6b8, JSObject * scope=0x00ba5ba8, unsigned int *
pErr=0x0012e668)  Line 1054 + 0xd	C++
 	xpc3250.dll!nsXPConnect::WrapNative(JSContext * aJSContext=0x00bab178,
JSObject * aScope=0x00ba5ba8, nsISupports * aCOMObj=0x00c7f648, const nsID &
aIID={...}, nsIXPConnectJSObjectHolder * * _retval=0x0012e718)  Line 567 + 0x1d	C++
 	xpc3250.dll!XPCThrower::ThrowExceptionObject(JSContext * cx=0x00bab178,
nsIException * e=0x00c7f648)  Line 262 + 0x36	C++
 	xpc3250.dll!XPCThrower::BuildAndThrowException(JSContext * cx=0x00bab178,
unsigned int rv=0x80004005, const char * sz=0x00c460a0)  Line 239 + 0x12	C++
 	xpc3250.dll!XPCThrower::ThrowBadParam(unsigned int rv=0x80004005, unsigned int
paramNum=0x00000000, XPCCallContext & ccx={...})  Line 147 + 0x16	C++
 	xpc3250.dll!ThrowBadParam(unsigned int rv=0x80004005, unsigned int
paramNum=0x00000000, XPCCallContext & ccx={...})  Line 698 + 0x11	C++
 	xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...},
XPCWrappedNative::CallMode mode=CALL_GETTER)  Line 2159 + 0x15	C++
 	xpc3250.dll!XPCWrappedNative::GetAttribute(XPCCallContext & ccx={...})  Line
1888 + 0xe	C++
 	xpc3250.dll!XPC_WN_GetterSetter(JSContext * cx=0x00bab178, JSObject *
obj=0x00ba6060, unsigned int argc=0x00000000, long * argv=0x00c3dcd4, long *
vp=0x0012eb98)  Line 1343 + 0x9	C++
 	js3250.dll!js_Invoke(JSContext * cx=0x00bab178, unsigned int argc=0x00000000,
unsigned int flags=0x00000002)  Line 1293 + 0x20	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x00bab178, JSObject *
obj=0x00ba6060, long fval=0x00ba6648, unsigned int flags=0x00000000, unsigned
int argc=0x00000000, long * argv=0x00000000, long * rval=0x0012f73c)  Line
1390 + 0x14	C
 	js3250.dll!js_InternalGetOrSet(JSContext * cx=0x00bab178, JSObject *
obj=0x00ba6060, long id=0x00bb2960, long fval=0x00ba6648, JSAccessMode
mode=JSACC_READ, unsigned int argc=0x00000000, long * argv=0x00000000, long *
rval=0x0012f73c)  Line 1433 + 0x1f	C
 	js3250.dll!js_GetProperty(JSContext * cx=0x00bab178, JSObject *
obj=0x00ba6060, long id=0x00bb2960, long * vp=0x0012f73c)  Line 2779 + 0x30	C
 	js3250.dll!js_Interpret(JSContext * cx=0x00bab178, unsigned char *
pc=0x00c393a1, long * result=0x0012f888)  Line 3393 + 0x62e	C
 	js3250.dll!js_Invoke(JSContext * cx=0x00bab178, unsigned int argc=0x00000003,
unsigned int flags=0x00000002)  Line 1313 + 0x13	C
 	xpc3250.dll!nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS *
wrapper=0x00c2b1c8, unsigned short methodIndex=0x0003, const nsXPTMethodInfo *
info=0x00c44628, nsXPTCMiniVariant * nativeParams=0x0012fb9c)  Line 1413 + 0x14	C++
 	xpc3250.dll!nsXPCWrappedJS::CallMethod(unsigned short methodIndex=0x0003,
const nsXPTMethodInfo * info=0x00c44628, nsXPTCMiniVariant * params=0x0012fb9c)
 Line 450	C++
 	xpcom_core.dll!PrepareAndDispatch(nsXPTCStubBase * self=0x00c2b1c8, unsigned
int methodIndex=0x00000003, unsigned int * args=0x0012fc64, unsigned int *
stackBytesToPop=0x0012fc54)  Line 117 + 0x1c	C++
 	xpcom_core.dll!SharedStub()  Line 147	C++
 	xpcom_core.dll!NS_CreateServicesFromCategory(const char * category=0x004ddbc0,
nsISupports * origin=0x00000000, const char * observerTopic=0x004ddbb0)  Line
827	C++
 	xpcom_core.dll!NS_InitXPCOM2_P(nsIServiceManager * * result=0x0012ff40,
nsIFile * binDirectory=0x00000000, nsIDirectoryServiceProvider *
appFileLocationProvider=0x00000000)  Line 683 + 0x11	C++
 	xpcshell.exe!main(int argc=0x00000001, char * * argv=0x00387040, char * *
envp=0x00382f88)  Line 1499 + 0x22	C++
 	xpcshell.exe!mainCRTStartup()  Line 398 + 0x11	C
 	kernel32.dll!_BaseProcessStart@4()  + 0x23	

reproducable? yes :)

code:
        str = JS_InternString(ccx, info->GetName());
        if(!str)
        {
            NS_ASSERTION(0,"bad method name");

note that the code should not use NS_ASSERTION(0,...) nor should it assert that
you can't run out of memory.
Assignee: dbradley → nobody
QA Contact: pschwartau → xpconnect
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.