From 7e7ecf5cbbd5c0b61e693a65c865bf372fc2ea80 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Wed, 17 Aug 2022 17:28:58 +0700 Subject: [PATCH] runtime: convert freezing to atomic type Updates #53821 Change-Id: I77fcdb972b8920e1fb42248ce5bd2c3d2d0bd27e Reviewed-on: https://go-review.googlesource.com/c/go/+/423885 Reviewed-by: Michael Pratt Run-TryBot: Cuong Manh Le TryBot-Result: Gopher Robot Reviewed-by: Keith Randall Auto-Submit: Cuong Manh Le --- src/runtime/proc.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/runtime/proc.go b/src/runtime/proc.go index 0e74eb1075..b57644cc21 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -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, -- 2.48.1