From 3c0fbeea7d57fe474865061d5c0bf3b7a01877c8 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 4 Nov 2019 20:45:48 -0800 Subject: [PATCH] runtime: disable preemption during test calls to futexsleep Fixes #35347 Change-Id: If7380f29e97a5abe86cdd5e2853323de7997ccfc Reviewed-on: https://go-review.googlesource.com/c/go/+/205378 Run-TryBot: Ian Lance Taylor Reviewed-by: Cherry Zhang --- src/runtime/export_futex_test.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/runtime/export_futex_test.go b/src/runtime/export_futex_test.go index 5e272364d1..a727a93114 100644 --- a/src/runtime/export_futex_test.go +++ b/src/runtime/export_futex_test.go @@ -6,5 +6,14 @@ package runtime -var Futexsleep = futexsleep var Futexwakeup = futexwakeup + +//go:nosplit +func Futexsleep(addr *uint32, val uint32, ns int64) { + // Temporarily disable preemption so that a preemption signal + // doesn't interrupt the system call. + poff := debug.asyncpreemptoff + debug.asyncpreemptoff = 1 + futexsleep(addr, val, ns) + debug.asyncpreemptoff = poff +}