From dff9108d988c3bd1ef323db2938631132f2337fe Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Fri, 24 Jul 2015 15:38:16 -0400 Subject: [PATCH] runtime: make notetsleep_internal nowritebarrier When notetsleep_internal is called from notetsleepg, notetsleepg has just given up the P, so write barriers are not allowed in notetsleep_internal. Change-Id: I1b214fa388b1ea05b8ce2dcfe1c0074c0a3c8870 Reviewed-on: https://go-review.googlesource.com/12647 Reviewed-by: Rick Hudson Reviewed-by: Russ Cox --- src/runtime/lock_futex.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/runtime/lock_futex.go b/src/runtime/lock_futex.go index 1765a6ce66..768fd5769f 100644 --- a/src/runtime/lock_futex.go +++ b/src/runtime/lock_futex.go @@ -144,7 +144,11 @@ func notesleep(n *note) { } } +// May run with m.p==nil if called from notetsleep, so write barriers +// are not allowed. +// //go:nosplit +//go:nowritebarrier func notetsleep_internal(n *note, ns int64) bool { gp := getg()