blob: 1923b7f24d995dfdfe14e48b84da870814fcf7d9 [file] [edit]
'use strict';
// This test verifies that when the uncaughtException handler itself causes
// a stack overflow, the process exits with a non-zero exit code.
// This is important to ensure we don't silently swallow errors.
require('../common');
const assert = require('assert');
const { spawnSync } = require('child_process');
if (process.argv[2] === 'child') {
function f() { f(); }
process.on('uncaughtException', f);
f();
} else {
// Parent process - spawn the child and check exit code
const result = spawnSync(
process.execPath,
[__filename, 'child'],
{ encoding: 'utf8', timeout: 30000 }
);
// Should exit with non-zero exit code since the uncaughtException handler
// itself caused a stack overflow.
assert.notStrictEqual(result.status, 0,
`Expected non-zero exit code, got ${result.status}.\n` +
`stdout: ${result.stdout}\n` +
`stderr: ${result.stderr}`);
}