golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
122.98k stars 17.53k forks source link

x/tools/gopls: panic in internal/golang.activeParameter #69552

Open danp opened 2 hours ago

danp commented 2 hours ago

Using gopls golang/tools@e603756b2be22dc76f8a447c322fddce24fbb865:

goroutine 11966428 gp=0x140197a5180 m=45 mp=0x1402512c008 [running]:
panic({0x101c5cf20?, 0x102415050?})
    /usr/local/go/src/runtime/panic.go:804 +0x154 fp=0x14026e293f0 sp=0x14026e29340 pc=0x100f97294
runtime.panicmem(...)
    /usr/local/go/src/runtime/panic.go:262
runtime.sigpanic()
    /usr/local/go/src/runtime/signal_unix.go:900 +0x300 fp=0x14026e29450 sp=0x14026e293f0 pc=0x100f99760
golang.org/x/tools/gopls/internal/golang.activeParameter(0x101d98488?, 0x1400d9ae540?, 0xa0?, 0x101880df1?)
    /Users/dan/go/src/golang.org/x/tools/gopls/internal/golang/signature_help.go:192 +0x18 fp=0x14026e294b0 sp=0x14026e29460 pc=0x1017ec4b8
golang.org/x/tools/gopls/internal/golang.builtinSignature({0x101d98488?, 0x1400d9ae540?}, 0x1403f35e5a0, 0x0, {0x101880df1?, 0x0?}, 0x6c328350)
    /Users/dan/go/src/golang.org/x/tools/gopls/internal/golang/signature_help.go:183 +0x158 fp=0x14026e29570 sp=0x14026e294b0 pc=0x1017ec358
golang.org/x/tools/gopls/internal/golang.SignatureHelp({0x101d98488?, 0x1400d9ae3f0?}, 0x1403f35e5a0, {0x101d9b1e0, 0x1401cfcc900}, {0x108f6b4?, 0x1?})
    /Users/dan/go/src/golang.org/x/tools/gopls/internal/golang/signature_help.go:123 +0x98c fp=0x14026e297d0 sp=0x14026e29570 pc=0x1017ebcec
golang.org/x/tools/gopls/internal/server.(*server).SignatureHelp(0x1400018c780, {0x101d984c0, 0x1400d74abe0}, 0x1400d9ae300)
    /Users/dan/go/src/golang.org/x/tools/gopls/internal/server/signature_help.go:31 +0x194 fp=0x14026e298f0 sp=0x14026e297d0 pc=0x101859674
golang.org/x/tools/gopls/internal/protocol.serverDispatch({0x101d984c0, 0x1400d74abe0}, {0x101db3920, 0x1400018c780}, 0x1400d9ae2d0, {0x101d98680, 0x14031016500})
    /Users/dan/go/src/golang.org/x/tools/gopls/internal/protocol/tsserver.go:712 +0x3d5c fp=0x14026e29bd0 sp=0x14026e298f0 pc=0x1012c694c
golang.org/x/tools/gopls/internal/lsprpc.(*streamServer).ServeStream.ServerHandler.func3({0x101d984c0, 0x1400d74abe0}, 0x1400d9ae2d0, {0x101d98680, 0x14031016500})
    /Users/dan/go/src/golang.org/x/tools/gopls/internal/protocol/protocol.go:160 +0x74 fp=0x14026e29c30 sp=0x14026e29bd0 pc=0x101862384
golang.org/x/tools/gopls/internal/lsprpc.(*streamServer).ServeStream.handshaker.func4({0x101d984c0, 0x1400d74abe0}, 0x1400d9ae2d0, {0x101d98680, 0x14031016500})
    /Users/dan/go/src/golang.org/x/tools/gopls/internal/lsprpc/lsprpc.go:509 +0x6b8 fp=0x14026e29ee0 sp=0x14026e29c30 pc=0x101862198
golang.org/x/tools/gopls/internal/protocol.Handlers.MustReplyHandler.func1({0x101d984c0, 0x1400d74abe0}, 0x1404d3c5b60, {0x101d98680, 0x14031016500})
    /Users/dan/go/src/golang.org/x/tools/internal/jsonrpc2/handler.go:35 +0xc0 fp=0x14026e29f40 sp=0x14026e29ee0 pc=0x1012b49c0
golang.org/x/tools/gopls/internal/protocol.Handlers.AsyncHandler.func2.2()
    /Users/dan/go/src/golang.org/x/tools/internal/jsonrpc2/handler.go:103 +0x90 fp=0x14026e29fd0 sp=0x14026e29f40 pc=0x1012b47f0
runtime.goexit({})
    /usr/local/go/src/runtime/asm_arm64.s:1223 +0x4 fp=0x14026e29fd0 sp=0x14026e29fd0 pc=0x100fa0464
created by golang.org/x/tools/gopls/internal/protocol.Handlers.AsyncHandler.func2 in goroutine 109
    /Users/dan/go/src/golang.org/x/tools/internal/jsonrpc2/handler.go:100 +0x19c

Think I was in the middle of changing something like x.y(len(z), nil) to x.y(int64(len(z)), nil).

(I don't see this in local telemetry data so filing this issue)

gabyhelp commented 2 hours ago

Related Issues and Documentation

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

adonovan commented 2 hours ago

Thanks for the report. This looks like a recent tegression caused by https://go.dev/cl/605983, which changed callExpr to become potentially nil.