1
0
mirror of https://github.com/golang/go synced 2024-10-04 21:21:22 -06:00
go/src
Austin Clements cf225a1748 runtime: fix mark 2 completion in fractional/idle workers
Currently fractional and idle mark workers dispose of their gcWork
cache during mark 2 after incrementing work.nwait and after checking
whether there are any workers or any work available. This creates a
window for two races:

1) If the only remaining work is in this worker's gcWork cache, it
   will see that there are no more workers and no more work on the
   global lists (since it has not yet flushed its own cache) and
   prematurely signal mark 2 completion.

2) After this worker has incremented work.nwait but before it has
   flushed its cache, another worker may observe that there are no
   more workers and no more work and prematurely signal mark 2
   completion.

We can fix both of these by simply moving the cache flush above the
increment of nwait and the test of the completion condition.

This is probably contributing to #11694, though this alone is not
enough to fix it.

Change-Id: Idcf9656e5c460c5ea0d23c19c6c51e951f7716c3
Reviewed-on: https://go-review.googlesource.com/12646
Reviewed-by: Russ Cox <rsc@golang.org>
2015-07-27 19:58:56 +00:00
..
archive all: link to https instead of http 2015-07-11 14:36:33 +00:00
bufio bufio: Remove unneeded error initialization 2015-07-18 18:05:23 +00:00
builtin builtin: remove errant space in hyphenated adjective phrase 2015-06-28 21:41:38 +00:00
bytes Revert "bytes: document that Buffer values must not be copied" 2015-07-23 18:34:49 +00:00
cmd cmd/dist: run misc/cgo/testsovar on darwin and netbsd 2015-07-27 18:10:26 +00:00
compress all: link to https instead of http 2015-07-11 14:36:33 +00:00
container
crypto crypt/rand: update docs for Linux 2015-07-26 02:57:16 +00:00
database/sql database/sql: document closing requirements for Stmts 2015-07-15 04:31:41 +00:00
debug debug/pe: truncate pe sections to their size in memory 2015-07-10 03:33:38 +00:00
encoding encoding/xml: fix race using finfo.parents in s.trim 2015-07-27 18:03:45 +00:00
errors
expvar
flag flag: add comment stating that Set is called in sequence across the command line 2015-07-16 05:33:47 +00:00
fmt fmt: restore padding for %x on byte slices and strings 2015-06-29 07:17:23 +00:00
go go/internal/gcimporter: only run compile test if go tool is available 2015-07-27 17:54:02 +00:00
hash hash/crc32: speedup crc32 of IEEE using slicingBy8 2015-06-18 18:14:24 +00:00
html html/template: add examples to package and functions 2015-07-27 16:37:33 +00:00
image image/color: fix format typo in the tests. 2015-07-16 01:41:34 +00:00
index/suffixarray
internal internal/singleflight: deflake TestDoDupSuppress 2015-07-26 20:35:09 +00:00
io io: tweak Reader comment 2015-06-29 21:17:47 +00:00
log log: fix flaky test 2015-06-18 18:08:17 +00:00
math math/big: document rounding for Rat.FloatToString 2015-07-22 19:47:19 +00:00
mime all: link to https instead of http 2015-07-11 14:36:33 +00:00
net net/http: make Transport return proper error on cancel before response headers 2015-07-27 16:26:56 +00:00
os runtime/cgo: move TMPDIR magic out of os 2015-07-27 16:05:42 +00:00
path all: link to https instead of http 2015-07-11 14:36:33 +00:00
reflect cmd/compile: fix PtrTo(t) for unnamed t with embedded fields 2015-07-15 05:36:27 +00:00
regexp regexp: small correction to test comment 2015-06-14 17:09:13 +00:00
runtime runtime: fix mark 2 completion in fractional/idle workers 2015-07-27 19:58:56 +00:00
sort
strconv strconv: add examples to package 2015-07-22 16:00:21 +00:00
strings all: link to https for golang subdomains too 2015-07-12 04:42:40 +00:00
sync sync: disable flaky WaitGroup misuse test in short mode 2015-06-29 18:44:52 +00:00
syscall syscall: warn not to use FormatMessage 2015-07-21 02:26:27 +00:00
testing runtime/trace: add new package 2015-07-22 15:47:16 +00:00
text text/template: make zero Template work again 2015-06-24 22:27:33 +00:00
time time: make it clearer how to format a fractional second 2015-07-15 05:13:05 +00:00
unicode unicode: upgrade to 8.0.0 2015-06-26 18:01:29 +00:00
unsafe
all.bash
all.bat
all.rc
androidtest.bash androidtest.bash: robust cleanup in case of failure. 2015-07-17 21:12:12 +00:00
bootstrap.bash
buildall.bash buildall.bash: exit 1 when make.bash fails 2015-05-17 01:40:33 +00:00
clean.bash build: fix clean scripts 2015-06-18 16:13:13 +00:00
clean.bat build: fix clean scripts 2015-06-18 16:13:13 +00:00
clean.rc build: fix clean scripts 2015-06-18 16:13:13 +00:00
iostest.bash
make.bash doc: replace references to {5..9}{g,l} with go tool compile and go tool link 2015-06-17 04:05:50 +00:00
make.bat doc: replace references to {5..9}{g,l} with go tool compile and go tool link 2015-06-17 04:05:50 +00:00
Make.dist
make.rc doc: replace references to {5..9}{g,l} with go tool compile and go tool link 2015-06-17 04:05:50 +00:00
nacltest.bash
race.bash all: link to https instead of http 2015-07-11 14:36:33 +00:00
race.bat all: link to https instead of http 2015-07-11 14:36:33 +00:00
run.bash build: correct quoting of args in run.bash 2015-05-09 04:23:47 +00:00
run.bat
run.rc