From dd77f3b6b3f405d96f8b3171df97ebb084bf05d6 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Wed, 12 Aug 2026 14:46:39 -0700 Subject: [PATCH] [eric] shell: a crash-cap self-quit leaves a crash report, not a console line (ENG-265) --- electron/main.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/electron/main.js b/electron/main.js index 7925c37e..4e029337 100644 --- a/electron/main.js +++ b/electron/main.js @@ -1829,6 +1829,14 @@ async function showCrashRecoveryOverlay() { cancelId: 1, noLink: true, }); + // Every branch here ends the app or resets its crash budget, and until now the only trace was a + // console line, which is exactly the thing a dead stdout eats (ENG-264). "It just died" stays + // unexplainable while the one moment that explains it goes unrecorded. + crashReports.writeCrashReport('renderer-crash-cap-reached', { + message: 'repeated renderer crashes hit the cap; recovery dialog shown', + choice: result.response === 0 ? 'reload' : 'quit', + crashCount: rendererCrashTimes.length, + }); if (result.response === 0) { rendererCrashTimes = []; recreateMainWindow(); @@ -1836,6 +1844,12 @@ async function showCrashRecoveryOverlay() { app.quit(); } } catch (err) { + // The dialog itself failed, so the app is about to vanish with no window and no explanation. + crashReports.writeCrashReport('crash-recovery-dialog-failed', { + message: String(err && err.message || err), + stack: String(err && err.stack || ''), + crashCount: rendererCrashTimes.length, + }); console.error('[main] showCrashRecoveryOverlay failed:', err && err.message); app.quit(); }