Browse Source

src: honor --abort_on_uncaught_exception flag

Fix regression introduced in 0af4c9ea74
that ignores the --abort-on-uncaught-exception flag. Prior to that
commit, the flag was passed through to v8. After that commit, the
process just calls exit(1).

PR-URL: https://github.com/nodejs/node/pull/2776
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
v5.x
Evan Lucas 9 years ago
parent
commit
921f2de6cf
  1. 6
      src/node.cc
  2. 31
      test/abort/test-abort-uncaught-exception.js

6
src/node.cc

@ -2180,7 +2180,11 @@ void FatalException(Isolate* isolate,
if (false == caught->BooleanValue()) { if (false == caught->BooleanValue()) {
ReportException(env, error, message); ReportException(env, error, message);
exit(1); if (abort_on_uncaught_exception) {
ABORT();
} else {
exit(1);
}
} }
} }

31
test/abort/test-abort-uncaught-exception.js

@ -0,0 +1,31 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const spawn = require('child_process').spawn;
const node = process.execPath;
if (process.argv[2] === 'child') {
throw new Error('child error');
} else {
run('', null);
run('--abort-on-uncaught-exception', 'SIGABRT');
}
function run(flags, signal) {
const args = [__filename, 'child'];
if (flags)
args.unshift(flags);
const child = spawn(node, args);
child.on('exit', common.mustCall(function(code, sig) {
if (!common.isWindows) {
assert.strictEqual(sig, signal);
} else {
if (signal)
assert.strictEqual(code, 3);
else
assert.strictEqual(code, 1);
}
}));
}
Loading…
Cancel
Save