Closed Bug 271280 Opened 20 years ago Closed 20 years ago

Crash in online lc2 suite - [@ FindConstructor] OBJ_IS_NATIVE

Categories

(Core Graveyard :: Java: Live Connect, defect)

1.7 Branch
x86
Windows XP
defect
Not set
critical

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: bc, Assigned: yuanyi21)

References

()

Details

(Keywords: crash, fixed-aviary1.0.1, fixed1.7.6)

Crash Data

Attachments

(2 files)

Crash running the online version of the javascript test suite for the lc2 suite for Mozilla 1.7.5 and Firefox 1.0 but not Mozilla 1.7.3 or Mozilla trunk. Although this doesn't have in obvious live connect code, filing here to start with. Steps to reproduce: 1. <http://bclary.com/2004/10/03/js-tests/menu.html> 2. select all for lc2 3. click execute test list Result Crash Stack NTDLL! 7c901230() FindConstructor(JSContext * 0x03ee6108, JSObject * 0x00000000, const char * 0x00b9f0b8, long * 0x0012ed88) line 1952 + 63 bytes GetClassPrototype(JSContext * 0x03ee6108, JSObject * 0x02d5d478, const char * 0x00b9f0b8, JSObject * * 0x0012edf0) line 3587 + 21 bytes js_NewObject(JSContext * 0x03ee6108, JSClass * 0x00b9f0d0 prop_iterator_class, JSObject * 0x00000000, JSObject * 0x02d5d478) line 1845 + 23 bytes js_Interpret(JSContext * 0x03ee6108, long * 0x0012f600) line 1901 + 23 bytes js_Execute(JSContext * 0x03ee6108, JSObject * 0x03ee3500, JSScript * 0x032bf078, JSStackFrame * 0x00000000, unsigned int 0, long * 0x0012f718) line 1159 + 13 bytes JS_EvaluateUCScriptForPrincipals(JSContext * 0x03ee6108, JSObject * 0x03ee3500, JSPrincipals * 0x01f6502c, const unsigned short * 0x0401ef38, unsigned int 3867, const char * 0x03de0540, unsigned int 1, long * 0x0012f718) line 3649 + 25 bytes nsJSContext::EvaluateString(const nsAString & {...}, void * 0x03ee3500, nsIPrincipal * 0x01f65028, const char * 0x03de0540, unsigned int 1, const char * 0x00b89430, nsAString & {...}, int * 0x0012f764) line 946 + 67 bytes nsScriptLoader::EvaluateScript(nsScriptLoadRequest * 0x03ce35b8, const nsString & {...}) line 660 nsScriptLoader::ProcessRequest(nsScriptLoadRequest * 0x03ce35b8) line 573 + 22 bytes nsScriptLoader::OnStreamComplete(nsScriptLoader * const 0x04015bf4, nsIStreamLoader * 0x03dd7b88, nsISupports * 0x03ce35b8, unsigned int 0, unsigned int 4294967295, const char * 0x03fa8e84) line 897 nsStreamLoader::OnStopRequest(nsStreamLoader * const 0x03dd7b8c, nsIRequest * 0x03ddbf30, nsISupports * 0x03ce35b8, unsigned int 0) line 144 nsStreamListenerTee::OnStopRequest(nsStreamListenerTee * const 0x03a1d4a8, nsIRequest * 0x03ddbf30, nsISupports * 0x03ce35b8, unsigned int 0) line 66 nsHttpChannel::OnStopRequest(nsHttpChannel * const 0x03ddbf38, nsIRequest * 0x03ad00f0, nsISupports * 0x00000000, unsigned int 0) line 3653 nsInputStreamPump::OnStateStop() line 499 nsInputStreamPump::OnInputStreamReady(nsInputStreamPump * const 0x03ad00f4, nsIAsyncInputStream * 0x03acfed4) line 339 + 11 bytes nsInputStreamReadyEvent::EventHandler(PLEvent * 0x03f173a4) line 119 PL_HandleEvent(PLEvent * 0x03f173a4) line 673 + 10 bytes PL_ProcessPendingEvents(PLEventQueue * 0x00a26538) line 608 + 9 bytes _md_EventReceiverProc(HWND__ * 0x00ec0212, unsigned int 49378, unsigned int 0, long 10642744) line 1414 + 9 bytes USER32! 77d48709() USER32! 77d487eb() USER32! 77d489a5() USER32! 77d489e8() nsAppShell::Run(nsAppShell * const 0x00a48da8) line 135 nsAppShellService::Run(nsAppShellService * const 0x00a48b08) line 524 main1(int 1, char * * 0x002e2638, nsISupports * 0x00a10430) line 1303 + 32 bytes main(int 1, char * * 0x002e2638) line 1781 + 37 bytes mainCRTStartup() line 338 + 17 bytes KERNEL32
e4x stuff?
timeless: what do you mean? FindConstructor is now js_FindConstructor, but do you know something more, or are you just guessing? Bob, what version of the source was used to get the code that crashed with the stack shown in comment 0? /be
(In reply to comment #0) > Crash running the online version of the javascript test suite for the lc2 suite > for Mozilla 1.7.5 and Firefox 1.0 but not Mozilla 1.7.3 or Mozilla trunk. So it's a regression between 1.7.3 and 1.7.5? I can see the crash in a 1.7 branch build, the failed code is JS_ASSERT(OBJ_IS_NATIVE(obj)) the obj here is a JavaArray. Bob, any chance I can see the source code of the test case? The crash happens between testcase 2 and testcase 3. So I need look into array-002.js and array-003.js.
Brendan, I pulled and built 1.7 branch yesterday afternoon to get the stack. Kyle, You can browse the tests at <http://bclary.com/2004/10/03/js-tests/lc2/>, but you can unselect the first three tests and it will still crash. The problem might be in either <http://bclary.com/2004/10/03/js-tests/lc2/shell.js> or <http://bclary.com/2004/10/03/js-tests/lc2/browser.js> as well.
Bob, your site returned 403 when I tried to download the js files. Can you adjust the site settings or send the files directly to me?
Kyle, you should be able to view the directory and files via Mozilla with ease. This is the recommended approach if you only want to look at a few files. I have added <http://bclary.com/2004/10/03/js-tests.zip> so you can download the full test library but it weighs about 3MB. You may have gotten a 403 due to your attempted use of a banned bot. I blocked access to spider/bots Java/* and wget/* due to a) their brain-dead methods of parsing documents and issuing bad requests and b) some people's abuse of my limited bandwidth.
Attached file simplified test case
var byte_array = ( new java.lang.String("hello") ).getBytes(); for ( p in byte_array ) { //<-- this will crah mozilla1.7 ... }
The problem is when we create a new object that wraps JavaArray (http://lxr.mozilla.org/seamonkey/source/js/src/liveconnect/jsj_JavaObject.c#201), we failed to get the parent field set correctly due to this logic (http://lxr.mozilla.org/mozilla1.7/source/js/src/jsobj.c#1861) So next time, when we create a new object based on this JavaArray wrapper, in http://lxr.mozilla.org/mozilla1.7/source/js/src/jsobj.c#1942, we can't get the parent of the JavaArray wrapper. Merging the v3.156 & v3.172 changes of js_NewObject solve the problem. But I don't really understand the rationale of the fix. Brendan?
Attachment #167599 - Flags: review?(brendan)
Attachment #167599 - Flags: approval1.7.6?
Attachment #167599 - Flags: approval1.7.5?
Comment on attachment 167599 [details] [diff] [review] stole the fix of js_NewObject from trunk Yeah, that's the ticket. I'll let other drivers deliberate on 1.7.5 vs. .6. /be
Attachment #167599 - Flags: review?(brendan)
Attachment #167599 - Flags: review+
Brendan, I dropped this line off whem porting the patch - http://lxr.mozilla.org/seamonkey/source/js/src/jsobj.c#1804, because |reserveSlots is not defined in 1.7 branch. Is that a problem?
Kyle: not a problem, you did the right thing. /be
Attachment #167599 - Flags: superreview?(jst)
Summary: Crash in online lc2 suite - FindConstructor OBJ_IS_NATIVE → Crash in online lc2 suite - [@ FindConstructor] OBJ_IS_NATIVE
Comment on attachment 167599 [details] [diff] [review] stole the fix of js_NewObject from trunk sr=jst
Attachment #167599 - Flags: superreview?(jst) → superreview+
Comment on attachment 167599 [details] [diff] [review] stole the fix of js_NewObject from trunk 1.7.5 has shipped. Moving request to 1.7.6.
Attachment #167599 - Flags: approval1.7.5?
kyle: what's the status on this?
still wating for driver's approval for 1.7 branch.
Comment on attachment 167599 [details] [diff] [review] stole the fix of js_NewObject from trunk a=asa for checkin to the 1.7 branch for 1.7.6
Attachment #167599 - Flags: approval1.7.6? → approval1.7.6+
fixed in 1.7 branch.
Status: NEW → RESOLVED
Closed: 20 years ago
Keywords: fixed1.7.6
Resolution: --- → FIXED
Severity: major → critical
Should this have the fixed-aviary1.0.1 keyword? Looks like brendan checked this in on Jan 29
Verified Fixed with 2/21 Aviary 1.0.1 and Mozilla 1.7.6 builds. Testcase no longer crashes. I will keep an eye on Talkback data once the releases go out as well.
Status: RESOLVED → VERIFIED
Product: Core → Core Graveyard
Crash Signature: [@ FindConstructor]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: