diff --git a/mysql-test/lib/My/SafeProcess.pm b/mysql-test/lib/My/SafeProcess.pm index 612096cceb7..53577c96602 100644 --- a/mysql-test/lib/My/SafeProcess.pm +++ b/mysql-test/lib/My/SafeProcess.pm @@ -85,6 +85,24 @@ BEGIN { } } +END { + # Kill any children still running + for my $proc (values %running){ + if ( $proc->is_child($$) ){ + print "Killing: $proc\n"; + $proc->kill(); + } + } +} + + +sub is_child { + my ($self, $parent_pid)= @_; + die "usage: \$safe_proc->is_child()" unless (@_ == 2 and ref $self); + return ($self->{PARENT} == $parent_pid); +} + + # Find the safe process binary or script my @safe_process_cmd; my $safe_kill; @@ -172,6 +190,7 @@ sub new { SAFE_WINPID => $winpid, SAFE_NAME => $name, SAFE_SHUTDOWN => $shutdown, + PARENT => $$, }, $class); # Put the new process in list of running @@ -203,6 +222,7 @@ sub timer { ({ SAFE_PID => $pid, SAFE_NAME => "timer", + PARENT => $$, }, $class); # Put the new process in list of running