From 7f94b83893e40b89dc59f3632e24feb3d177675d Mon Sep 17 00:00:00 2001 From: Alex Alecu Date: Fri, 20 Feb 2026 17:38:35 +0200 Subject: [PATCH] fix: ensure abort fires even if shutdown throws in serve.ts Wrap Instance.disposeAll() and server.stop() in try/finally so abort.abort() always fires, preventing the process from hanging if either call rejects. --- packages/opencode/src/cli/cmd/serve.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/cli/cmd/serve.ts b/packages/opencode/src/cli/cmd/serve.ts index 90c8a1d37af..5b2a867e99f 100644 --- a/packages/opencode/src/cli/cmd/serve.ts +++ b/packages/opencode/src/cli/cmd/serve.ts @@ -18,9 +18,12 @@ export const ServeCommand = cmd({ // kilocode_change start - graceful signal shutdown const abort = new AbortController() const shutdown = async () => { - await Instance.disposeAll() - await server.stop(true) - abort.abort() + try { + await Instance.disposeAll() + await server.stop(true) + } finally { + abort.abort() + } } process.on("SIGTERM", shutdown) process.on("SIGINT", shutdown)