]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: convert freezing to atomic type
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Wed, 17 Aug 2022 10:28:58 +0000 (17:28 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Wed, 17 Aug 2022 17:47:28 +0000 (17:47 +0000)
Updates #53821

Change-Id: I77fcdb972b8920e1fb42248ce5bd2c3d2d0bd27e
Reviewed-on: https://go-review.googlesource.com/c/go/+/423885
Reviewed-by: Michael Pratt <mpratt@google.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>

src/runtime/proc.go

index 0e74eb1075dfa119474ecfa8adc8a600a13d33da..b57644cc21de547884121f018f1f3bcbf858214f 100644 (file)
@@ -868,13 +868,13 @@ const freezeStopWait = 0x7fffffff
 
 // freezing is set to non-zero if the runtime is trying to freeze the
 // world.
-var freezing uint32
+var freezing atomic.Bool
 
 // Similar to stopTheWorld but best-effort and can be called several times.
 // There is no reverse operation, used during crashing.
 // This function must not lock any mutexes.
 func freezetheworld() {
-       atomic.Store(&freezing, 1)
+       freezing.Store(true)
        // stopwait and preemption requests can be lost
        // due to races with concurrently executing threads,
        // so try several times
@@ -1240,7 +1240,7 @@ func stopTheWorldWithSema() {
                        }
                }
        }
-       if atomic.Load(&freezing) != 0 {
+       if freezing.Load() {
                // Some other thread is panicking. This can cause the
                // sanity checks above to fail if the panic happens in
                // the signal handler on a stopped thread. Either way,