When we're jumping time forward, it means everyone is asleep, so there
should always be an M available. Furthermore, this causes both
allocation and write barriers in contexts that may be running without
a P (such as in sysmon).
Hence, replace this allocation with a throw.
Updates #10600.
Change-Id: I2cee70d5db828d0044082878995949edb25dda5f
Reviewed-on: https://go-review.googlesource.com/16815
Reviewed-by: Russ Cox <rsc@golang.org>
}
mp := mget()
if mp == nil {
- newm(nil, _p_)
- } else {
- mp.nextp.set(_p_)
- notewakeup(&mp.park)
+ // There should always be a free M since
+ // nothing is running.
+ throw("checkdead: no m for timer")
}
+ mp.nextp.set(_p_)
+ notewakeup(&mp.park)
return
}