cmd/go: go build -i cache mixup with GOARM=6 vs GOARM=7 #41223
Labels
FrozenDueToAge
NeedsInvestigation
Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone
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 checked out the rclone repository: https://github.com/rclone/rclone - probably any large repo which builds under ARM will do.
I then ran this script
What did you expect to see?
I expected to see 8 binaries with 2 md5sums
What did you see instead?
I see that the binaries built in parallel with
go build -i
appear to be differentNote that the differing binaries sometimes differ from run to run.
run 1
run 2-3
Identical to above
run 4
Discussion
This came to my attention in rclone/rclone#4553 - ARMv6 builds for 1.53.0 result in "Illegal instruction" error.
The root cause of that issue seems to be rclone's builder building the ARMv6 and ARMv7 releases in parallel and somehow parts of the ARMv7 binary get mixed into the ARMv6 binary resulting in the illegal instruction on ARMv6. However the binary does run on ARMv7 indicating that it isn't just random corruption, it is probably compilation units that have got mixed up.
Rclone's builder is using
go build -i
for historical reasons (namely that is how you used to get build caching). Removing the-i
from the command appears to fix the problem.The text was updated successfully, but these errors were encountered: