1
0
mirror of https://github.com/golang/go synced 2024-09-30 14:28:33 -06:00

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 <austin@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Austin Clements 2019-10-28 22:14:04 -04:00
parent ac346a5fd9
commit b6bdf4587f

View File

@ -33,6 +33,10 @@ var waitForSigusr1 struct {
// the ID of the M the SIGUSR1 was received on. If no SIGUSR1 is // the ID of the M the SIGUSR1 was received on. If no SIGUSR1 is
// received for timeoutNS nanoseconds, it returns -1. // received for timeoutNS nanoseconds, it returns -1.
func WaitForSigusr1(ready func(mp *M), timeoutNS int64) (int64, int64) { func WaitForSigusr1(ready func(mp *M), timeoutNS int64) (int64, int64) {
lockOSThread()
// Make sure we can receive SIGUSR1.
unblocksig(_SIGUSR1)
mp := getg().m mp := getg().m
testSigusr1 = func(gp *g) bool { testSigusr1 = func(gp *g) bool {
waitForSigusr1.mp = gp.m waitForSigusr1.mp = gp.m
@ -46,6 +50,8 @@ func WaitForSigusr1(ready func(mp *M), timeoutNS int64) (int64, int64) {
waitForSigusr1.mp = nil waitForSigusr1.mp = nil
testSigusr1 = nil testSigusr1 = nil
unlockOSThread()
if !ok { if !ok {
return -1, -1 return -1, -1
} }