diff --git a/src/runtime/mgcmark.go b/src/runtime/mgcmark.go index 286aeb74a9..7819698def 100644 --- a/src/runtime/mgcmark.go +++ b/src/runtime/mgcmark.go @@ -973,7 +973,7 @@ func gcDrain(gcw *gcWork, flags gcDrainFlags) { // Drain root marking jobs. if work.markrootNext < work.markrootJobs { - for blocking || !gp.preempt { + for !(preemptible && gp.preempt) { job := atomic.Xadd(&work.markrootNext, +1) - 1 if job >= work.markrootJobs { break