summaryrefslogtreecommitdiff
path: root/test/abort/test-abort-uncaught-exception.js
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2017-11-29 20:55:43 +0100
committerAnna Henningsen <anna@addaleax.net>2017-12-05 23:49:36 +0100
commitb73e66e94918aa89643b982cd3164100d02ec997 (patch)
treee23a4188d6330d7ea7bd34e9c04689c6f032cc5c /test/abort/test-abort-uncaught-exception.js
parentaeddc3676bc9afe940106d34f30523f27b4cb44f (diff)
downloadandroid-node-v8-b73e66e94918aa89643b982cd3164100d02ec997.tar.gz
android-node-v8-b73e66e94918aa89643b982cd3164100d02ec997.tar.bz2
android-node-v8-b73e66e94918aa89643b982cd3164100d02ec997.zip
vm: never abort on caught syntax error
Keep track of C++ `TryCatch` state to avoid aborting when an exception is thrown inside one, and re-throw in JS to make sure the exception is being picked up a second time by a second uncaught exception handler, if necessary. Add a bit of a hack to `AppendExceptionLine` to avoid overriding the line responsible for re-throwing the exception. PR-URL: https://github.com/nodejs/node/pull/17394 Fixes: https://github.com/nodejs/node/issues/13258 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/abort/test-abort-uncaught-exception.js')
-rw-r--r--test/abort/test-abort-uncaught-exception.js15
1 files changed, 11 insertions, 4 deletions
diff --git a/test/abort/test-abort-uncaught-exception.js b/test/abort/test-abort-uncaught-exception.js
index 4acddf349c..718f456c97 100644
--- a/test/abort/test-abort-uncaught-exception.js
+++ b/test/abort/test-abort-uncaught-exception.js
@@ -3,17 +3,24 @@
const common = require('../common');
const assert = require('assert');
const spawn = require('child_process').spawn;
+const vm = require('vm');
const node = process.execPath;
if (process.argv[2] === 'child') {
throw new Error('child error');
+} else if (process.argv[2] === 'vm') {
+ // Refs: https://github.com/nodejs/node/issues/13258
+ // This *should* still crash.
+ new vm.Script('[', {});
} else {
- run('', null);
- run('--abort-on-uncaught-exception', ['SIGABRT', 'SIGTRAP', 'SIGILL']);
+ run('', 'child', null);
+ run('--abort-on-uncaught-exception', 'child',
+ ['SIGABRT', 'SIGTRAP', 'SIGILL']);
+ run('--abort-on-uncaught-exception', 'vm', ['SIGABRT', 'SIGTRAP', 'SIGILL']);
}
-function run(flags, signals) {
- const args = [__filename, 'child'];
+function run(flags, argv2, signals) {
+ const args = [__filename, argv2];
if (flags)
args.unshift(flags);