]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: don't panic in castogscanstatus
authorMichael Anthony Knyszek <mknyszek@google.com>
Mon, 3 Nov 2025 22:29:36 +0000 (22:29 +0000)
committerMichael Knyszek <mknyszek@google.com>
Mon, 3 Nov 2025 22:50:47 +0000 (14:50 -0800)
The panic calls gopanic which may have write barriers, but
castogscanstatus is called from //go:nowritebarrier contexts.

The panic is dead code anyway, and appears immediately before a call to
'throw'.

Change-Id: I4a8e296b71bf002295a3aa1db4f723c305ed939a
Reviewed-on: https://go-review.googlesource.com/c/go/+/717406
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/runtime/proc.go

index ef3a0b7a0e4c60104b8067a91ecae05c7cefa488..91740d1fa6d58faa3de598635998fd7c8b5cc0e2 100644 (file)
@@ -1254,8 +1254,8 @@ func castogscanstatus(gp *g, oldval, newval uint32) bool {
                }
        }
        print("runtime: castogscanstatus oldval=", hex(oldval), " newval=", hex(newval), "\n")
-       throw("castogscanstatus")
-       panic("not reached")
+       throw("bad oldval passed to castogscanstatus")
+       return false
 }
 
 // casgstatusAlwaysTrack is a debug flag that causes casgstatus to always track