From 6254a7c3cac686fe2a53a481f189cea00afecc17 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 17 Nov 2019 23:42:14 +0100 Subject: [PATCH] unix: fix EINTR check in TestClockNanosleep err == EINTR needs to be checked before err != nil for the interrupted syscall to be retried properly. Follow-up for CL 207285 Updates golang/go#35622 Change-Id: I0f8c1a75eb96e11aaba284eb75716db044257cbd Reviewed-on: https://go-review.googlesource.com/c/sys/+/207290 Run-TryBot: Tobias Klauser TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- unix/syscall_linux_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unix/syscall_linux_test.go b/unix/syscall_linux_test.go index d28d5b5b..0ffe0f3e 100644 --- a/unix/syscall_linux_test.go +++ b/unix/syscall_linux_test.go @@ -585,11 +585,11 @@ func TestClockNanosleep(t *testing.T) { until := start.Add(delay) abs := unix.NsecToTimespec(until.UnixNano()) err := unix.ClockNanosleep(unix.CLOCK_REALTIME, unix.TIMER_ABSTIME, &abs, nil) - if err != nil { - t.Errorf("ClockNanosleep(CLOCK_REALTIME, TIMER_ABSTIME, %#v (=%v), nil) = %v", &abs, until, err) - } else if err == unix.EINTR { + if err == unix.EINTR { t.Logf("ClockNanosleep interrupted after %v", time.Since(start)) continue + } else if err != nil { + t.Errorf("ClockNanosleep(CLOCK_REALTIME, TIMER_ABSTIME, %#v (=%v), nil) = %v", &abs, until, err) } else if slept := time.Since(start); slept < delay { t.Errorf("ClockNanosleep(CLOCK_REALTIME, TIMER_ABSTIME, %#v (=%v), nil) slept only %v", &abs, until, slept) }