-
Notifications
You must be signed in to change notification settings - Fork 18k
runtime: unexpected fault address 0 #67255
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
Comments
For what it's worth, the boom seems to happen with values := f(keys)
values = append(make([][]byte, 0), values...)
values = append(values, make([][]byte, 0)...) Obviously I can't make Go crash on such a simple repro :)) Something needs to bork within the garbage collector first I assume. |
Managed to blow it up verbose with Go 1.22.3 too:
Mostly the same crash, just one line difference in |
Without a repro these issues are hard to investigate. Are you sure that running with -race does not point any issues? Thanks. |
I think I see the bug here. Simplified:
When we call this with We need some sort of defense against past-the-end pointers in this generated code. Possibly introduced in CL 418554 |
Ha, reproed it. https://go.dev/play/p/zfi-jTPIIp_K ![]() |
Further simplified: https://go.dev/play/p/pLh04Z_lzSd ![]() |
Interestingly, with 100 items in the slice, it doesn't crash, with 53, it does. I'm assuming the former expands the array "nicely" whereas the latter hits some cornercase. |
PS: The reason I pasted the images and not just stack traces is because I'm unsure how consistent the crashes are, so figured I'd better make some "proof". |
Got a scarier one now: https://go.dev/play/p/AbxNigAFhCk ![]() |
@gopherbot please open a backport issue for 1.22. |
Backport issue(s) opened: #67258 (for 1.22). Remember to create the cherry-pick CL(s) as soon as the patch is submitted to master, according to https://go.dev/wiki/MinorReleases. |
Seems to be ok in 1.21 and earlier. |
Change https://go.dev/cl/584116 mentions this issue: |
Go version
go1.22.3 linux-amd64
Output of
go env
in your module/workspace:What did you do?
I can reproduce this consistently (i.e. happens 100% of the time), but it is extremely deep in a live system, so I have no idea how to make a proper repro out of it.
I have the following Go code crashing:
The crash is in the runtime memory management. With Go 1.22.2 I got the following dump:
With Go 1.22.3 I still see the exact crash but it didn't spit out this much crash dump, only a shorter one (which 1.22.2 also spits out sometimes instead of the long one)
The line referenced is the same exact last line the previous crash references; a simple slice append.
What did you see happen?
Boom
What did you expect to see?
No boom
The text was updated successfully, but these errors were encountered: