#!stacks
"sigpanic" && "golang.isBuiltin" && "golang.ObjectLocation" && "mcp.(*handler).symbolReferencesHandler:+32"
Issue created by stacks.
resolveSymbol may return (nil, nil) leading to a panic
func resolveSymbol(path []string, pkg *cache.Package, pgf *parsego.File) (types.Object, error) {
...
switch len(path) {
case 1:
_, target := fileScope.LookupParent(path[0], token.NoPos)
return target, nil <------- here
case 2:
switch _, obj := fileScope.LookupParent(path[0], token.NoPos); obj := obj.(type) {
...
default:
target, _, _ := types.LookupFieldOrMethod(obj.Type(), true, pkg.Types(), path[1])
return target, nil <---------- here
}
target, err := resolveSymbol(path, pkg, pgf)
if err != nil {
return nil, err
}
loc, err := golang.ObjectLocation(ctx, pkg.FileSet(), snapshot, target) <---- target = nil; panics in isBuiltin
This stack hZ-M9w was reported by telemetry:
crash/crashruntime.gopanic:+69,+0x153runtime.panicmem:=262,+0x2ffruntime.sigpanic:+19,+0x2ccgolang.org/x/tools/gopls/internal/golang.isBuiltin:=288,+0x34golang.org/x/tools/gopls/internal/golang.ObjectLocation:+1,+0x1cgolang.org/x/tools/gopls/internal/mcp.(*handler).symbolReferencesHandler:+32,+0x17bgolang.org/x/tools/gopls/internal/mcp.(*handler).symbolReferencesHandler-fm:+0,+0x43golang.org/x/tools/internal/mcp.newServerToolErr[...].func1:+14,+0x13bgolang.org/x/tools/internal/mcp.(*Server).callTool:+7,+0x1bfgolang.org/x/tools/internal/mcp.init.serverMethod[...].func53:+1,+0x43golang.org/x/tools/internal/mcp.init.newMethodInfo[...].func55:+4,+0x4fgolang.org/x/tools/internal/mcp.defaultReceivingMethodHandler[...]:+6,+0x9fgolang.org/x/tools/internal/mcp.defaultReceivingMethodHandler[...]:+0,+0x5bgolang.org/x/tools/internal/mcp.handleReceive[...]:+12,+0x15fgolang.org/x/tools/internal/mcp.(*ServerSession).handle:+18,+0x1c7golang.org/x/tools/internal/mcp.connect[...].func1.1:+0,+0x47golang.org/x/tools/internal/jsonrpc2_v2.HandlerFunc.Handle:+1,+0x37golang.org/x/tools/internal/jsonrpc2_v2.(*Connection).handleAsync:+27,+0xdf
golang.org/x/tools/gopls@v0.20.0 go1.24.5 darwin/arm64 neovim,other (1)
golang.org/x/tools/gopls@v0.20.0-pre.1 go1.24.5 darwin/arm64 other (1)
Dups: HXoJzQ
Comment From: ANAS727189
Raised a pr for this issue on gerrit
Comment From: gopherbot
Change https://go.dev/cl/697315 mentions this issue: mcp: fix panic in symbolReferencesHandler on nil types.Object
Comment From: adonovan
This stack HXoJzQ was reported by telemetry:
crash/crashruntime.gopanic:+69,+0x14fruntime.panicmem:=262,+0x2e7runtime.sigpanic:+19,+0x2b8golang.org/x/tools/gopls/internal/golang.isBuiltin:=288,+0x34golang.org/x/tools/gopls/internal/golang.ObjectLocation:+1,+0x1cgolang.org/x/tools/gopls/internal/mcp.(*handler).symbolReferencesHandler:+32,+0x167golang.org/x/tools/gopls/internal/mcp.(*handler).symbolReferencesHandler-fm:+0,+0x43golang.org/x/tools/internal/mcp.newServerToolErr[...].func1:+14,+0x11bgolang.org/x/tools/internal/mcp.(*Server).callTool:+7,+0x1a3golang.org/x/tools/internal/mcp.init.serverMethod[...].func53:+1,+0x43golang.org/x/tools/internal/mcp.init.newMethodInfo[...].func55:+4,+0x4bgolang.org/x/tools/internal/mcp.defaultReceivingMethodHandler[...]:+6,+0x9bgolang.org/x/tools/internal/mcp.defaultReceivingMethodHandler[...]:+0,+0x5bgolang.org/x/tools/internal/mcp.handleReceive[...]:+12,+0x147golang.org/x/tools/internal/mcp.(*ServerSession).handle:+18,+0x1bbgolang.org/x/tools/internal/mcp.connect[...].func1.1:+0,+0x43golang.org/x/tools/internal/jsonrpc2_v2.HandlerFunc.Handle:+1,+0x37golang.org/x/tools/internal/jsonrpc2_v2.(*Connection).handleAsync:+27,+0xc3
golang.org/x/tools/gopls@v0.20.0 go1.25.0 darwin/arm64 neovim,other (1)