Closed Bug 547086 Opened 15 years ago Closed 15 years ago

js_TryMethod suppresses "too much recursion" exception, going in circles indefinitely

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: gal, Assigned: gal)

References

Details

(Whiteboard: fixed-in-tracemonkey)

Attachments

(1 file)

No description provided.
Attached patch patchSplinter Review
Assignee: general → gal
Attachment #427657 - Flags: review?(mrbkap)
Attachment #427657 - Flags: review?(mrbkap) → review+
Whiteboard: fixed-in-tracemonkey
from tracemonkey tinderbox with this checkin: begin test: ecma/GlobalObject/15.1-2-n.js 15.1-2-n The Global Object TEST-UNEXPECTED-FAIL | automation.py | Exited with code 11 during test run INFO | automation.py | Application ran for: 0:02:10.836400 INFO | automation.py | Reading PID log: /tmp/tmptvYAC5pidlog PROCESS-CRASH | automation.py | application crashed (minidump found) Operating system: Linux 0.0.0 Linux 2.6.18-53.1.19.el5 #1 SMP Wed May 7 08:20:19 EDT 2008 i686 CPU: x86 GenuineIntel family 6 model 23 stepping 8 1 CPU Crash reason: SIGSEGV Crash address: 0xc Thread 0 (crashed) 0 libmozjs.so!js_ComputeThis [jsapi.h:10a40c748aed : 177 + 0x0] eip = 0x00180372 esp = 0xbfa299f4 ebp = 0xbfa29a3c ebx = 0x002773dc esi = 0xb2ee2c00 edi = 0xad5ee068 eax = 0x00000000 ecx = 0x00000000 edx = 0x00000001 efl = 0x00010246 Found by: given as instruction pointer in context 1 libmozjs.so!js_Invoke [jsinterp.cpp:10a40c748aed : 1217 + 0x1c] eip = 0x0018074d esp = 0xbfa29a44 ebp = 0xbfa29b1c Found by: previous frame's frame pointer 2 libmozjs.so!js_Interpret [jsops.cpp:10a40c748aed : 2303 + 0x20] eip = 0x00171649 esp = 0xbfa29b24 ebp = 0xbfa29dfc Found by: previous frame's frame pointer 3 libmozjs.so!js_Execute [jsinterp.cpp:10a40c748aed : 1665 + 0xa] eip = 0x0017fe72 esp = 0xbfa29e04 ebp = 0xbfa29ebc Found by: previous frame's frame pointer
sayrer backed this out in http://hg.mozilla.org/tracemonkey/rev/767ed57a7bbd at my urging but this is still crashing. It didn't crash in the check in prior to http://hg.mozilla.org/tracemonkey/rev/10a40c748aed however. I'll bisect and report back.
I fingered the wrong patch. regression changeset: 38099:a4df44da864c user: Andreas Gal <gal@mozilla.com> date: Fri Feb 19 17:31:44 2010 -0800 summary: Remove LiveConnect kludge from call path (1.9.3 will not have LiveConnect according to jst, r=brendan).
Working on it.
With current TM tip (shell). Trying xpcshell next. whale:tests gal$ ./jsDriver.pl -f /dev/stdout -e smdebug -s ../Darwin_DBG.OBJ/js -l ecma/GlobalObject/15.1-2-n.js -#- Executing 1 test(s). <html><head> <title>Test results, smdebug</title> </head> <body bgcolor='white'> <a name='tippy_top'></a> <h2>Test results, smdebug</h2><br> <p class='results_summary'> Test List: ecma/GlobalObject/15.1-2-n.js<br> Skip List: (none)<br> 1 test(s) selected, 1 test(s) completed, 0 failures reported (0% failed)<br> Engine command line: ../Darwin_DBG.OBJ/js <br> OS type: Darwin whale.local 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov 3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386<br> Testcase execution time: 0 seconds.<br> Tests completed on Sat Feb 20 11:34:59 2010.<br><br> <h1>Whoop-de-doo, nothing failed!</h1> </body>-#- Wrote results to '/dev/stdout'. whale:tests gal$
try firefox ./jsreftest.html?test=ecma/GlobalObject/15.1-2-n.js from the js/src/tests dir.
The above command line doesn't find the file. If I specify a full path, a dialog asks for special permissions. If I click on ok, a small dialog box appears with no text and two buttons without labels. Its modal and neither button is active. Can you give me the precise command line and path how I can run the test in the browser?
Worth putting back this bug's patch and backing out the real regressor's patch? /be
yeah, I'll reland it.
I found the problem. I need mrbkap for the review though. I will see if Brendan can help.
python firefox-debug/_tests/reftest/runreftest.py --debugger=gdb --extra-profile-file=js/src/tests/user.js js/src/tests/ecma/GlobalObject/jstests.list the command line in comment 8 will work if you copy the js/src/tests/user.js to your profile.
njn reported this: s: win32-slave56REFTEST TEST-UNEXPECTED-PASS file:///e:/builds/moz2_slave/tracemonkey-win32-debug-unittest-jsreftest/build/jsreftest/tests/jsreftest.html?test=js1_5/extensions/regress-322957.js | TryMethod should not eat getter exceptions item 1
Igor wrote the original test. It was set to expected-fail. It passes now since we fixed the bug. It makes me wonder why we never fixed this before though. Igor?
(In reply to comment #16) > Igor wrote the original test. It was set to expected-fail. It passes now since > we fixed the bug. It makes me wonder why we never fixed this before though. IIRC there was some compatibility worries as TryMethod was supposed to just query if method exists, it was not expected to throw exceptions. But that is not true any longer and we should fix the suite to require the test to pass.
I am wondering whether this is also related to this bug: TEST-UNEXPECTED-FAIL | /builds/slave/tracemonkey-linux-opt-unittest-xpcshell/build/xpcshell/tests/test_places/queries/test_tags.js | test failed (with xpcshell return code: 0), see following log: >>>>>>> TEST-INFO | (xpcshell/head.js) | test 1 pending TEST-PASS | /builds/slave/tracemonkey-linux-opt-unittest-xpcshell/build/xpcshell/tests/test_places/queries/head_queries.js | [check_no_bookmarks : 501] 0 == 0 Running test: Tags getter/setter should work correctly Without setting tags, tags getter should return empty array
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Flags: in-testsuite+
Blocks: 566818
No longer blocks: 566818
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: