From: Nicolas Hillegeer Date: Thu, 12 Dec 2024 16:35:17 +0000 (-0800) Subject: runtime: only read pp.m in schedtrace if needed X-Git-Tag: go1.25rc1~1002 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ecda82012d3cff21c758fa45eb5e86365015a131;p=gostls13.git runtime: only read pp.m in schedtrace if needed Change-Id: Iad3353431a2ef97c1e0c440bdd84b78cb5ea990e Reviewed-on: https://go-review.googlesource.com/c/go/+/635635 Reviewed-by: Michael Pratt Auto-Submit: Nicolas Hillegeer LUCI-TryBot-Result: Go LUCI --- diff --git a/src/runtime/proc.go b/src/runtime/proc.go index ce6cf88d0c..c9d04edd07 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -6391,11 +6391,11 @@ func schedtrace(detailed bool) { // Even if we hold schedlock, most data can be changed concurrently. // E.g. (p->m ? p->m->id : -1) can crash if p->m changes from non-nil to nil. for i, pp := range allp { - mp := pp.m.ptr() h := atomic.Load(&pp.runqhead) t := atomic.Load(&pp.runqtail) if detailed { print(" P", i, ": status=", pp.status, " schedtick=", pp.schedtick, " syscalltick=", pp.syscalltick, " m=") + mp := pp.m.ptr() if mp != nil { print(mp.id) } else {