-
Notifications
You must be signed in to change notification settings - Fork 17.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
x/tools/gopls: impossible crash in persistent.Map decref #72931
Comments
Possibilities:
|
cc @prattmic |
This is our third crash related to persistent.Map. Does that indicate a data race to one of our maps? (I don't know if these are realistic manifestations of races). |
The map is a pure functional data structure: the only assignment to any of its nodes or values occurs when the refcount falls to zero in decref, and those are purely defensive stores that never need to be observed for correctness. I would expect this to make the map more robust against data races in the program than other code. I suspect the bug is somewhere else and the map is just getting clobbered, but I suppose it wouldn't hurt to write a concurrent test of Map. |
Never mind, my test is wrong. |
Change https://go.dev/cl/659015 mentions this issue: |
It didn't find any problems. Updates golang/go#72931 Change-Id: Idb65548480af1fd6777dffdcc0e6c6e89b5a06f5 Reviewed-on: https://go-review.googlesource.com/c/tools/+/659015 Auto-Submit: Alan Donovan <adonovan@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Robert Findley <rfindley@google.com>
Issue created by stacks.
This stack
XrmcvQ
was reported by telemetry:crash/crash
runtime.gopanic:+69
runtime.panicmem:=262
runtime.sigpanic:+19
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+7
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+13
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+13
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+13
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+13
golang.org/x/tools/gopls/internal/util/persistent.(*mapNode).decref:+12
The text was updated successfully, but these errors were encountered: