diff options
| author | Keith Randall <khr@golang.org> | 2014-09-16 17:26:16 -0700 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2014-09-16 17:26:16 -0700 |
| commit | da8cf5438aa676a99e8bb55c94011b2581743e1a (patch) | |
| tree | c5ce0da4ace36faa3cae7e0a8f1891251cc0cfba /src/sync | |
| parent | e28746c44494030e9b44aa523cd5a21ebfe39ff5 (diff) | |
| download | go-da8cf5438aa676a99e8bb55c94011b2581743e1a.tar.xz | |
runtime: always run semacquire on the G stack
semacquire might need to park the currently running G. It can
only park if called from the G stack (because it has no way of
saving the M stack state). So all calls to semacquire must come
from the G stack.
The three violators are GOMAXPROCS, ReadMemStats, and WriteHeapDump.
This change moves the semacquire call earlier, out of their C code
and into their Go code.
This seldom caused bugs because semacquire seldom actually had
to park the caller. But it did happen intermittently.
Fixes #8749
LGTM=dvyukov
R=golang-codereviews, dvyukov, bradfitz
CC=golang-codereviews
https://golang.org/cl/144940043
Diffstat (limited to 'src/sync')
0 files changed, 0 insertions, 0 deletions
