From: Michael Knyszek Date: Fri, 24 Jan 2020 16:50:53 +0000 (+0000) Subject: Revert "runtime: release worldsema before Gosched in STW GC mode" X-Git-Tag: go1.14rc1~68 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ad3cef184e55ab53306a466bda100dc72c40fc3b;p=gostls13.git Revert "runtime: release worldsema before Gosched in STW GC mode" This reverts commit 05511a5c0ae238325c10b0e4e44c3f66f928e4cf, CL 208379. Reason for revert: So that we can cleanly revert https://golang.org/cl/182657. Change-Id: I4fdf4f864a093db7866b3306f0f8f856b9f4d684 Reviewed-on: https://go-review.googlesource.com/c/go/+/216357 Run-TryBot: Michael Knyszek TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang --- diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go index bda8eadc9d..0bc5568442 100644 --- a/src/runtime/mgc.go +++ b/src/runtime/mgc.go @@ -1368,13 +1368,6 @@ func gcStart(trigger gcTrigger) { work.pauseNS += now - work.pauseStart work.tMark = now }) - - // Release the world sema before Gosched() in STW mode - // because we will need to reacquire it later but before - // this goroutine becomes runnable again, and we could - // self-deadlock otherwise. - semrelease(&worldsema) - // In STW mode, we could block the instant systemstack // returns, so don't do anything important here. Make sure we // block rather than returning to user code. @@ -1382,6 +1375,7 @@ func gcStart(trigger gcTrigger) { Gosched() } + semrelease(&worldsema) semrelease(&work.startSema) }