#!stacks
"runtime.sigpanic" && "persistent.(*mapNode).forEach:+1"
This stack looks wrong, perhaps another example of the off-by-one problems in the traceback?
(Is it possible that somehow the tree has become a cyclic graph and what we are seeing is a stack overflow? The line number supports that, but I would expect the failure in that case to occur in runtime.morestack_noctxt.)
func (node *mapNode) forEach(f func(key, value any)) {
if node == nil { // <--- sigpanic
return
}
node.left.forEach(f)
f(node.key, node.value.value)
node.right.forEach(f)
}
golang.org/x/tools/gopls@v0.17.0 go1.23.2 linux/amd64 vscode (1)
Issue created by stacks.
This stack looks wrong, perhaps another example of the off-by-one problems in the traceback?
(Is it possible that somehow the tree has become a cyclic graph and what we are seeing is a stack overflow? The line number supports that, but I would expect the failure in that case to occur in
runtime.morestack_noctxt.)This stack
dVh6PAwas reported by telemetry:crash/crashruntime.throw:+9runtime.sigpanic:+33golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+1golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+6golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+6golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+6golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+6golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+6golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).forEach:+4