From c1b36fa845c4257cba55203b3770e8727bf29dd7 Mon Sep 17 00:00:00 2001 From: Praveen Date: Wed, 29 Jul 2026 13:33:00 -0400 Subject: [PATCH] fix(dev): exit non-zero when Electron is killed by a signal `ChildProcess`'s `close` event fires as `(code, signal)` and `code` is null when the child was terminated by a signal. `process.exit` ignores its second argument and coerces null to 0, so passing the listener directly reports every signal death as a successful exit. Handle the two arguments explicitly so a signal death exits non-zero. --- src/electron.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/electron.ts b/src/electron.ts index 5704504..9449e11 100644 --- a/src/electron.ts +++ b/src/electron.ts @@ -159,7 +159,10 @@ export function startElectron(root: string | undefined): ChildProcess { const entry = process.env.ELECTRON_ENTRY || '.' const ps = spawn(electronPath, [entry].concat(args), { stdio: 'inherit' }) - ps.on('close', process.exit) + // `code` is null when the child was terminated by a signal, and `process.exit` ignores + // its second argument, so passing the listener directly would report every crash as a + // successful exit. Map a signal death to a non-zero status instead. + ps.on('close', (code, signal) => process.exit(code ?? (signal ? 1 : 0))) return ps }