diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-06-12 23:14:05 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-06-12 23:14:05 +0000 |
commit | a282a875c8856b024b51b8c643d080a6ea2dd8ab (patch) | |
tree | d3dcd53208e91dad347a36dceeff7ac3d626c251 /gcc/go | |
parent | b51483f48f3cc67cf4b508bdd9c4b6a47b44c53a (diff) | |
download | gcc-a282a875c8856b024b51b8c643d080a6ea2dd8ab.zip gcc-a282a875c8856b024b51b8c643d080a6ea2dd8ab.tar.gz gcc-a282a875c8856b024b51b8c643d080a6ea2dd8ab.tar.bz2 |
runtime: ignore _Gscan bit when checking status in CgocallDone
Also always access the atomicstatus field atomically.
The effect of not checking the _Gscan bit is that if the GC decides to
scan the stack just as the goroutine is leaving the system call, the
goroutine might fail to call exitsyscall. Then then typically causes
a runtime assertion failure later on. If we do call exitsyscall as we
should, it will stall (in casgstatus) until the _Gscan bit is cleared.
No separate test. I've observed causing sporadic failures running the
misc/cgo tests, but we don't currently have a way to run those
routinely for gccgo. I should fix that.
Reviewed-on: https://go-review.googlesource.com/45392
From-SVN: r249138
Diffstat (limited to 'gcc/go')
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index aebab77..d4a3129 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -61222d34c1b33a369bd86008a0541455dd17727e +908fc7e46ebe36658ed86b65a3d165fccb2e8576 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. |