From 8094426a4168b78b924210e97ef178c78c1d296f Mon Sep 17 00:00:00 2001 From: Marek Chalupa Date: Mon, 2 Feb 2015 10:40:21 +0100 Subject: [PATCH] test-runner: wait for concrete pid After running a test in fork, we were waiting for any child to terminate. It is OK unless the child forks again. If the child calls fork, the waitid can catch the child's child termination, stop block and run another test while the former test is still running. This is racy i. e. when adding socket. Since we have test compositor which uses fork, this situation can occur pretty frequently. Signed-off-by: Marek Chalupa Reviewed-by: Jon A. Cruz Reviewed-by: Daniel Stone --- tests/test-runner.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test-runner.c b/tests/test-runner.c index 70fa0ae6..0412e858 100644 --- a/tests/test-runner.c +++ b/tests/test-runner.c @@ -351,7 +351,7 @@ int main(int argc, char *argv[]) if (pid == 0) run_test(t); /* never returns */ - if (waitid(P_ALL, 0, &info, WEXITED)) { + if (waitid(P_PID, pid, &info, WEXITED)) { stderr_set_color(RED); fprintf(stderr, "waitid failed: %m\n"); stderr_reset_color();