]> Cypherpunks repositories - gostls13.git/commit
runtime: make next_gc atomically accessed
authorMichael Anthony Knyszek <mknyszek@google.com>
Thu, 23 Jul 2020 20:24:56 +0000 (20:24 +0000)
committerMichael Knyszek <mknyszek@google.com>
Mon, 26 Oct 2020 17:25:54 +0000 (17:25 +0000)
commitf5c6875f3228951afa1fcf2ec01c614e0fb7e2dd
tree319fc30ada1b03b23908229d77f6662d2e8cf30d
parent93d7d1685ee9e9f296e20f6c712796e54602e891
runtime: make next_gc atomically accessed

next_gc is mostly updated only during a STW, but may occasionally be
updated by calls to e.g. debug.SetGCPercent. In this case the update is
supposed to be protected by the heap lock, but in reality it's accessed
by gcController.revise which may be called without the heap lock held
(despite its documentation, which will be updated in a later change).

Change the synchronization policy on next_gc so that it's atomically
accessed when the world is not stopped to aid in making revise safe for
concurrent use.

Change-Id: I79657a72f91563f3241aaeda66e8a7757d399529
Reviewed-on: https://go-review.googlesource.com/c/go/+/246962
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
src/runtime/mgc.go
src/runtime/mgcscavenge.go
src/runtime/mstats.go
src/runtime/trace.go