aboutsummaryrefslogtreecommitdiff
path: root/test/message/stack_overflow.js
diff options
context:
space:
mode:
authorYang Guo <yangguo@chromium.org>2017-03-08 12:42:31 +0100
committerFranziska Hinkelmann <franziska.hinkelmann@gmail.com>2017-04-21 11:46:19 +0200
commitb73b903dc40bf97f1094e99ed3a95927b2185e5a (patch)
tree7b913f3c8024c6481e7eb8f6bf9aed45d69195d3 /test/message/stack_overflow.js
parent30989d30db190e42dd113ce841b2f1d91e56424e (diff)
downloadandroid-node-v8-b73b903dc40bf97f1094e99ed3a95927b2185e5a.tar.gz
android-node-v8-b73b903dc40bf97f1094e99ed3a95927b2185e5a.tar.bz2
android-node-v8-b73b903dc40bf97f1094e99ed3a95927b2185e5a.zip
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>
Diffstat (limited to 'test/message/stack_overflow.js')
-rw-r--r--test/message/stack_overflow.js10
1 files changed, 6 insertions, 4 deletions
diff --git a/test/message/stack_overflow.js b/test/message/stack_overflow.js
index 46e101b916..9541ee7840 100644
--- a/test/message/stack_overflow.js
+++ b/test/message/stack_overflow.js
@@ -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');