Skip to content

Commit 830949c

Browse files
hashseedMylesBorins
authored andcommitted
test: use JSON.stringify to trigger stack overflow
V8's interpreter performs stack checks both at the call site and at the function entry. A recursive function could therefore trigger stack overflow at two different source locations. Instead of recursion, call JSON.stringify on a deeply nested array. PR-URL: #12481 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 278e8cc commit 830949c

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

test/message/stack_overflow.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ Error.stackTraceLimit = 0;
55

66
console.error('before');
77

8-
// stack overflow
9-
function stackOverflow() {
10-
stackOverflow();
8+
// Trigger stack overflow by stringifying a deeply nested array.
9+
let array = [];
10+
for (let i = 0; i < 100000; i++) {
11+
array = [ array ];
1112
}
12-
stackOverflow();
13+
14+
JSON.stringify(array);
1315

1416
console.error('after');

test/message/stack_overflow.out

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
before
2-
32
*test*message*stack_overflow.js:*
4-
function stackOverflow() {
5-
^
3+
JSON.stringify(array);
4+
^
5+
66
RangeError: Maximum call stack size exceeded

0 commit comments

Comments
 (0)