Skip to content

Commit

Permalink
src: honor --abort_on_uncaught_exception flag
Browse files Browse the repository at this point in the history
Fix regression introduced in 0af4c9e
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: nodejs#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>
  • Loading branch information
evanlucas committed Sep 17, 2015
1 parent 870229e commit 921f2de
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2180,7 +2180,11 @@ void FatalException(Isolate* isolate,

if (false == caught->BooleanValue()) {
ReportException(env, error, message);
exit(1);
if (abort_on_uncaught_exception) {
ABORT();
} else {
exit(1);
}
}
}

Expand Down
31 changes: 31 additions & 0 deletions test/abort/test-abort-uncaught-exception.js
Original file line number Diff line number Diff line change
@@ -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);
}
}));
}

0 comments on commit 921f2de

Please sign in to comment.