From 8201ebd40b0270eb6d36ff95dc69fb5ca6bae1db Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Thu, 22 Oct 2009 22:16:17 +0000 Subject: [PATCH] Use 'waitpid' instead of 'wait'. Basing Program::Wait() on 'wait()' prevents it being correct within a multithreaded context. This address: PR 5277 (Program::Wait is unsafe to call from multiple threads). Note: If waitpid() turns out to be non-portable, we can add more autoconf magic, or look into another solution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84903 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/System/Unix/Program.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/System/Unix/Program.inc b/lib/System/Unix/Program.inc index 56dea250a77..c52f3a88c04 100644 --- a/lib/System/Unix/Program.inc +++ b/lib/System/Unix/Program.inc @@ -244,7 +244,7 @@ Program::Wait(unsigned secondsToWait, int status; uint64_t pid = reinterpret_cast(Data_); pid_t child = static_cast(pid); - while (wait(&status) != child) + while (waitpid(pid, &status, 0) != child) if (secondsToWait && errno == EINTR) { // Kill the child. kill(child, SIGKILL); -- 2.11.0