x/tools/gopls: automated issue report (crash)
Closed this issue · 4 comments
gopls version: (devel)
gopls flags: -rpc.trace --debug=localhost:6060
update flags: proxy
extension version: 2021.9.1523
go version: devel go1.18-f9271e4f85
environment: Visual Studio Code - Insiders darwin
initialization error: undefined
issue timestamp: Fri, 17 Sep 2021 19:59:46 GMT
restart history:
Fri, 17 Sep 2021 19:51:02 GMT: activation (enabled: true)
ATTENTION: PLEASE PROVIDE THE DETAILS REQUESTED BELOW.
Describe what you observed.
panic: runtime error: slice bounds out of range [4294967281:152]
goroutine 17124 [running]:
golang.org/x/tools/internal/lsp/source.findRune({0x1b71740, 0xc015308360}, {0x1b9adc0, 0xc00670e500}, {0x1b7d918, 0xc005a2d380}, {0x153080f0, 0xc0})
hover.go:216 0x100d
golang.org/x/tools/internal/lsp/source.hoverRune({0x1b71698, 0xc006e28080}, {0x1b9adc0, 0xc00670e500}, {0x1b7d918, 0xc005a2d380}, {0x13b9b6a8, 0xc0})
hover.go:106 0xe5
golang.org/x/tools/internal/lsp/source.Hover({0x1b71698, 0xc006e28080}, {0x1b9adc0, 0xc00670e500}, {0x1b7d918, 0xc005a2d380}, {0x17f7c40, 0x0})
hover.go:72 0xab
golang.org/x/tools/internal/lsp.(*Server).hover(0xc011df5228, {0x1b71698, 0xc006e28080}, 0xc015308030)
hover.go:26 0x25c
golang.org/x/tools/internal/lsp.(*Server).Hover(0xc008d58000, {0x1b71698, 0xc006e28080}, 0x17f7c40)
server_gen.go:128 0x25
golang.org/x/tools/internal/lsp/protocol.serverDispatch({0x1b71698, 0xc006e28080}, {0x1b9ec20, 0xc0002e1440}, 0xc015308000, {0x1b71900, 0xc006e28000})
tsserver.go:372 0x12da
golang.org/x/tools/internal/lsp/protocol.ServerHandler.func1({0x1b71698, 0xc006e28080}, 0xc015308000, {0x1b71900, 0xc006e28000})
protocol.go:154 0x90
golang.org/x/tools/internal/lsp/lsprpc.handshaker.func1({0x1b71698, 0xc006e28080}, 0xc015308000, {0x1b71900, 0xc006e28000})
lsprpc.go:506 0xa43
golang.org/x/tools/internal/jsonrpc2.MustReplyHandler.func1({0x1b71698, 0xc006e28080}, 0xc0153050e0, {0x1b71900, 0xc006e28000})
handler.go:35 0xf6
golang.org/x/tools/internal/jsonrpc2.AsyncHandler.func1.2()
handler.go:103 0xa3
created by golang.org/x/tools/internal/jsonrpc2.AsyncHandler.func1
handler.go:100 0x20a
[Error - 3:59:34 PM]
OPTIONAL: If you would like to share more information, you can attach your complete gopls logs.
NOTE: THESE MAY CONTAIN SENSITIVE INFORMATION ABOUT YOUR CODEBASE.
DO NOT SHARE LOGS IF YOU ARE WORKING IN A PRIVATE REPOSITORY.
<OPTIONAL: ATTACH LOGS HERE>
That looks like an unsigned integer overflow. (4294967281 = 2³² - 15)
FWIW I just ran into this as well and narrowed it down to a small repro:
-- go.mod --
module x
go 1.18
-- main.go --
package main
func main() {
const x = `
foo
`
}
And call hover with cursor over foo.
% go version
go version devel go1.18-b1bedc0774 Thu Sep 16 17:44:44 2021 +0000 darwin/amd64
panic: runtime error: slice bounds out of range [4294967288:15]
goroutine 1713 [running]:
golang.org/x/tools/internal/lsp/source.findRune({0x1b72ec0, 0xc002954360}, {0x1b9c520, 0xc002872000}, {0x1b7f098, 0xc00027e5a0}, {0x29540f0, 0xc0})
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/source/hover.go:216 +0x100d
golang.org/x/tools/internal/lsp/source.hoverRune({0x1b72e18, 0xc00276db80}, {0x1b9c520, 0xc002872000}, {0x1b7f098, 0xc00027e5a0}, {0x2a236a8, 0xc0})
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/source/hover.go:106 +0xe5
golang.org/x/tools/internal/lsp/source.Hover({0x1b72e18, 0xc00276db80}, {0x1b9c520, 0xc002872000}, {0x1b7f098, 0xc00027e5a0}, {0x17f8e60, 0x0})
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/source/hover.go:72 +0xab
golang.org/x/tools/internal/lsp.(*Server).hover(0xc002717df8, {0x1b72e18, 0xc00276db80}, 0xc002954030)
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/hover.go:26 +0x25c
golang.org/x/tools/internal/lsp.(*Server).Hover(0xc001302000, {0x1b72e18, 0xc00276db80}, 0x17f8e60)
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/server_gen.go:128 +0x25
golang.org/x/tools/internal/lsp/protocol.serverDispatch({0x1b72e18, 0xc00276db80}, {0x1ba0380, 0xc00023f0e0}, 0xc002954000, {0x1b73080, 0xc00276db00})
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/protocol/tsserver.go:372 +0x12da
golang.org/x/tools/internal/lsp/protocol.ServerHandler.func1({0x1b72e18, 0xc00276db80}, 0xc002954000, {0x1b73080, 0xc00276db00})
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/protocol/protocol.go:154 +0x90
golang.org/x/tools/internal/lsp/lsprpc.handshaker.func1({0x1b72e18, 0xc00276db80}, 0xc002954000, {0x1b73080, 0xc00276db00})
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/lsp/lsprpc/lsprpc.go:506 +0xa43
golang.org/x/tools/internal/jsonrpc2.MustReplyHandler.func1({0x1b72e18, 0xc00276db80}, 0xc002735f98, {0x1b73080, 0xc00276db00})
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/jsonrpc2/handler.go:35 +0xf6
golang.org/x/tools/internal/jsonrpc2.AsyncHandler.func1.2()
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/jsonrpc2/handler.go:103 +0xa3
created by golang.org/x/tools/internal/jsonrpc2.AsyncHandler.func1
/Users/leitzler/go/pkg/mod/golang.org/x/tools@v0.1.7-0.20210919163452-7559231edc43/internal/jsonrpc2/handler.go:100 +0x20a
Change https://golang.org/cl/351629 mentions this issue: internal/lsp: handle panic in hoverRune by using token.Pos
Change https://golang.org/cl/351649 mentions this issue: internal/lsp: handle panic in hoverRune by using token.Pos