mirror of
https://github.com/golang/go
synced 2024-11-18 10:14:45 -07: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:
parent
ac346a5fd9
commit
b6bdf4587f
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user