]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.18] runtime: align m.procid to 8 bytes on 32-bit systems
authorMichael Pratt <mpratt@google.com>
Tue, 12 Apr 2022 16:12:37 +0000 (12:12 -0400)
committerHeschi Kreinick <heschi@google.com>
Mon, 9 May 2022 20:24:44 +0000 (20:24 +0000)
https://go-review.googlesource.com/c/go/+/383434 started using
atomic Load64 on this field, which breaks 32 bit platforms which
require 64-bit alignment of uint64s that are passed to atomic operations.

Not sure why this doesn't break everywhere, but I saw it break on
my laptop during all.bash.

For #51776.
Fixes #52305.

Change-Id: Ida27b23068b3cc7208fce3c97b69a464ccf68209
Reviewed-on: https://go-review.googlesource.com/c/go/+/399754
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
(cherry-picked from commit ea7e3e3c0f561d1115d647e3e24ca61d0382e1ac)
Reviewed-on: https://go-review.googlesource.com/c/go/+/399954
Run-TryBot: Michael Pratt <mpratt@google.com>

src/runtime/runtime2.go

index 3d01ac517137c230c9b8527a26be18d250b1beb8..b40045e4a5b36e399192068c52e6881807062401 100644 (file)
@@ -514,6 +514,7 @@ type m struct {
        g0      *g     // goroutine with scheduling stack
        morebuf gobuf  // gobuf arg to morestack
        divmod  uint32 // div/mod denominator for arm - known to liblink
+       _       uint32 // align next field to 8 bytes
 
        // Fields not known to debuggers.
        procid        uint64            // for debuggers, but offset not hard-coded