[PATCH 5/7] lib/drmtest: make signal process cleanup more robust

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If we skip a test and and fail somewhere the parent might die before the
child. So add some cleanup to handle this case. Also make sure that the
parent indeed waits for the child to die.

This is required to make the latest version of the piglit runner happy,
it tends to wait for all zombies to disappear.

Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx>
---
 lib/drmtest.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 767c8dc..77e8002 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -625,11 +625,18 @@ static void sig_handler(int i)
 	sig_stat++;
 }
 
+static void signal_helper_exit_handler(int sig)
+{
+	drmtest_stop_signal_helper();
+}
+
 void drmtest_fork_signal_helper(void)
 {
 	pid_t pid;
 	sighandler_t oldsig;
 
+	drmtest_install_exit_handler(signal_helper_exit_handler);
+
 	signal(SIGUSR1, sig_handler);
 	oldsig = signal(SIGQUIT, SIG_DFL);
 	pid = fork();
@@ -644,8 +651,12 @@ void drmtest_fork_signal_helper(void)
 
 void drmtest_stop_signal_helper(void)
 {
-	if (signal_helper != -1)
+	int exitcode;
+
+	if (signal_helper != -1) {
 		kill(signal_helper, SIGQUIT);
+		wait(&exitcode);
+	}
 
 	if (sig_stat)
 		fprintf(stdout, "signal handler called %llu times\n", sig_stat);
-- 
1.8.3.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux