mirror of
https://github.com/golang/go
synced 2024-09-29 09:24:28 -06:00
runtime: check if mp.curg is nil before readgstatus in writeProcStatusForP
CL 546025 failed to check if mp.curg is nil, causing all sorts of failures. It can very well be nil in this context. For #64318. Fixes #64507. Change-Id: I4a95c3fa16d5e1dee8041394c4bdb9c6ba04f032 Reviewed-on: https://go-review.googlesource.com/c/go/+/546636 Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
26b1694d9a
commit
cf3d253c1b
@ -88,7 +88,7 @@ func (w traceWriter) writeProcStatusForP(pp *p, inSTW bool) traceWriter {
|
||||
// but it still owns the P (it's not in _Psyscall yet). The goroutine entering
|
||||
// _Gsyscall is the tracer's signal that the P its bound to is also in a syscall,
|
||||
// so we need to emit a status that matches. See #64318.
|
||||
if w.mp.p.ptr() == pp && readgstatus(w.mp.curg)&^_Gscan == _Gsyscall {
|
||||
if w.mp.p.ptr() == pp && w.mp.curg != nil && readgstatus(w.mp.curg)&^_Gscan == _Gsyscall {
|
||||
status = traceProcSyscall
|
||||
}
|
||||
case _Psyscall:
|
||||
|
Loading…
Reference in New Issue
Block a user