From: Ian Lance Taylor Date: Tue, 13 Jun 2017 00:43:56 +0000 (+0000) Subject: runtime: clear isSystemGoroutine in goexit X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cd34e54306bfb2ef53fbb2405de435e375337ef9;p=gcc.git runtime: clear isSystemGoroutine in goexit Otherwise it may be set when the g struct is reused via gfput/gfget. Test is golang.org/x/net/http2 with GOMAXPROCS=12. Reviewed-on: https://go-review.googlesource.com/45430 From-SVN: r249143 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index d4a312908f0..a2ed1f30ffe 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -908fc7e46ebe36658ed86b65a3d165fccb2e8576 +3b44ad058abda0d1b0b6c928987270da50ab7431 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/go/runtime/proc.go b/libgo/go/runtime/proc.go index 038f20e977e..32bc14832b8 100644 --- a/libgo/go/runtime/proc.go +++ b/libgo/go/runtime/proc.go @@ -2251,6 +2251,7 @@ func goexit0(gp *g) { casgstatus(gp, _Grunning, _Gdead) if isSystemGoroutine(gp) { atomic.Xadd(&sched.ngsys, -1) + gp.isSystemGoroutine = false } gp.m = nil gp.lockedm = nil