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 <mpratt@google.com>
Auto-Submit: Nicolas Hillegeer <aktau@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Nicolas Hillegeer 2024-12-12 08:35:17 -08:00 committed by Gopher Robot
parent 81c66e71d4
commit ecda82012d

View file

@ -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 {