- Notifications
You must be signed in to change notification settings - Fork329
Fix unaligned load error on 32-bit architectures#438
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
3a71544
to4eda6c3
CompareOn some 32-bit architectures, 64-bit atomic operations panic when thevalue is not aligned properly.In this package, this causes netConn operations to panic when compilingwith GOARCH=386, since netConn does atomic operations with int64 valuesin the netConn struct (namely, with readExpired and writeExpired).This commit fixes this by moving readExpired and writeExpired to thebeginning of the struct, which makes them properly aligned.
4eda6c3
to4c27331
CompareAh darn. Could have sworn I fixed this in the past. Thanks@x0wllaar |
nhooyr added a commit that referenced this pull requestMar 7, 2024
Fix unaligned load error on 32-bit architecturesCloses#432
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading.Please reload this page.
On some 32-bit architectures, 64-bit atomic operations panic when the value is not aligned properly.
In this package, this causes netConn operations to panic when compiling with
GOARCH=386
, since netConn does atomic operations with int64 values in the netConn struct (namely, with readExpired and writeExpired):This commit fixes this by moving readExpired and writeExpired to the beginning of the struct, which makes them properly aligned.
I didn't test, but I think this error will also occur on 32-bit ARM (Raspberry Pi Zero) and MIPS32 (a bunch of routers use that, which is a real use case for me), seehttps://pkg.go.dev/sync/atomic#pkg-note-BUG andgrafana/loki#6944