Skip to content

Commit 89f35ab

Browse files
authored
Add stack trace information around several recover() calls (#54881)
* Add stack trace information around several recover() calls * downgrade panic logs to warnings
1 parent dbac2ff commit 89f35ab

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

lib/srv/db/mysql/proxy.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"crypto/tls"
2424
"log/slog"
2525
"net"
26+
"runtime/debug"
2627
"time"
2728

2829
"github.com/go-mysql-org/go-mysql/mysql"
@@ -81,7 +82,7 @@ func (p *Proxy) HandleConnection(ctx context.Context, clientConn net.Conn) (err
8182
// has a chance to close the connection from its side.
8283
defer func() {
8384
if r := recover(); r != nil {
84-
p.Log.WarnContext(ctx, "Recovered in MySQL proxy while handling connectionv.", "from", clientConn.RemoteAddr(), "to", r)
85+
p.Log.WarnContext(ctx, "Recovered in MySQL proxy while handling connectionv.", "from", clientConn.RemoteAddr(), "problem", r, "stack", debug.Stack())
8586
err = trace.BadParameter("failed to handle MySQL client connection")
8687
}
8788
if err != nil {

lib/srv/db/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"errors"
2525
"log/slog"
2626
"net"
27+
"runtime/debug"
2728
"sync"
2829
"sync/atomic"
2930
"time"
@@ -1189,7 +1190,7 @@ func (s *Server) handleConnection(ctx context.Context, clientConn net.Conn) erro
11891190

11901191
defer func() {
11911192
if r := recover(); r != nil {
1192-
s.log.WarnContext(ctx, "Recovered while handling DB connection.", "from", clientConn.RemoteAddr(), "to", r)
1193+
s.log.WarnContext(ctx, "Recovered while handling DB connection.", "from", clientConn.RemoteAddr(), "problem", r, "stack", debug.Stack())
11931194
err = trace.BadParameter("failed to handle client connection")
11941195
}
11951196
if err != nil {

lib/srv/db/sqlserver/engine.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"context"
2424
"io"
2525
"net"
26+
"runtime/debug"
2627

2728
"github.com/gravitational/trace"
2829

@@ -132,7 +133,7 @@ func (e *Engine) HandleConnection(ctx context.Context, sessionCtx *common.Sessio
132133
func (e *Engine) receiveFromClient(clientConn, serverConn io.ReadWriteCloser, clientErrCh chan<- error, sessionCtx *common.Session) {
133134
defer func() {
134135
if r := recover(); r != nil {
135-
e.Log.ErrorContext(e.Context, "Recovered while handling DB connection", "recover", r)
136+
e.Log.WarnContext(e.Context, "Recovered while handling DB connection", "problem", r, "stack", debug.Stack())
136137
err := trace.BadParameter("failed to handle client connection")
137138
e.SendError(err)
138139
}
@@ -167,7 +168,7 @@ func (e *Engine) receiveFromClient(clientConn, serverConn io.ReadWriteCloser, cl
167168
sqlPacket, err := e.toSQLPacket(initialPacketHeader, p, &chunkData)
168169
switch {
169170
case err != nil:
170-
e.Log.ErrorContext(e.Context, "Failed to parse SQLServer packet.", "error", err)
171+
e.Log.WarnContext(e.Context, "Failed to parse SQLServer packet.", "error", err)
171172
e.emitMalformedPacket(e.Context, sessionCtx, p)
172173
default:
173174
e.auditPacket(e.Context, sessionCtx, sqlPacket)

lib/srv/db/sqlserver/protocol/packet.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"bytes"
2323
"encoding/binary"
2424
"io"
25+
"runtime/debug"
2526

2627
"github.com/gravitational/trace"
2728
)
@@ -139,7 +140,7 @@ func NewBasicPacket(header PacketHeader, data []byte) (*BasicPacket, error) {
139140
func ToSQLPacket(p *BasicPacket) (out Packet, err error) {
140141
defer func() {
141142
if r := recover(); r != nil {
142-
err = trace.BadParameter("failed to convert packet to SQL packet: %v", r)
143+
err = trace.BadParameter("failed to convert packet to SQL packet: %v @ %v", r, debug.Stack())
143144
}
144145
}()
145146

0 commit comments

Comments
 (0)