LP1204123 Set SIGCHLD handler to DEFAULT for children (perl)
authorBill Erickson <berick@esilibrary.com>
Wed, 26 Jun 2013 18:51:52 +0000 (14:51 -0400)
committerJason Stephenson <jstephenson@mvlc.org>
Wed, 4 Sep 2013 15:07:58 +0000 (11:07 -0400)
Remove the special SIGCHLD handler applied to the parent/listener
process from spawned child processes (drones) by setting child handler to
DEFAULT.  Otherwise, if an OpenSRF drone process spawns a sub-process,
the drone will execute the SIGCHLD handler meant for the Listener when
the sub-process dies, wherein hijinks ensue.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
src/perl/lib/OpenSRF/Server.pm

index d8103b6..1257a9c 100644 (file)
@@ -449,7 +449,7 @@ sub spawn_child {
 
     } else { # child process
 
-        $SIG{$_} = 'DEFAULT' for (qw/INT TERM QUIT HUP/);
+        $SIG{$_} = 'DEFAULT' for (qw/INT TERM QUIT HUP CHLD/);
 
         if($self->{stderr_log}) {