From 82fa6eccf9326f8002e7c969a0c06faffc3113f1 Mon Sep 17 00:00:00 2001 From: Thomas Abraham Date: Mon, 6 May 2019 14:26:14 -0400 Subject: [PATCH] lib/spawn.c run_command: don't loop forever if waitpid() is returning ECHILD If SIGCHILD is being ignored, waitpid() will forever error with ECHILD and this loop with never end, so don't loop if it errors with ECHILD. --- lib/spawn.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/spawn.c b/lib/spawn.c index fc4ad95c..d0b5fb26 100644 --- a/lib/spawn.c +++ b/lib/spawn.c @@ -68,6 +68,8 @@ int run_command (const char *cmd, const char *argv[], do { wpid = waitpid (pid, status, 0); + if ((pid_t)-1 == wpid && errno == ECHILD) + break; } while ( ((pid_t)-1 == wpid && errno == EINTR) || ((pid_t)-1 != wpid && wpid != pid));