Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
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: v8/v8@26d85ac

PR-URL: #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>
  • Loading branch information
targos committed Jun 11, 2021
commit fd88ec21681b2260f755709d998a7c731e015679
2 changes: 1 addition & 1 deletion test/abort/test-abort-uncaught-exception.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion test/abort/test-worker-abort-uncaught-exception.js
Original file line number Diff line number Diff line change
Expand Up @@ -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}`);
Expand Down
6 changes: 3 additions & 3 deletions test/common/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-windows-failed-heap-allocation.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}));