-
Notifications
You must be signed in to change notification settings - Fork 18k
cmd/link: fix deferreturn detector [1.12 backport] #32484
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
This could lead to incorrect GC (sweep increased allocation count, and its friends) on arm and s390x. |
Change https://golang.org/cl/181262 mentions this issue: |
Our backport policy is to only backport fixes for security issues, serious problems with no workaround, and documentation fixes. @randall77 I understand this is a serious issue, but can you please confirm there's no workaround for this in 1.12? If so, we should approve this cherry-pick candidate, otherwise we should not. /cc @ianlancetaylor |
There's no workaround for this. |
Closed by merging a6178d8 to release-branch.go1.12. |
The logic for detecting deferreturn calls is wrong. We used to look for a relocation whose symbol is runtime.deferreturn and has an offset of 0. But on some architectures, the relocation offset is not zero. These include arm (the offset is 0xebfffffe) and s390x (the offset is 6). This ends up setting the deferreturn offset at 0, so we end up using the entry point live map instead of the deferreturn live map in a frame which defers and then segfaults. Instead, use the IsDirectJump helper to find calls. Fixes #32484 Change-Id: Iecb530a7cf6eabd7233be7d0731ffa78873f3a54 Reviewed-on: https://go-review.googlesource.com/c/go/+/181258 Run-TryBot: Keith Randall <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Cherry Zhang <[email protected]> (cherry picked from commit 9eb4031) Reviewed-on: https://go-review.googlesource.com/c/go/+/181262 Reviewed-by: Emmanuel Odeke <[email protected]> Run-TryBot: Emmanuel Odeke <[email protected]>
@randall77 requested issue #32477 to be considered for backport to the next 1.12 minor release.
The text was updated successfully, but these errors were encountered: