druidmatrix has asked for the wisdom of the Perl Monks concerning the following question:
I have a daemon process that handles a number of signals along with HUP. Basically the parent disassociates itself using POSIX::setsid, and then spawns a number of children that it communicates with using USR1 and USR2 signals. The parent also implements HUP where it kills the children, re-reads the configuration, and respawns the children according to the new configuration. I am reinstalling the signal handlers after every call, and all seem to work fine except HUP. The HUP handler runs fine the first time, but ceases to do so after that, almost as if the handler is not re-installed. However, I print out the SIG hash just before entering the "endless loop", and I see that the handler has a target (something like HUP => CODE(0x8da8428)). This is perl 5.8.8 running on RHEL 5. I tried using POSIX handlers, but see the exact same thing. What more, once the first HUP is received, all other signal handlers also seem to stop working. Is there a notable difference between the HUP signal and others? Does anyone have any advice regarding how to debug this sort of issue?