diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go index 8475d168d887f..f1112a6ae324f 100644 --- a/src/runtime/mgc.go +++ b/src/runtime/mgc.go @@ -628,10 +628,12 @@ func (c *gcControllerState) endCycle() { //go:nowritebarrier func (c *gcControllerState) enlistWorker() { // If there are idle Ps, wake one so it will run an idle worker. - if atomic.Load(&sched.npidle) != 0 && atomic.Load(&sched.nmspinning) == 0 { - wakep() - return - } + // NOTE: This is suspected of causing deadlocks. See golang.org/issue/19112. + // + // if atomic.Load(&sched.npidle) != 0 && atomic.Load(&sched.nmspinning) == 0 { + // wakep() + // return + // } // There are no idle Ps. If we need more dedicated workers, // try to preempt a running P so it will switch to a worker.