Closed
Description
- What version of Delve are you using (
dlv version
)?
Delve Debugger
Version: 1.8.3
- What version of Go are you using? (
go version
)?
go version go1.18 darwin/amd64
I got this once when testing multiple disconnect/reconnect after continue/pause actions with --accept-multiclient
using _fixtures/loopprog.go
.
$ /dlv attach 55265 --headless --listen=:54321 --log --accept-multiclient
API server listening at: [::]:54321
2022-05-16T10:31:38-07:00 warning layer=rpc Listening for remote connections (connections are not authenticated nor encrypted)
2022-05-16T10:31:38-07:00 info layer=debugger attaching to pid 55265
2022-05-16T10:31:50-07:00 info layer=debugger created breakpoint: &api.Breakpoint{ID:1, Name:"sourceBp Path=\"/Users/polina/delve/_fixtures/loopprog.go\" Line=8 Column=0", Addr:0x10ad063, Addrs:[]uint64{0x10ad063}, File:"/Users/polina/delve/_fixtures/loopprog.go", Line:8, FunctionName:"main.loop", Cond:"", HitCond:"", Tracepoint:true, TraceReturn:false, Goroutine:false, Stacktrace:0, Variables:[]string(nil), LoadArgs:(*api.LoadConfig)(nil), LoadLocals:(*api.LoadConfig)(nil), WatchExpr:"", WatchType:0x0, VerboseDescr:[]string(nil), HitCount:map[string]uint64{}, TotalHitCount:0x0, Disabled:false, UserData:dap.logMessage{format:"i", args:[]string(nil)}}
2022-05-16T10:31:56-07:00 debug layer=debugger continuing
2022-05-16T10:31:56-07:00 debug layer=debugger continuing (direction congruent)
2022-05-16T10:31:56-07:00 debug layer=debugger continuing (direction congruent)
...
2022-05-16T10:32:10-07:00 debug layer=debugger continuing (direction congruent)
2022-05-16T10:32:10-07:00 debug layer=debugger halting
2022-05-16T10:32:28-07:00 debug layer=debugger continuing
2022-05-16T10:32:28-07:00 debug layer=debugger continuing (direction congruent)
2022-05-16T10:32:29-07:00 debug layer=debugger continuing (direction congruent)
...
2022-05-16T10:33:01-07:00 debug layer=debugger continuing (direction congruent)
2022-05-16T10:33:01-07:00 debug layer=debugger halting
2022-05-16T10:33:01-07:00 error layer=dap recovered panic: runtime error: index out of range [8] with length 8
goroutine 425 [running]:
runtime/debug.Stack()
/usr/local/go/src/runtime/debug/stack.go:24 +0x65
github.com/go-delve/delve/service/dap.(*Session).recoverPanic(0xc00014e000, {0x471b4a0, 0xc000243ef0})
/Users/polina/delve/service/dap/server.go:559 +0x66
panic({0x4618bc0, 0xc000875620})
/usr/local/go/src/runtime/panic.go:838 +0x207
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbConn).readRegister(0xc00028c2d0, {0xc000038fd0, 0x7}, 0x3?, {0xc000253c00, 0x8, 0xc00003a780?})
/Users/polina/delve/pkg/proc/gdbserial/gdbserver_conn.go:537 +0x289
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).reloadRegisters(0xc00028a2a0)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1641 +0x4a6
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).Registers(0xc00028a2a0)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1476 +0x25
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).SetCurrentBreakpoint(0xc00028a2a0, 0xa0?)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1870 +0x145
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbProcess).setCurrentBreakpoints(0xc00028c2c0)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1409 +0x94
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbProcess).ContinueOnce(0xc00028c2c0, 0xc00012a770?)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:886 +0x618
github.com/go-delve/delve/pkg/proc.(*Target).Continue(0xc0002940f0)
/Users/polina/delve/pkg/proc/target_exec.go:81 +0x1b7
github.com/go-delve/delve/service/debugger.(*Debugger).Command(0xc000228160, 0xc0008f5b60, 0xc000108360)
/Users/polina/delve/service/debugger/debugger.go:1219 +0x125c
github.com/go-delve/delve/service/dap.(*Session).resumeOnce(0xc00014e000, {0x4661c23, 0x1a}, 0xc000239560)
/Users/polina/delve/service/dap/server.go:3445 +0x219
github.com/go-delve/delve/service/dap.(*Session).resumeOnceAndCheckStop(0xc00014e000, {0x4661c23, 0x1a}, 0xc0008f5c28?)
/Users/polina/delve/service/dap/server.go:3587 +0x2c
github.com/go-delve/delve/service/dap.glob..func1(0x80?, {0x4661c23?, 0xc0001ba410?}, 0xb?)
/Users/polina/delve/service/dap/server.go:3583 +0x1e
github.com/go-delve/delve/service/dap.(*Session).runUntilStop(0xc00014e000, {0x4654599, 0x8}, 0x413ee25?)
/Users/polina/delve/service/dap/server.go:3575 +0xeb
github.com/go-delve/delve/service/dap.(*Session).runUntilStopAndNotify(0xc00014e000, {0x4654599, 0x8}, 0x0?)
/Users/polina/delve/service/dap/server.go:3456 +0x46
github.com/go-delve/delve/service/dap.(*Session).onContinueRequest(0x0?, 0x0?, 0x0?)
/Users/polina/delve/service/dap/server.go:1587 +0x14b
github.com/go-delve/delve/service/dap.(*Session).handleRequest.func2()
/Users/polina/delve/service/dap/server.go:692 +0x77
created by github.com/go-delve/delve/service/dap.(*Session).handleRequest
/Users/polina/delve/service/dap/server.go:690 +0x1a2a
2022-05-16T10:33:01-07:00 error layer=dap recovered panic: runtime error: index out of range [2] with length 2
goroutine 39 [running]:
runtime/debug.Stack()
/usr/local/go/src/runtime/debug/stack.go:24 +0x65
github.com/go-delve/delve/service/dap.(*Session).recoverPanic(0xc00014e000, {0x471b920, 0xc0000be300})
/Users/polina/delve/service/dap/server.go:559 +0x66
panic({0x4618bc0, 0xc0004b3aa0})
/usr/local/go/src/runtime/panic.go:844 +0x258
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbConn).readRegister(0xc00028c2d0, {0xc000038fe7, 0x7}, 0x5?, {0xc0000d0b28, 0x2, 0x40104e7?})
/Users/polina/delve/pkg/proc/gdbserial/gdbserver_conn.go:537 +0x289
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).reloadRegisters(0xc00028a540)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1641 +0x4a6
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).Registers(0xc00028a540)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1476 +0x25
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).Location(0xc00028a540)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1449 +0x36
github.com/go-delve/delve/service/api.ConvertThread({0x4723930, 0xc00028a540})
/Users/polina/delve/service/api/conversions.go:111 +0x2b
github.com/go-delve/delve/service/debugger.(*Debugger).state(0xc000228160, 0x0)
/Users/polina/delve/service/debugger/debugger.go:612 +0x40a
github.com/go-delve/delve/service/debugger.(*Debugger).Command(0xc000228160, 0xc0002316d8, 0x0)
/Users/polina/delve/service/debugger/debugger.go:1318 +0x15b6
github.com/go-delve/delve/service/dap.(*Session).halt(0xc00014e000)
/Users/polina/delve/service/dap/server.go:1261 +0xd1
github.com/go-delve/delve/service/dap.(*Session).onPauseRequest(0xc00014e000, 0xc0000be300)
/Users/polina/delve/service/dap/server.go:1919 +0xca
github.com/go-delve/delve/service/dap.(*Session).handleRequest(0xc00014e000, {0x471b920?, 0xc0000be300?})
/Users/polina/delve/service/dap/server.go:602 +0x4c5
github.com/go-delve/delve/service/dap.(*Session).ServeDAPCodec(0xc00014e000)
/Users/polina/delve/service/dap/server.go:545 +0x385
created by github.com/go-delve/delve/service/rpccommon.(*ServerImpl).serveConnectionDemux
/Users/polina/delve/service/rpccommon/server.go:185 +0x34a
2022-05-16T10:33:06-07:00 error layer=dap recovered panic: runtime error: index out of range [8] with length 8
goroutine 39 [running]:
runtime/debug.Stack()
/usr/local/go/src/runtime/debug/stack.go:24 +0x65
github.com/go-delve/delve/service/dap.(*Session).recoverPanic(0xc00014e000, {0x471b920, 0xc0001e79e0})
/Users/polina/delve/service/dap/server.go:559 +0x66
panic({0x4618bc0, 0xc0004b3c98})
/usr/local/go/src/runtime/panic.go:844 +0x258
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbConn).readRegister(0xc00028c2d0, {0xc000038fd7, 0x7}, 0x3?, {0xc0000d1180, 0x8, 0xc000278090?})
/Users/polina/delve/pkg/proc/gdbserial/gdbserver_conn.go:537 +0x289
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).reloadRegisters(0xc00028a380)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1641 +0x4a6
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).Registers(0xc00028a380)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1476 +0x25
github.com/go-delve/delve/pkg/proc/gdbserial.(*gdbThread).Location(0xc00028a380)
/Users/polina/delve/pkg/proc/gdbserial/gdbserver.go:1449 +0x36
github.com/go-delve/delve/service/api.ConvertThread({0x4723930, 0xc00028a380})
/Users/polina/delve/service/api/conversions.go:111 +0x2b
github.com/go-delve/delve/service/debugger.(*Debugger).state(0xc000228160, 0x0)
/Users/polina/delve/service/debugger/debugger.go:612 +0x40a
github.com/go-delve/delve/service/debugger.(*Debugger).State(0xc000228160, 0x0)
/Users/polina/delve/service/debugger/debugger.go:584 +0x1b8
github.com/go-delve/delve/service/dap.(*Session).halt(0xc00014e000)
/Users/polina/delve/service/dap/server.go:1264 +0x13b
github.com/go-delve/delve/service/dap.(*Session).onPauseRequest(0xc00014e000, 0xc0001e79e0)
/Users/polina/delve/service/dap/server.go:1919 +0xca
github.com/go-delve/delve/service/dap.(*Session).handleRequest(0xc00014e000, {0x471b920?, 0xc0001e79e0?})
/Users/polina/delve/service/dap/server.go:602 +0x4c5
github.com/go-delve/delve/service/dap.(*Session).ServeDAPCodec(0xc00014e000)
/Users/polina/delve/service/dap/server.go:545 +0x385
created by github.com/go-delve/delve/service/rpccommon.(*ServerImpl).serveConnectionDemux
/Users/polina/delve/service/rpccommon/server.go:185 +0x34a
Looking at the code:
delve/pkg/proc/gdbserial/gdbserver_conn.go
Lines 535 to 538 in b53fcbe
data
must be of the wrong size. Also, i+2
could cause slice bounds error if len(resp)
were odd.
Activity