-
Notifications
You must be signed in to change notification settings - Fork 18k
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: invalid pc-encoded table f=sync/atomic.StoreUintptr #11653
Comments
CC @mwhudson |
Mikioh says says this bug occurs consistently since the sysmon change, so CC @aclements @RLH |
Yeah, I looked at this very briefly but if it's that change that breaks things, I don't think it's in my area.. |
It looks like this is happening really early in initialization. I haven't looked at the test in particular, but the error message is informative. It's trying to look up a PC at ...90d0 in StoreUintptr. StoreUintptr starts at ...79e0, and StoreUintptr is only one instruction long. So the mapping from pc to functions is broken somehow. Given that StoreUintptr is the last function in its file (and its package?), we're probably not trying to look up that function at all, but some subsequent function that doesn't have a symtab entry. Or we're getting the wrong module for it. |
That makes me think of #10747 but that was fixed quite a few days ago now. |
The logic about checking the pcln table assumes that if you know the PC of the next entry in the table, the current entry has code up to about that point. In particular, it assumes the padding between the current entry and the next entry is no more than 16 bytes, because no Go architecture aligns functions to more than 16 bytes. But if you're using the extra linking modes then foreign code chunks (.text sections from foreign .o files) end up in the text segment too, and they can have arbitrarily larger alignments. Perhaps that is what happened here. I will disable the test if the thing coming up is not Go code. |
CL https://golang.org/cl/12550 mentions this issue. |
See http://build.golang.org/log/ed507c93da11bd30cd9baedc88d06565456b267a.
Looks like it's stable to reproduce from 4b2774f.
The text was updated successfully, but these errors were encountered: