mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
Since V8 5.9 V8 installs a default signal handler for some signals when creating a default platform instance that prints a stack trace. However, Node already does the same thing, so it would seem like the two different stack traces would be printed; also, the V8 handler would lead to a `SIGSEGV` under some circumstances, rather than letting the abort continue normally. Resolve this by disabling V8’s signal handler by default. Backport-PR-URL: https://github.com/nodejs/node/pull/14574 Backport-Reviewed-By: Anna Henningsen <anna@addaleax.net> Backport-Reviewed-By: Refael Ackermann <refack@gmail.com> PR-URL: https://github.com/nodejs/node/pull/13985 Fixes: https://github.com/nodejs/node/issues/13865 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
25 lines
718 B
JavaScript
25 lines
718 B
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
|
|
// This test makes sure that an aborted node process
|
|
// exits with code 3 on Windows, and SIGABRT on POSIX.
|
|
// Spawn a child, force an abort, and then check the
|
|
// exit code in the parent.
|
|
|
|
const spawn = require('child_process').spawn;
|
|
if (process.argv[2] === 'child') {
|
|
process.abort();
|
|
} else {
|
|
const child = spawn(process.execPath, [__filename, 'child']);
|
|
child.on('exit', common.mustCall((code, signal) => {
|
|
if (common.isWindows) {
|
|
assert.strictEqual(code, 3);
|
|
assert.strictEqual(signal, null);
|
|
} else {
|
|
assert.strictEqual(code, null);
|
|
assert.strictEqual(signal, 'SIGABRT');
|
|
}
|
|
}));
|
|
}
|