Comment #3 on issue 1925 by [email protected]: Non-Deterministic behavior
on simple benchmark
http://code.google.com/p/v8/issues/detail?id=1925
Ok - this strikes me as a VERY superficial analysis of this bug. Here is
why:
1) Most other languages I know, on stack overflow, they let me know my
stack just overflowed, and usually give me the options to increase my stack
size. Are you saying that in V8, you think it is OK to just silently allow
stack overflows, and just rely on luck or time of day for the user to find
a potential problem. You can't be serious.
2) The idea of this benchmark is explicitly to be recursive. Yes, I know I
can write a non-recursive version, but that defeats the purpose.
3) The tree which is DFS traversed is not deep, it is wide. The benchmark
code has 3 loops. The outer loop (to 25) construct 25 parallel nodes from a
top node. The inner loop (2 iters) constructs 2 concatenated subtrees, and
the innermost loop (25) constructs 25 concatenated, 4-deep loop nests. In
other words - the actual depth of the tree is not that deep. So while there
are thousands of calls to DFS, the call stack is never deeper than 50 or so.
4) Even if I change the loop parameters, e.g., outer loop to 10, less than
half the nodes, the benchmark fails sporadically, perhaps with a lower
frequency. This tells me that V8 is not just scraping by.
5) Why would the error message be at different places? This remains
unanswered.
I think my main complaint would be that you think it is Ok to not warn
users explicitly on explcit stack overflows. Oh wait - you do, but - only
once in a while?! This doesn't make sense. Why would this thing only
overflow once in a while.
I further don't see how re-compilation would affect any of this.
So - it is Ok if you don't want to touch this bug again, I keep it as "Work
as Intenden", but I don't think I got the answers I was looking for.
Thanks
Robert
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev