x/tools/gopls: stubmethods: SEGV after failed Cursor.FindByPos fails in GetIfaceStubInfo
Author: adonovanCreated Sep 28, 2026Updated Sep 28, 2026
LabelsNeedsInvestigationgoplsToolsgopls/telemetry-wins
#!stacks
"Cursor.Enclosing.func1:+1" && "sigpanic"Issue created by stacks.
func GetIfaceStubInfo(fset *token.FileSet, info *types.Info, pgf *parsego.File, pos, end token.Pos) *IfaceStubInfo {
cur, _ := pgf.Cursor().FindByPos(pos, end)
for cur := range cur.Enclosing() {This stack ilWB9Q was reported by telemetry:
crash/crashruntime.gopanic:+69,+0x158runtime.panicmem:=336,+0x194runtime.sigpanic:+9,+0x167golang.org/x/tools/go/ast/inspector.Cursor.Enclosing.func1:+1,+0x2cgolang.org/x/tools/gopls/internal/golang/stubmethods.GetIfaceStubInfo:+2,+0x13bgolang.org/x/tools/gopls/internal/golang.quickFix:+43,+0x609golang.org/x/tools/gopls/internal/golang.CodeActions:+64,+0x6cdgolang.org/x/tools/gopls/internal/server.(*server).CodeAction:+154,+0x5b6golang.org/x/tools/gopls/internal/protocol.ServerDispatchCall:+181,+0x2ba8golang.org/x/tools/gopls/internal/protocol.serverDispatch:+1,+0x98golang.org/x/tools/gopls/internal/protocol.ServerHandler.func1:+5,+0x84golang.org/x/tools/gopls/internal/lsprpc.handshaker.func1:+52,+0x8eagolang.org/x/tools/internal/jsonrpc2.MustReplyHandler.func1:+2,+0xd4golang.org/x/tools/internal/jsonrpc2.AsyncHandler.func1.2:+3,+0x95runtime.goexit:+0,+0x0
golang.org/x/tools/[email protected] go1.27.0 windows/amd64 gopls.client=vscode (1)Use this command to reproduce the executable:
(HOME=$(mktemp -d); GOOS=windows GOARCH=amd64 GOTOOLCHAIN=go1.27.0 go install golang.org/x/tools/[email protected] && find $HOME/go/bin -type f)
To disassemble: go tool objdump exe | less
Source: golang/go