From 93e3939e72b476dbf2c900698213528f9d9727b7 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Mon, 15 May 2023 16:12:48 -0700 Subject: [PATCH] server: do not crash on xdg-open failure Summary: Previously, clicking a file could crash the isl-server process like: open file /home/quark/tmp/erepos/rs/isl/y.txt node:events:491 throw er; // Unhandled 'error' event ^ Error: spawn xdg-open ENOENT at ChildProcess._handle.onexit (node:internal/child_process:283:19) at onErrorNT (node:internal/child_process:476:16) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) Emitted 'error' event on ChildProcess instance at: at ChildProcess._handle.onexit (node:internal/child_process:289:12) at onErrorNT (node:internal/child_process:476:16) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { errno: -2, code: 'ENOENT', syscall: 'spawn xdg-open', path: 'xdg-open', spawnargs: [ '/home/quark/tmp/erepos/rs/isl/y.txt' ] } Node.js v18.16.0 Fix it by not letting the error propagate to the top-level handler. Reviewed By: zzl0 Differential Revision: D45800641 fbshipit-source-id: 0f028f71d20c29dafd8395bc12ec23a937264224 --- addons/isl-server/src/serverPlatform.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/isl-server/src/serverPlatform.ts b/addons/isl-server/src/serverPlatform.ts index 2d66d2a49b..d256eaabf0 100644 --- a/addons/isl-server/src/serverPlatform.ts +++ b/addons/isl-server/src/serverPlatform.ts @@ -82,6 +82,10 @@ export const browserServerPlatform: ServerPlatform = { windowsHide: false, windowsVerbatimArguments: true, }); + // Silent error. Don't crash the server process. + proc.on('error', err => { + repo?.logger.log('failed to open', path, err); + }); proc.unref(); } break;