diff --git a/shell/common/crash_reporter/crash_reporter_win.cc b/shell/common/crash_reporter/crash_reporter_win.cc index 045926683a02..6231e4b71ba1 100644 --- a/shell/common/crash_reporter/crash_reporter_win.cc +++ b/shell/common/crash_reporter/crash_reporter_win.cc @@ -28,9 +28,17 @@ namespace { #if defined(_WIN64) int CrashForException(EXCEPTION_POINTERS* info) { auto* reporter = crash_reporter::CrashReporterWin::GetInstance(); - if (reporter->IsInitialized()) + if (reporter->IsInitialized()) { reporter->GetCrashpadClient().DumpAndCrash(info); - return EXCEPTION_CONTINUE_SEARCH; + return EXCEPTION_CONTINUE_SEARCH; + } + + // When there is exception and we do not have crashReporter set up, we just + // let the execution continue and crash, which is the default behavior. + // + // We must not return EXCEPTION_CONTINUE_SEARCH here, as it would end up with + // busy loop when there is no exception handler in the program. + return EXCEPTION_CONTINUE_EXECUTION; } #endif diff --git a/spec/api-crash-reporter-spec.js b/spec/api-crash-reporter-spec.js index 4436cd200b86..602af17141e7 100644 --- a/spec/api-crash-reporter-spec.js +++ b/spec/api-crash-reporter-spec.js @@ -415,6 +415,16 @@ describe('crashReporter module', () => { expect(crashReporter.getParameters()).to.not.have.a.property('hello') }) }) + + describe('when not started', () => { + it('does not prevent process from crashing', (done) => { + const appPath = path.join(fixtures, 'api', 'cookie-app') + const appProcess = childProcess.spawn(process.execPath, [appPath]) + appProcess.once('close', () => { + done() + }) + }) + }) }) const waitForCrashReport = () => { diff --git a/spec/fixtures/crash-app/main.js b/spec/fixtures/crash-app/main.js new file mode 100644 index 000000000000..e27921621882 --- /dev/null +++ b/spec/fixtures/crash-app/main.js @@ -0,0 +1,5 @@ +const { app } = require('electron') + +app.on('ready', () => { + process.crash() +}) diff --git a/spec/fixtures/crash-app/package.json b/spec/fixtures/crash-app/package.json new file mode 100644 index 000000000000..e03fc08f1f79 --- /dev/null +++ b/spec/fixtures/crash-app/package.json @@ -0,0 +1,4 @@ +{ + "name": "electron-crash-app", + "main": "main.js" +}