Commit 50319386 authored by unknown's avatar unknown
Browse files

Fix a race on some platforms in mysql-test-run.pl, where it would sometimes

errorneously abort reporting failure to kill child processes, where in
reality the problem was merely that the child had become a zombie because
of missing waitpid() call.


mysql-test/lib/mtr_process.pl:
  Fix race (on some platforms) when killing processes.
parent db4d82ba
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -770,7 +770,15 @@ sub mtr_record_dead_children () {
}

sub start_reap_all {
  $SIG{CHLD}= 'IGNORE';                 # FIXME is this enough?
  # This causes terminating processes to not become zombies, avoiding
  # the need for (or possibility of) explicit waitpid().
  $SIG{CHLD}= 'IGNORE';

  # On some platforms (Linux, QNX, OSX, ...) there is potential race
  # here. If a process terminated before setting $SIG{CHLD} (but after
  # any attempt to waitpid() it), it will still be a zombie. So we
  # have to handle any such process here.
  while(waitpid(-1, &WNOHANG) > 0) { };
}

sub stop_reap_all {