From edb9c9e2abbe135bc4f78468bee3e55e9d5ebf07 Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Sun, 2 Nov 2025 17:11:51 -0800 Subject: [PATCH] Add panic recovery to RPC handleConnection (bd-1048) --- internal/rpc/server_lifecycle_conn.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/rpc/server_lifecycle_conn.go b/internal/rpc/server_lifecycle_conn.go index 44b1f5f4..18110316 100644 --- a/internal/rpc/server_lifecycle_conn.go +++ b/internal/rpc/server_lifecycle_conn.go @@ -10,6 +10,7 @@ import ( "os/signal" "path/filepath" "runtime" + "runtime/debug" "sync/atomic" "time" ) @@ -179,6 +180,14 @@ func (s *Server) handleSignals() { func (s *Server) handleConnection(conn net.Conn) { defer func() { _ = conn.Close() }() + // Recover from panics to prevent daemon crash (bd-1048) + defer func() { + if r := recover(); r != nil { + fmt.Fprintf(os.Stderr, "PANIC in handleConnection: %v\n", r) + fmt.Fprintf(os.Stderr, "Stack trace:\n%s\n", debug.Stack()) + } + }() + reader := bufio.NewReader(conn) writer := bufio.NewWriter(conn)