@@ -44,6 +44,7 @@ const selectRootWindowState = ({ rootWindowState }: RootState): WindowState =>
4444
4545let _rootWindow : BrowserWindow ;
4646let tempWindow : BrowserWindow ;
47+ let crashHandlerRegistered = false ;
4748
4849export const getRootWindow = ( ) : Promise < BrowserWindow > =>
4950 new Promise ( ( resolve , reject ) => {
@@ -517,31 +518,35 @@ export const showRootWindow = async (): Promise<void> => {
517518 const browserWindow = await getRootWindow ( ) ;
518519
519520 // Handle renderer process crashes
520- browserWindow . webContents . on (
521- 'render-process-gone' ,
522- async ( _event , details ) => {
523- console . error ( 'Renderer process crashed:' , details . reason ) ;
524- try {
525- const { session } = browserWindow . webContents ;
526- await session . clearCache ( ) ;
527- await session . clearStorageData ( {
528- storages : [
529- 'cookies' ,
530- 'indexdb' ,
531- 'filesystem' ,
532- 'shadercache' ,
533- 'websql' ,
534- 'serviceworkers' ,
535- 'cachestorage' ,
536- ] ,
537- } ) ;
538- console . log ( 'Cache cleared. Reloading window...' ) ;
539- browserWindow . reload ( ) ;
540- } catch ( error ) {
541- console . error ( 'Failed to recover from crash:' , error ) ;
521+ if ( ! crashHandlerRegistered ) {
522+ crashHandlerRegistered = true ;
523+
524+ browserWindow . webContents . on (
525+ 'render-process-gone' ,
526+ async ( _event , details ) => {
527+ console . error ( 'Renderer process crashed:' , details . reason ) ;
528+ try {
529+ const { session } = browserWindow . webContents ;
530+ await session . clearCache ( ) ;
531+ await session . clearStorageData ( {
532+ storages : [
533+ 'cookies' ,
534+ 'indexdb' ,
535+ 'filesystem' ,
536+ 'shadercache' ,
537+ 'websql' ,
538+ 'serviceworkers' ,
539+ 'cachestorage' ,
540+ ] ,
541+ } ) ;
542+ console . log ( 'Cache cleared. Reloading window...' ) ;
543+ browserWindow . reload ( ) ;
544+ } catch ( error ) {
545+ console . error ( 'Failed to recover from crash:' , error ) ;
546+ }
542547 }
543- }
544- ) ;
548+ ) ;
549+ }
545550
546551 browserWindow . loadFile ( path . join ( app . getAppPath ( ) , 'app/index.html' ) ) ;
547552
0 commit comments