Closed Bug 307451 Opened 19 years ago Closed 18 years ago

stack overflow on startup

Categories

(Core :: XPConnect, defect)

x86
Windows XP
defect
Not set
critical

Tracking

()

RESOLVED DUPLICATE of bug 423443

People

(Reporter: timeless, Assigned: timeless)

Details

(Keywords: crash)

Attachments

(1 file)

i probably have various changes throughout my tree, but this is probably an 
almost reachable path that we should protect

 	js3250.dll!js_LookupPropertyWithFlags(JSContext * cx=0x00bfe268, 
JSObject * obj=0x03981dc0, long id=12865976, unsigned int flags=0, JSObject * * 
objp=0x00033110, JSProperty * * propp=0x00033100)  Line 2509 + 0x40	C
 	js3250.dll!js_LookupProperty(JSContext * cx=0x00bfe268, JSObject * 
obj=0x03981dc0, long id=12865976, JSObject * * objp=0x00033110, JSProperty * * 
propp=0x00033100)  Line 2484 + 0x1b	C
 	js3250.dll!js_GetProperty(JSContext * cx=0x00bfe268, JSObject * 
obj=0x03981dc0, long id=12865976, long * vp=0x00033a24)  Line 2769 + 0x19
	C
 	js3250.dll!js_Interpret(JSContext * cx=0x00bfe268, unsigned char * 
pc=0x0396a69b, long * result=0x00033b74)  Line 5199 + 0x528	C
 	js3250.dll!js_Invoke(JSContext * cx=0x00bfe268, unsigned int argc=1, 
unsigned int flags=2)  Line 1183 + 0x13	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x00bfe268, JSObject * 
obj=0x0394ee08, long fval=60091360, unsigned int flags=0, unsigned int argc=1, 
long * argv=0x00033c84, long * rval=0x00033cb8)  Line 1260 + 0x14	C
 	js3250.dll!JS_CallFunctionValue(JSContext * cx=0x00bfe268, JSObject * 
obj=0x0394ee08, long fval=60091360, unsigned int argc=1, long * 
argv=0x00033c84, long * rval=0x00033cb8)  Line 4048 + 0x1f	C
 	xpc3250.dll!nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject
(XPCCallContext & ccx={...}, JSObject * jsobj=0x0394ee08, const nsID & aIID=
{...})  Line 373 + 0x1c	C++
 	xpc3250.dll!nsXPCWrappedJSClass::GetRootJSObject(XPCCallContext & ccx=
{...}, JSObject * aJSObj=0x0394ee08)  Line 718 + 0x16	C++
 	xpc3250.dll!nsXPCWrappedJS::GetUsedOnly(XPCCallContext & ccx={...}, 
JSObject * aJSObj=0x0394ee08, const nsID & aIID={...}, nsISupports * 
aOuter=0x00000000, nsXPCWrappedJS * * wrapperResult=0x00033d50)  Line 342 + 0x10
	C++
 	xpc3250.dll!XPCConvert::JSObject2NativeInterface(XPCCallContext & ccx=
{...}, void * * dest=0x00033e38, JSObject * src=0x0394ee08, const nsID * 
iid=0x015bea20, nsISupports * aOuter=0x00000000, int createNew=0, unsigned int 
* pErr=0x00033d8c)  Line 1192 + 0x19	C++
 	xpc3250.dll!nsXPConnect::GetNativeOfJSObject(JSContext * 
aJSContext=0x00bfe268, JSObject * aJSObj=0x0394ee08, const nsID & aIID={...}, 
void * * result=0x00033e38)  Line 1377 + 0x1d	C++
 	caps.dll!nsScriptSecurityManager::CheckObjectAccess(JSContext * 
cx=0x00bfe268, JSObject * obj=0x0394ee08, long id=12686708, JSAccessMode 
mode=JSACC_PROTO, long * vp=0x000348a4)  Line 465 + 0x3b	C++
 	js3250.dll!js_CheckAccess(JSContext * cx=0x00bfe268, JSObject * 
obj=0x0394ee08, long id=12648656, JSAccessMode mode=JSACC_PROTO, long * 
vp=0x000348a4, unsigned int * attrsp=0x00033ee8)  Line 3482 + 0x4c	C
 	js3250.dll!obj_getSlot(JSContext * cx=0x00bfe268, JSObject * 
obj=0x0394ee08, long id=1, long * vp=0x000348a4)  Line 156 + 0x23	C
 	js3250.dll!js_GetProperty(JSContext * cx=0x00bfe268, JSObject * 
obj=0x0394ee08, long id=12648656, long * vp=0x000348a4)  Line 2842 + 0xf8
	C
 	js3250.dll!js_Interpret(JSContext * cx=0x00bfe268, unsigned char * 
pc=0x0396a6e1, long * result=0x000349f4)  Line 3285 + 0x62e	C
 	js3250.dll!js_Invoke(JSContext * cx=0x00bfe268, unsigned int argc=1, 
unsigned int flags=2)  Line 1183 + 0x13	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x00bfe268, JSObject * 
obj=0x0394ee08, long fval=60091360, unsigned int flags=0, unsigned int argc=1, 
long * argv=0x00034b04, long * rval=0x00034b38)  Line 1260 + 0x14	C
 	js3250.dll!JS_CallFunctionValue(JSContext * cx=0x00bfe268, JSObject * 
obj=0x0394ee08, long fval=60091360, unsigned int argc=1, long * 
argv=0x00034b04, long * rval=0x00034b38)  Line 4048 + 0x1f	C
 	xpc3250.dll!nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject
(XPCCallContext & ccx={...}, JSObject * jsobj=0x0394ee08, const nsID & aIID=
{...})  Line 373 + 0x1c	C++
 	xpc3250.dll!nsXPCWrappedJSClass::GetRootJSObject(XPCCallContext & ccx=
{...}, JSObject * aJSObj=0x0394ee08)  Line 718 + 0x16	C++
 	xpc3250.dll!nsXPCWrappedJS::GetUsedOnly(XPCCallContext & ccx={...}, 
JSObject * aJSObj=0x0394ee08, const nsID & aIID={...}, nsISupports * 
aOuter=0x00000000, nsXPCWrappedJS * * wrapperResult=0x00034bd0)  Line 342 + 0x10
	C++
 	xpc3250.dll!XPCConvert::JSObject2NativeInterface(XPCCallContext & ccx=
{...}, void * * dest=0x00034cb8, JSObject * src=0x0394ee08, const nsID * 
iid=0x015bea20, nsISupports * aOuter=0x00000000, int createNew=0, unsigned int 
* pErr=0x00034c0c)  Line 1192 + 0x19	C++
 	xpc3250.dll!nsXPConnect::GetNativeOfJSObject(JSContext * 
aJSContext=0x00bfe268, JSObject * aJSObj=0x0394ee08, const nsID & aIID={...}, 
void * * result=0x00034cb8)  Line 1377 + 0x1d	C++
 	caps.dll!nsScriptSecurityManager::CheckObjectAccess(JSContext * 
cx=0x00bfe268, JSObject * obj=0x0394ee08, long id=12686708, JSAccessMode 
mode=JSACC_PROTO, long * vp=0x00035724)  Line 465 + 0x3b	C++
...
If js_Interpret is on the stack, then there are several limits on stack use
already in effect.  If they didn't help, why not?  We use a generous 500K or so
stack limit now.  If your app is not using that, this is your bug.

/be
in case people are wondering:
+	(*((*((*cx).fp)).script)).filename
	0x03962309 "file:///R:/mozilla/all-i686-pc-
cygwin/dist/bin/components/calEvent.js"	const char *

is the thing that's in at least the top 5 js frames
brendan: this is seamonkey.exe
i set a breakpoint at 

JS_SetThreadStackLimit(JSContext *, unsigned long)
condition: (no condition)
hit count: break always (currently 0)

per http://lxr.mozilla.org/seamonkey/ident?i=JS_SetThreadStackLimit
it's only used in dom, not xpconnect

here's the bottom of the stack:
>	js3250.dll!js_Invoke(JSContext * cx=0x00bfe268, unsigned int argc=0, 
unsigned int flags=2)  Line 846	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x00bfe268, JSObject * 
obj=0x00c19cb8, long fval=12689864, unsigned int flags=0, unsigned int argc=0, 
long * argv=0x00000000, long * rval=0x0012f84c)  Line 1260 + 0x14	C
 	js3250.dll!js_InternalGetOrSet(JSContext * cx=0x00bfe268, JSObject * 
obj=0x00c19cb8, long id=12574584, long fval=12689864, JSAccessMode 
mode=JSACC_READ, unsigned int argc=0, long * argv=0x00000000, long * 
rval=0x0012f84c)  Line 1303 + 0x1f	C
 	js3250.dll!js_GetProperty(JSContext * cx=0x00bfe268, JSObject * 
obj=0x00c19cb8, long id=12574584, long * vp=0x0012f84c)  Line 2842 + 0x30
	C
 	js3250.dll!js_Interpret(JSContext * cx=0x00bfe268, unsigned char * 
pc=0x00c570d8, long * result=0x0012f8c4)  Line 3285 + 0x62e	C
 	js3250.dll!js_Execute(JSContext * cx=0x00bfe268, JSObject * 
chain=0x00c19bd8, JSScript * script=0x00c57090, JSStackFrame * down=0x00000000, 
unsigned int flags=0, long * result=0x0012f9b0)  Line 1393 + 0x13	C
 	js3250.dll!JS_ExecuteScript(JSContext * cx=0x00bfe268, JSObject * 
obj=0x00c19bd8, JSScript * script=0x00c57090, long * rval=0x0012f9b0)  Line 
3874 + 0x19	C
 	xpc3250.dll!mozJSComponentLoader::GlobalForLocation(const char * 
aLocation=0x00bae430, nsIFile * component=0x00b78be0)  Line 944 + 0x1e	C++
 	xpc3250.dll!mozJSComponentLoader::ModuleForLocation(const char * 
registryLocation=0x00bae430, nsIFile * component=0x00b78be0)  Line 708 + 0x10
	C++
 	xpc3250.dll!mozJSComponentLoader::AttemptRegistration(nsIFile * 
component=0x00b78be0, int deferred=0)  Line 544 + 0x18	C++
 	xpc3250.dll!mozJSComponentLoader::AutoRegisterComponent(int when=0, 
nsIFile * component=0x00b78be0, int * registered=0x0012fce0)  Line 470 + 0xe
	C++
 	xpc3250.dll!mozJSComponentLoader::RegisterComponentsInDir(int when=0, 
nsIFile * dir=0x00b834f0)  Line 378 + 0x18	C++
 	xpc3250.dll!mozJSComponentLoader::AutoRegisterComponents(int when=0, 
nsIFile * aDirectory=0x00b834f0)  Line 335	C++
 	xpcom_core.dll!nsComponentManagerImpl::AutoRegisterNonNativeComponents
(nsIFile * spec=0x00b834f0)  Line 3267 + 0x2f	C++
 	xpcom_core.dll!nsComponentManagerImpl::AutoRegisterImpl(int when=0, 
nsIFile * inDirSpec=0x00000000, int fileIsCompDir=1)  Line 3237 + 0x14	C++
 	xpcom_core.dll!nsComponentManagerImpl::AutoRegister(nsIFile * 
aSpec=0x00000000)  Line 3411 + 0x13	C++
 	xpcom_core.dll!NS_InitXPCOM3_P(nsIServiceManager * * result=0x00000000, 
nsIFile * binDirectory=0x00000000, nsIDirectoryServiceProvider * 
appFileLocationProvider=0x00000000, const nsStaticModuleInfo * 
staticComponents=0x00000000, unsigned int componentCount=0)  Line 607	C++
 	seamonkey.exe!main(int argc=1, char * * argv=0x00349160)  Line 1686 + 
0x10	C++
 	seamonkey.exe!mainCRTStartup()  Line 398 + 0x11	C
 	kernel32.dll!_BaseProcessStart@4()  + 0x23	
This is xpconnect, not jseng.

/be
Status: UNCONFIRMED → NEW
Component: JavaScript Engine → XPConnect
Ever confirmed: true
Assignee: general → dbradley
QA Contact: general → pschwartau
this also adds reporting which i needed to track down another problem and has
some other changes, each change could be split into its own bug if requested...
Assignee: dbradley → timeless
Status: NEW → ASSIGNED
Attachment #195265 - Flags: superreview?(brendan)
Attachment #195265 - Flags: review?(shaver)
Depends on: 309337
No longer depends on: 309337
Comment on attachment 195265 [details] [diff] [review]
draft to add stack limits for componentloader

Not going to get to this soon, so clearing review flag.  You can re-request, and I won't mind, but don't expect to get a review this quarter unless you get lucky.  (Automatable test cases have been known to improve one's luck.)
Attachment #195265 - Flags: review?(shaver)
Attachment #195265 - Flags: review?(dbradley)

*** This bug has been marked as a duplicate of 342854 ***
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → DUPLICATE
Attachment #195265 - Flags: superreview?(brendan)
Attachment #195265 - Flags: review?(dbradley)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: