From b0a2a817571c52341603d7d089c4138b048c67c3 Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Dec 19 2019 20:24:04 +0000 Subject: [release-branch.go1.13] runtime: call goready in wakeScavenger instead of ready This changes fixes an oversight in wakeScavenger which would cause ready to be called off of the system stack. This change makes it so that wakeScavenger calls goready, which switches to the system stack before calling ready. Fixes #36127. Change-Id: Icb13f180b4d8fdd47c921eac1b896e3dd49e43b3 Reviewed-on: https://go-review.googlesource.com/c/go/+/200999 Run-TryBot: Michael Knyszek Reviewed-by: Keith Randall (cherry picked from commit 2c87be436bddd9b49f11959adee1ae817cb48ee1) Reviewed-on: https://go-review.googlesource.com/c/go/+/212103 TryBot-Result: Gobot Gobot Reviewed-by: Austin Clements --- diff --git a/src/runtime/mgcscavenge.go b/src/runtime/mgcscavenge.go index c4394a3..c71b3be 100644 --- a/src/runtime/mgcscavenge.go +++ b/src/runtime/mgcscavenge.go @@ -233,7 +233,7 @@ func wakeScavenger() { // Unpark the goroutine and tell it that there may have been a pacing // change. scavenge.parked = false - ready(scavenge.g, 0, true) + goready(scavenge.g, 0) } unlock(&scavenge.lock) }