mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
test: adapt abort tests for new Windows code
V8 9.1 changed the way it aborts on uncaught exceptions on Windows.
It now uses the code 0x80000003 (exception breakpoint) instead of
0xC0000005 (access violation).
Refs: 26d85acee2
PR-URL: https://github.com/nodejs/node/pull/38273
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
Reviewed-By: Mary Marchini <oss@mmarchini.me>
This commit is contained in:
parent
ce4b4cc0af
commit
82b44f465b
@ -28,7 +28,7 @@ function run(flags, argv2, signals) {
|
||||
child.on('exit', common.mustCall(function(code, sig) {
|
||||
if (common.isWindows) {
|
||||
if (signals)
|
||||
assert.strictEqual(code, 0xC0000005);
|
||||
assert.strictEqual(code, 0x80000003);
|
||||
else
|
||||
assert.strictEqual(code, 1);
|
||||
} else if (signals) {
|
||||
|
@ -16,7 +16,7 @@ const child = spawn(process.execPath, [
|
||||
]);
|
||||
child.on('exit', common.mustCall((code, sig) => {
|
||||
if (common.isWindows) {
|
||||
assert.strictEqual(code, 0xC0000005);
|
||||
assert.strictEqual(code, 0x80000003);
|
||||
} else {
|
||||
assert(['SIGABRT', 'SIGTRAP', 'SIGILL'].includes(sig),
|
||||
`Unexpected signal ${sig}`);
|
||||
|
@ -498,12 +498,12 @@ function nodeProcessAborted(exitCode, signal) {
|
||||
const expectedSignals = ['SIGILL', 'SIGTRAP', 'SIGABRT'];
|
||||
|
||||
// On Windows, 'aborts' are of 2 types, depending on the context:
|
||||
// (i) Forced access violation, if --abort-on-uncaught-exception is on
|
||||
// which corresponds to exit code 3221225477 (0xC0000005)
|
||||
// (i) Exception breakpoint, if --abort-on-uncaught-exception is on
|
||||
// which corresponds to exit code 2147483651 (0x80000003)
|
||||
// (ii) Otherwise, _exit(134) which is called in place of abort() due to
|
||||
// raising SIGABRT exiting with ambiguous exit code '3' by default
|
||||
if (isWindows)
|
||||
expectedExitCodes = [0xC0000005, 134];
|
||||
expectedExitCodes = [0x80000003, 134];
|
||||
|
||||
// When using --abort-on-uncaught-exception, V8 will use
|
||||
// base::OS::Abort to terminate the process.
|
||||
|
@ -23,6 +23,6 @@ const cmd = `"${process.execPath}" --max-old-space-size=3 "${__filename}"`;
|
||||
exec(`${cmd} heapBomb`, { cwd: tmpdir.path }, common.mustCall((err) => {
|
||||
const msg = `Wrong exit code of ${err.code}! Expected 134 for abort`;
|
||||
// Note: common.nodeProcessAborted() is not asserted here because it
|
||||
// returns true on 134 as well as 0xC0000005 (V8's base::OS::Abort)
|
||||
// returns true on 134 as well as 0x80000003 (V8's base::OS::Abort)
|
||||
assert.strictEqual(err.code, 134, msg);
|
||||
}));
|
||||
|
Loading…
Reference in New Issue
Block a user