From 25288e07dc16a698393bd50e224342d5c7ac3084 Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Fri, 26 Feb 2021 22:31:08 -0500 Subject: [PATCH] kfdtest: Handle EINTR in waitpid If the signal arrives too late, it interrupts waitpid. Handle this situation gracefully. Signed-off-by: Felix Kuehling Change-Id: If4925c352c81ba7fef8a940460b91f5e720b451e --- tests/kfdtest/src/KFDMemoryTest.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/kfdtest/src/KFDMemoryTest.cpp b/tests/kfdtest/src/KFDMemoryTest.cpp index fdbd5539c1..70c8033fcb 100644 --- a/tests/kfdtest/src/KFDMemoryTest.cpp +++ b/tests/kfdtest/src/KFDMemoryTest.cpp @@ -1812,9 +1812,13 @@ TEST_F(KFDMemoryTest, SignalHandling) { ASSERT_SUCCESS(hsaKmtMapMemoryToGPU(pDb, size, NULL)); LOG() << "Mapping finished" << std::endl; int childStatus; + pid_t pid; // Parent process, just wait for the child to finish - EXPECT_EQ(childPid, waitpid(childPid, &childStatus, 0)); + do { + pid = waitpid(childPid, &childStatus, 0); + } while(pid == -1 && errno == EINTR); + EXPECT_EQ(childPid, pid); EXPECT_NE(0, WIFEXITED(childStatus)); EXPECT_EQ(0, WEXITSTATUS(childStatus)); }