fix: correctly crash when there is no crashReporter (#20395)

* fix: correctly crash when there is no crashReporter

* test: correctly crash when there is crashReporter
This commit is contained in:
trop[bot]
2019-10-01 15:23:16 -04:00
committed by John Kleinschmidt
parent 1f660c67c6
commit 312f14ee88
4 changed files with 29 additions and 2 deletions

View File

@@ -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

View File

@@ -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 = () => {

5
spec/fixtures/crash-app/main.js vendored Normal file
View File

@@ -0,0 +1,5 @@
const { app } = require('electron')
app.on('ready', () => {
process.crash()
})

4
spec/fixtures/crash-app/package.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"name": "electron-crash-app",
"main": "main.js"
}