From 11c83905238b3a3ca40cd60d2b58074619c1b992 Mon Sep 17 00:00:00 2001 From: Jason Fulghum Date: Mon, 17 Mar 2025 10:11:40 -0700 Subject: [PATCH] Logging stack traces when panics are caught --- server/connection_handler.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/connection_handler.go b/server/connection_handler.go index 41b7f145b3..ff6b844c47 100644 --- a/server/connection_handler.go +++ b/server/connection_handler.go @@ -24,6 +24,7 @@ import ( "io" "net" "os" + "runtime/debug" "strings" "sync/atomic" @@ -136,7 +137,7 @@ func (h *ConnectionHandler) HandleConnection() { if HandlePanics { defer func() { if r := recover(); r != nil { - fmt.Printf("Listener recovered panic: %v", r) + logrus.Errorf("Listener recovered panic: %v: %s", r, string(debug.Stack())) var eomErr error if returnErr != nil { @@ -150,7 +151,7 @@ func (h *ConnectionHandler) HandleConnection() { // Sending eom can panic, which means we must recover again defer func() { if r := recover(); r != nil { - fmt.Printf("Listener recovered panic: %v", r) + logrus.Errorf("Listener recovered panic: %v: %s", r, string(debug.Stack())) } }() h.endOfMessages(eomErr) @@ -320,7 +321,7 @@ func (h *ConnectionHandler) receiveMessage() (bool, error) { if HandlePanics { defer func() { if r := recover(); r != nil { - fmt.Printf("Listener recovered panic: %v", r) + logrus.Errorf("Listener recovered panic: %v: %s", r, string(debug.Stack())) var eomErr error if rErr, ok := r.(error); ok {