Description
#!stacks
"runtime.systemstack_switch:+4" && "runtime.newproc:+3"
Issue created by stacks.
This stack D9Rnmg
was reported by telemetry:
TEXT runtime·systemstack_switch(SB), NOSPLIT, $0-0
UNDEF
// Make sure this function is not leaf,
// so the frame is saved.
CALL runtime·abort(SB) <--- here? What about UNDEF??
RET
crash/crash
runtime.systemstack_switch:+4
runtime.newproc:+3
golang.org/x/sync/errgroup.(*Group).Go:+6
golang.org/x/tools/gopls/internal/cache.(*Snapshot).getPackageHandles.func2:+1
golang.org/x/tools/gopls/internal/cache.(*Snapshot).getPackageHandles:+83
golang.org/x/tools/gopls/internal/cache.(*Snapshot).forEachPackage:+37
golang.org/x/tools/gopls/internal/cache.(*Snapshot).PackageDiagnostics:+28
golang.org/x/tools/gopls/internal/server.(*server).diagnoseChangedFiles:+50
golang.org/x/tools/gopls/internal/server.(*server).diagnoseSnapshot:+14
golang.org/x/tools/gopls/internal/server.(*server).diagnoseChangedViews.func1:+3
golang.org/x/tools/gopls/internal/server.(*server).diagnoseChangedViews.gowrap1:+16
runtime.goexit:+0
golang.org/x/tools/gopls@v0.18.0-pre.1 go1.23.4 linux/amd64 vscode (1)
@golang/runtime
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
prattmic commentedon Feb 18, 2025
runtime.systemstack
putssystemstack_switch+8
as the saved PC. That is probably in the middle of that CALL instruction.systemstack_switch
shouldn't actually be getting called. I think there is just a throw while on thesystemstack
and we aren't collecting the systemstack frames (which would be a nice improvement)gabyhelp commentedon Feb 18, 2025
Related Issues
(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)
findleyr commentedon Feb 18, 2025
@prattmic sorry I didn't entirely follow that--are you saying that the crash was likely somewhere in this function of the runtime, or that it could be in gopls logic?
prattmic commentedon Feb 18, 2025
Correct, somewhere transitively called from that closure you linked to. There is a trivially user-triggerable crash here if
fn
is nil ingo fn()
, though that doesn't look possible in this case.The other cases seem to be either out of memory, or various internal runtime assertions.
findleyr commentedon Feb 18, 2025
Thanks. An OOM is certainly plausible.
4 remaining items