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

Reply via email to