#!stacks
"goPanicIndex" && "fingerprint.unify.func3:+8"
func unify(x, y sexpr) bool {
// maxTypeParam returns the maximum type parameter index in x.
var maxTypeParam func(x sexpr) int
maxTypeParam = func(x sexpr) int {...}
...
yBindings := make([]*sexpr, maxTypeParam(y)+1)
for i := range len(yBindings) {
yBindings[i] = new(sexpr)
}
// bind sets binding b to s from bindings if it does not occur in s.
bind := func(b *sexpr, s sexpr, bindings []*sexpr) bool {
...
var uni func(x, y sexpr) bool
uni = func(x, y sexpr) bool {
var bx, by *sexpr
ix := typeParamIndex(x)
if ix >= 0 {
bx = xBindings[ix]
}
iy := typeParamIndex(y)
if iy >= 0 {
by = yBindings[iy] // OOB index panic
golang.org/x/tools/gopls@v0.20.0 go1.24.6 linux/amd64 vscode (1)
Issue created by stacks.
This stack
FSaUqgwas reported by telemetry:crash/crashruntime.gopanic:+69,+0x167runtime.goPanicIndex:+2,+0x73golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+8,+0x79agolang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+45,+0x649golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+54,+0x687golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+33,+0x4c1golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+45,+0x649golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+54,+0x687golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+54,+0x687golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+45,+0x649golang.org/x/tools/gopls/internal/util/fingerprint.unify.func3:+54,+0x687golang.org/x/tools/gopls/internal/util/fingerprint.unify:+108,+0x235golang.org/x/tools/gopls/internal/util/fingerprint.Matches:=64,+0x10dgolang.org/x/tools/gopls/internal/cache/methodsets.implements.func1:=228,+0xe0slices.IndexFunc[...]:=109,+0x73slices.ContainsFunc[...]:=124,+0x4egolang.org/x/tools/gopls/internal/cache/methodsets.implements:+40,+0x3cgolang.org/x/tools/gopls/internal/cache/methodsets.(*Index).Search:+10,+0xacgolang.org/x/tools/gopls/internal/golang.implementationsMsets.func2:+1,+0x6fgolang.org/x/sync/errgroup.(*Group).Go.func1:+15,+0x4fDups: 4YaIeA