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: https://github.com/nodejs/node/pull/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>
This commit is contained in:
parent
30989d30db
commit
b73b903dc4
@ -26,10 +26,12 @@ Error.stackTraceLimit = 0;
|
||||
|
||||
console.error('before');
|
||||
|
||||
// stack overflow
|
||||
function stackOverflow() {
|
||||
stackOverflow();
|
||||
// Trigger stack overflow by stringifying a deeply nested array.
|
||||
let array = [];
|
||||
for (let i = 0; i < 100000; i++) {
|
||||
array = [ array ];
|
||||
}
|
||||
stackOverflow();
|
||||
|
||||
JSON.stringify(array);
|
||||
|
||||
console.error('after');
|
||||
|
@ -1,6 +1,6 @@
|
||||
before
|
||||
|
||||
*test*message*stack_overflow.js:*
|
||||
function stackOverflow() {
|
||||
^
|
||||
JSON.stringify(array);
|
||||
^
|
||||
|
||||
RangeError: Maximum call stack size exceeded
|
||||
|
Loading…
x
Reference in New Issue
Block a user