Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 830949c

Browse filesBrowse 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
Copy full SHA for 830949c

File tree

Expand file treeCollapse file tree

2 files changed

+9
-7
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+9
-7
lines changed
Open diff view settings
Collapse file

‎test/message/stack_overflow.js‎

Copy file name to clipboardExpand all lines: test/message/stack_overflow.js
+6-4Lines changed: 6 additions & 4 deletions
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');
Collapse file

‎test/message/stack_overflow.out‎

Copy file name to clipboard
+3-3Lines changed: 3 additions & 3 deletions
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.