-
Notifications
You must be signed in to change notification settings - Fork 17.7k
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
runtime: SIGSEGV in mapassign_fast64 during cmd/vet #35689
Comments
This is coming from the The failing line is here: go/src/go/internal/gcimporter/iimport.go Line 112 in 95b8cbf
That map is a field on an unshared, local struct of type go/src/go/internal/gcimporter/iimport.go Line 103 in 95b8cbf
This looks like a compiler or runtime bug to me. |
Marking as release-blocker to at least triage before 1.14. (If we understand the root cause better, we can reprioritize as appropriate.) |
I compiled cmd/vet at the indicating commit (0ac8739) and got the exact same binary, as far as I can tell. The assembly language, with the indicated SEGV is here:
So we are loading the argument h (type hmap) into %rax and jumping to a panic if it is nil/zero (first three assembly instructions). But then when we do a load through (%rax), we are getting a SEGV and the address for the SEGV is indicated as 0 ("unexpected fault address 0x0") @aclements Any chance that preemption is happening between these instructions, and not restoring the %rax register (i.e. changing it from non-zero to zero)? Just a thought, since I thought that there was still no pre-emption in runtime code. Otherwise, this is pretty mysterious, since the map was just initialized above, as pointed out by @bcmills One other thing to note is that the h arg of runtime.mapassign_fast64 in the stacktrace looks like a bogus pointer (I think) -- 0x637469796d2f656d. But I'm not sure these stack args are always right during a panic, etc. But it is definitely not zero. |
Just to point out one thing that I have observed as an uninformed reporter of these bugs: I only ever see these problems immediately after (~1 sec) starting a command, e.g. |
@myitcv, what kernel version and distro are you running? @danscales, failing to restore rax seems really unlikely. I think this is a cascade from some earlier corruption. Though my hunch is that earlier corruption has to do some register corruption. |
@aclements - you have the correct details for me in #35326 (comment). If it's relevant, I'm running this in a VMWare Fusion virtual host atop macOS 10.12.6. I can of course provide any more details you need. |
Ah, thanks. I'm losing track of who's reported what. I'll add this to the super-bug (#35777). I suspect the VMWare isn't relevant, but that's good to know. |
Any chance you're able to reproduce this? |
Unfortunately not. All of the instances I have reported have been totally random and unreproducible. The other "feature" I observed was noted in #35689 (comment). i.e. I have only seen issues during the compile step of running |
Just as a follow up: setting |
Thanks. Since this particular failure doesn't seem to be reproducible, closing in favor of the super-bug. |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
I just got a random failure running tests on
govim
:What did you expect to see?
No panic
What did you see instead?
Panic
cc @randall77 @bcmills @jayconrod
The text was updated successfully, but these errors were encountered: