Hi,

When using external check processes in ldirectord, we encountered some
cases of zombies being left behind when the external process ran into
a timeout. This happened because nobody wait()ed on their exit status.

The following patch fixes this issue for us by just ignoring
SIGCHLD signals in the code branch that executes the checks.

Julius

diff -r e0f9eeef2e31 ldirectord/ldirectord.in
--- a/ldirectord/ldirectord.in  Thu Aug 07 17:15:05 2008 +1000
+++ b/ldirectord/ldirectord.in  Fri Aug 08 15:32:16 2008 +0200
@@ -2250,6 +2250,7 @@ sub ld_main
                         check_signal();
                         
                 } else {
+                       local $SIG{CHLD} = 'IGNORE';
                         my @real_checked;
                         foreach my $v (@VIRTUAL) {
                                 my $real = $$v{real};

_______________________________________________________
Linux-HA-Dev: [email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/

Reply via email to