From: Simon McVittie Date: Tue, 14 Feb 2017 19:40:28 +0000 (+0000) Subject: test-utils-glib: Wait for the killed process to exit X-Git-Tag: dbus-1.11.12~44 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ec9d39b95c2ff335992ff71e05b1fa6dbfec1342;p=thirdparty%2Fdbus.git test-utils-glib: Wait for the killed process to exit Otherwise, removing transient service directories that are being watched by the dbus-daemon can fail with EAGAIN. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=99825 Reviewed-by: Philip Withnall Signed-off-by: Simon McVittie --- diff --git a/test/test-utils-glib.c b/test/test-utils-glib.c index c5059edbe..fac5ddaf7 100644 --- a/test/test-utils-glib.c +++ b/test/test-utils-glib.c @@ -418,9 +418,25 @@ test_connect_to_bus_as_user (TestMainContext *ctx, #endif } +static void +pid_died (GPid pid, + gint status, + gpointer user_data) +{ + gboolean *result = user_data; + + g_assert (result != NULL); + g_assert (!*result); + *result = TRUE; +} + void test_kill_pid (GPid pid) { + gint died = FALSE; + + g_child_watch_add (pid, pid_died, &died); + #ifdef DBUS_WIN if (pid != NULL) TerminateProcess (pid, 1); @@ -428,6 +444,9 @@ test_kill_pid (GPid pid) if (pid > 0) kill (pid, SIGTERM); #endif + + while (!died) + g_main_context_iteration (NULL, TRUE); } static gboolean