diff --git a/tests/sys_ptrace_test.cpp b/tests/sys_ptrace_test.cpp
index 78fcf2b..d460dec 100644
--- a/tests/sys_ptrace_test.cpp
+++ b/tests/sys_ptrace_test.cpp
@@ -51,7 +51,7 @@
   ~ChildGuard() {
     kill(pid, SIGKILL);
     int status;
-    waitpid(pid, &status, 0);
+    TEMP_FAILURE_RETRY(waitpid(pid, &status, 0));
   }
 
  private:
@@ -184,7 +184,7 @@
   ChildGuard guard(child);
 
   int status;
-  ASSERT_EQ(child, waitpid(child, &status, __WALL)) << strerror(errno);
+  ASSERT_EQ(child, TEMP_FAILURE_RETRY(waitpid(child, &status, __WALL))) << strerror(errno);
   ASSERT_TRUE(WIFSTOPPED(status)) << "Status was: " << status;
   ASSERT_EQ(SIGSTOP, WSTOPSIG(status)) << "Status was: " << status;
 
@@ -196,7 +196,7 @@
   set_watchpoint(child, uintptr_t(&data) + offset, size);
 
   ASSERT_EQ(0, ptrace(PTRACE_CONT, child, nullptr, nullptr)) << strerror(errno);
-  ASSERT_EQ(child, waitpid(child, &status, __WALL)) << strerror(errno);
+  ASSERT_EQ(child, TEMP_FAILURE_RETRY(waitpid(child, &status, __WALL))) << strerror(errno);
   ASSERT_TRUE(WIFSTOPPED(status)) << "Status was: " << status;
   ASSERT_EQ(SIGTRAP, WSTOPSIG(status)) << "Status was: " << status;
 
@@ -364,7 +364,7 @@
   ChildGuard guard(child);
 
   int status;
-  ASSERT_EQ(child, waitpid(child, &status, __WALL)) << strerror(errno);
+  ASSERT_EQ(child, TEMP_FAILURE_RETRY(waitpid(child, &status, __WALL))) << strerror(errno);
   ASSERT_TRUE(WIFSTOPPED(status)) << "Status was: " << status;
   ASSERT_EQ(SIGSTOP, WSTOPSIG(status)) << "Status was: " << status;
 
@@ -376,7 +376,7 @@
   set_breakpoint(child);
 
   ASSERT_EQ(0, ptrace(PTRACE_CONT, child, nullptr, nullptr)) << strerror(errno);
-  ASSERT_EQ(child, waitpid(child, &status, __WALL)) << strerror(errno);
+  ASSERT_EQ(child, TEMP_FAILURE_RETRY(waitpid(child, &status, __WALL))) << strerror(errno);
   ASSERT_TRUE(WIFSTOPPED(status)) << "Status was: " << status;
   ASSERT_EQ(SIGTRAP, WSTOPSIG(status)) << "Status was: " << status;
 
@@ -436,7 +436,7 @@
     }
 
     int result;
-    pid_t rc = waitpid(tracer, &result, 0);
+    pid_t rc = TEMP_FAILURE_RETRY(waitpid(tracer, &result, 0));
     if (rc != tracer) {
       printf("waitpid returned %d (%s)\n", rc, strerror(errno));
       return false;
@@ -463,7 +463,7 @@
     }
 
     int result;
-    pid_t rc = waitpid(worker, &result, WNOHANG);
+    pid_t rc = TEMP_FAILURE_RETRY(waitpid(worker, &result, WNOHANG));
     if (rc != 0) {
       printf("worker exited prematurely\n");
       return false;
@@ -471,7 +471,7 @@
 
     worker_pipe_write.reset();
 
-    rc = waitpid(worker, &result, 0);
+    rc = TEMP_FAILURE_RETRY(waitpid(worker, &result, 0));
     if (rc != worker) {
       printf("waitpid for worker returned %d (%s)\n", rc, strerror(errno));
       return false;
@@ -517,9 +517,9 @@
   std::this_thread::sleep_for(250ms);
 
   int result;
-  ASSERT_EQ(0, waitpid(worker, &result, WNOHANG));
+  ASSERT_EQ(0, TEMP_FAILURE_RETRY(waitpid(worker, &result, WNOHANG)));
   ASSERT_TRUE(WaitForTracer());
-  ASSERT_EQ(worker, waitpid(worker, &result, 0));
+  ASSERT_EQ(worker, TEMP_FAILURE_RETRY(waitpid(worker, &result, 0)));
 }
 
 TEST_F(PtraceResumptionTest, seize) {
