]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: unblock SIGUSR1 for TestPreemptM
authorAustin Clements <austin@google.com>
Tue, 29 Oct 2019 02:14:04 +0000 (22:14 -0400)
committerAustin Clements <austin@google.com>
Tue, 29 Oct 2019 13:46:21 +0000 (13:46 +0000)
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>

src/runtime/export_unix_test.go

index 3f8bff619dfcf36c90835bc536f839529857baf6..7af1c1dd549167d951fc6949e7a31c44402e32a8 100644 (file)
@@ -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
        }