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
cmd/compile: 32-bit random data corruption [1.15 backport] #43575
Comments
Change https://golang.org/cl/282558 mentions this issue: |
This bug causes random corruption in rare cases involving large structs being copied from function result to heap to function argument. Workaround are possible but difficult. |
any ETA on this? would like to avoid sweeping our codebase adjusting anonymous functions modifying closure vars if possible |
Closed by merging 27d5fcc to release-branch.go1.15. |
… source is volatile Current optimization: When we copy a->b and then b->c, we might as well copy a->c instead of b->c (then b might be dead and go away). *Except* if a is a volatile location (might be clobbered by a call). In that case, we really do want to copy a immediately, because there might be a call before we can do the a->c copy. User calls can't happen in between, because the rule matches up the memory states. But calls inserted for memory barriers, particularly runtime.typedmemmove, can. (I guess we could introduce a register-calling-convention version of runtime.typedmemmove, but that seems a bigger change than this one.) Fixes #43575 Change-Id: Ifa518bb1a6f3a8dd46c352d4fd54ea9713b3eb1a Reviewed-on: https://go-review.googlesource.com/c/go/+/282492 Trust: Keith Randall <khr@golang.org> Trust: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> (cherry picked from commit 304f769) Reviewed-on: https://go-review.googlesource.com/c/go/+/282558 Trust: Dmitri Shuralyov <dmitshur@golang.org>
ack, thanks |
@randall77 requested issue #43570 to be considered for backport to the next 1.15 minor release.
The text was updated successfully, but these errors were encountered: