Always wrap waitpid in TEMP_FAILURE_RETRY.
Strictly not needed in the WNOHANG case, but it's probably best to have
every waitpid wrapped for future copy & pasters.
Bug: https://issuetracker.google.com/69525592
Test: ran tests
Change-Id: I013b0a52d2753e3d32638e9b84c79af7327fb405
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) {