]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: recursively disallow write barriers in sysmon
authorAustin Clements <austin@google.com>
Tue, 17 Nov 2015 22:31:04 +0000 (17:31 -0500)
committerAustin Clements <austin@google.com>
Thu, 19 Nov 2015 21:17:25 +0000 (21:17 +0000)
sysmon runs without a P. This means it can't interact with the garbage
collector, so write barriers not allowed in anything that sysmon does.

Fixes #10600.

Change-Id: I9de1283900dadee4f72e2ebfc8787123e382ae88
Reviewed-on: https://go-review.googlesource.com/17006
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/runtime/proc.go

index f89669f2a165361e5323cf41efc60e416889d501..f641d38a943e8423864b58b9731d8779125f0ff3 100644 (file)
@@ -3321,6 +3321,9 @@ func checkdead() {
 // This is a variable for testing purposes. It normally doesn't change.
 var forcegcperiod int64 = 2 * 60 * 1e9
 
+// Always runs without a P, so write barriers are not allowed.
+//
+//go:nowritebarrierrec
 func sysmon() {
        // If a heap span goes unused for 5 minutes after a garbage collection,
        // we hand it back to the operating system.