Status: New
Owner: ----
New issue 1925 by [email protected]: Non-Deterministic behavior on simple
benchmark
http://code.google.com/p/v8/issues/detail?id=1925
I have a little JS benchmark performing Loop Recognition. I'm running it on
v8. Most of the time it succeeds, but "sometimes" it just stops with
Maximum call stack size exceeded. I can't figure out why this happens,
naive looking at the compile/recompile traces doesn't reveal any pattern.
Sample output:
$d8 ./LoopTesterApp.js
Welcome to LoopTesterApp, JavaScript edition
Constructing Simple CFG...
15000 dummy loops
found 1
Constructing CFG...
Performing Loop Recognition
1 Iteration
Another 100 iterations...
Found n 3801 loops (including artificial root node)
# run a couple of more times, all succeed. Then:
$d8 ./LoopTesterApp.js
Welcome to LoopTesterApp, JavaScript edition
Constructing Simple CFG...
15000 dummy loops
found 1
Constructing CFG...
Performing Loop Recognition
1 Iteration
Another 100 iterations...
./LoopTesterApp.js:0: RangeError: Maximum call stack size exceeded
// Copyright 2012 Google Inc.
^
undefined
Command exited with non-zero status 1
Note that the error message and source position seems to change, depending
on time of day. Here is another one:
./LoopTesterApp.js:31: RangeError: Maximum call stack size exceeded
BasicBlock.prototype.toString = function() {
^
undefined
Sometimes this benchmark always succeeds, sometimes it never succeeds, most
often, it mostly succeeds. The benchmark has an outer loop going to 25 at
the bottom. Tweaking this value seems to change behavior. Making it smaller
always seems to make it work, making it larger - weird things can happen,
crashes with yet other error messages.
Thanks
Robert
Attachments:
LoopTesterApp.js 17.3 KB
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev