From 52a73b0ecfc50ad1eb0bcd579e2213a8ca64f5a2 Mon Sep 17 00:00:00 2001 From: Alessandro Arzilli Date: Thu, 17 Jul 2025 19:41:09 +0200 Subject: [PATCH] service/dap: do not try to stacktrace an unreadable goroutine (#4056) onThreadRequest should not try to get the location of unreadable goroutines. Fixes #4054 --- service/dap/server.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/service/dap/server.go b/service/dap/server.go index 2e303f7e..4e478a9b 100644 --- a/service/dap/server.go +++ b/service/dap/server.go @@ -1883,11 +1883,15 @@ func (s *Session) onThreadsRequest(request *dap.ThreadsRequest) { } else { writeLabelsForKeys(s.args.ShowPprofLabels) } - // File name and line number are communicated via `stackTrace` - // so no need to include them here. - loc := g.UserCurrent() - threads[i].Name = fmt.Sprintf("%s[Go %d%s] %s%s", selected, g.ID, labels.String(), fnName(&loc), thread) - threads[i].Id = int(g.ID) + if g.Unreadable != nil { + threads[i].Name = fmt.Sprintf("%s Unreadable goroutine: %v", selected, g.Unreadable) + } else { + // File name and line number are communicated via `stackTrace` + // so no need to include them here. + loc := g.UserCurrent() + threads[i].Name = fmt.Sprintf("%s[Go %d%s] %s%s", selected, g.ID, labels.String(), fnName(&loc), thread) + threads[i].Id = int(g.ID) + } } }