From b6bdf4587f7b58b78982553b7d10b73d0a381152 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Mon, 28 Oct 2019 22:14:04 -0400 Subject: [PATCH] runtime: unblock SIGUSR1 for TestPreemptM TestPreemptM tests signal delivery using SIGUSR1, but (for unknown reasons) SIGUSR1 is blocked by default on android/arm and android/arm64, causing the test to fail. This fixes the test by ensuring that SIGUSR1 is unblocked for this test. Updates #10958, #24543. Change-Id: I9f81fbab53f96c74622aabcb6f5276f79e2b6d33 Reviewed-on: https://go-review.googlesource.com/c/go/+/203957 Run-TryBot: Austin Clements Reviewed-by: Cherry Zhang TryBot-Result: Gobot Gobot --- src/runtime/export_unix_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/runtime/export_unix_test.go b/src/runtime/export_unix_test.go index 3f8bff619d..7af1c1dd54 100644 --- a/src/runtime/export_unix_test.go +++ b/src/runtime/export_unix_test.go @@ -33,6 +33,10 @@ var waitForSigusr1 struct { // the ID of the M the SIGUSR1 was received on. If no SIGUSR1 is // received for timeoutNS nanoseconds, it returns -1. func WaitForSigusr1(ready func(mp *M), timeoutNS int64) (int64, int64) { + lockOSThread() + // Make sure we can receive SIGUSR1. + unblocksig(_SIGUSR1) + mp := getg().m testSigusr1 = func(gp *g) bool { waitForSigusr1.mp = gp.m @@ -46,6 +50,8 @@ func WaitForSigusr1(ready func(mp *M), timeoutNS int64) (int64, int64) { waitForSigusr1.mp = nil testSigusr1 = nil + unlockOSThread() + if !ok { return -1, -1 }