diff --git a/src/bun/browser.ts b/src/bun/browser.ts index 14d3f27..1f1acbb 100644 --- a/src/bun/browser.ts +++ b/src/bun/browser.ts @@ -41,9 +41,20 @@ async function runWebview (events: EventEmitter, params: BrowserParams) return new Promise((resolve, reject) => { + + const handleExit = () => + { + resolve(true); + console.log("Terminating Webview Worker"); + webviewWorker.terminate(); + }; + webviewWorker.addEventListener('error', e => { console.error(e.message); + events.removeListener('exitapp', handleExit); + // error doesn't termiate the worker, make sure it's unalived + webviewWorker.terminate(); reject(e.error); }); @@ -56,12 +67,7 @@ async function runWebview (events: EventEmitter, params: BrowserParams) } }); - events.on('exitapp', () => - { - resolve(true); - console.log("Terminating Webview Worker"); - webviewWorker.terminate(); - }); + events.on('exitapp', handleExit); }); } @@ -94,6 +100,7 @@ async function runBrowser (events: EventEmitter, params: BrowserParams) { events.on('exitapp', () => { + console.log("Killing Browser"); killBrowser(browser); resolve(true); }); diff --git a/src/bun/utils/browser-spawner.ts b/src/bun/utils/browser-spawner.ts index 005bf05..0ab7419 100644 --- a/src/bun/utils/browser-spawner.ts +++ b/src/bun/utils/browser-spawner.ts @@ -172,17 +172,10 @@ export async function killBrowser (browser: Subprocess) { if (os.platform() === 'linux') { - // kill chrome by your unique identifier - await $`pkill -KILL -P ${browser.pid}`.quiet().nothrow(); + // we have to force kill the demon spawn for some reason, doesn't respond to SIGTERM + await $`pkill -SIGKILL -P ${browser.pid}`.nothrow(); } else { - browser?.kill(15); + browser?.kill('SIGTERM'); } -} - -// --- Test Run --- -// spawnBrowser({ -// browser: "chrome", -// args: ["--window-size=1024,640", "--force-device-scale-factor=1.25"], -// detached: true -// }); \ No newline at end of file +} \ No newline at end of file