From a37990c5c15e8077c5466ed139044ed26bae8c5e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sun, 4 Mar 2012 18:32:44 +1100 Subject: selftest: Rework Samba4.pm process termination. We now double-check the waitpid() result with kill(0, $pid) We now also send a SIGTERM, then a SIGKILL. Andrew Bartlett --- selftest/target/Samba4.pm | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'selftest/target/Samba4.pm') diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm index c96662abbc..8e27620589 100644 --- a/selftest/target/Samba4.pm +++ b/selftest/target/Samba4.pm @@ -1335,16 +1335,33 @@ sub teardown_env($$) $pid = $envvars->{SAMBA_PID}; my $count = 0; my $childpid; - until (Samba::cleanup_child($pid, "samba") < 0) { - # This should give it time to write out the gcov data + + # This should give it time to write out the gcov data + until ($count > 20) { + if (Samba::cleanup_child($pid, "samba") == -1) { + last; + } sleep(1); $count++; - last if $count > 20; } - + + if ($count <= 20 && kill(0, $pid) == 0) { + return; + } + + kill "TERM", $pid; + + until ($count > 20) { + if (Samba::cleanup_child($pid, "samba") == -1) { + last; + } + sleep(1); + $count++; + } + # If it is still around, kill it - if ($count > 20) { - print "server process $pid took more than $count seconds to exit, killing\n"; + if ($count > 20 && kill(0, $pid) == 0) { + warn "server process $pid took more than $count seconds to exit, killing\n"; kill 9, $pid; } -- cgit