From cd34e54306bfb2ef53fbb2405de435e375337ef9 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 13 Jun 2017 00:43:56 +0000 Subject: [PATCH] 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 --- gcc/go/gofrontend/MERGE | 2 +- libgo/go/runtime/proc.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index d4a3129..a2ed1f3 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 038f20e..32bc148 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 -- 2.7.4