SA Bugzilla – Bug 3507
Dns::pyzor_lookup() needs handler for $SIG{CHLD}
Last modified: 2005-01-21 03:20:53 UTC
There's a problem when trying to use Pyzor with both SpamPD and Amavisd-lite. It's probably in Amavisd-new as well. In Dns::pyzor_lookup()Pyzor is given the message to process. When it's finished it exits and throws a $SIG{CHLD}. That signal is unhandled and causes the process to die. Thus the message does not get delivered. If you add a local handler to the "eval" block where Pyzor is opened it solves this problem. This is what I chose to add. local $SIG{CHLD} = sub { dbg ("Pyzor exited like it's supposed to"); }; This problem is probably also in Dns::dcc_lookup() but I have not tested it. Jeff Moss
Some work was done in this area for 3.0, can you check against a more recent version and see if this is still a problem?
btw, the normal way to deal with this is for SIGCHLD to be set to 'DEFAULT' or 'IGNORE'. by default, it's 'DEFAULT' (obviously). those builtin signal handlers do not exit the process when a SIGCHLD is received, as that's a normal IPC signal and non-fatal by any means. I'd suggest fixing the upstreams, but in the meantime I'll put something into 3.1.0 along the lines you've described (ie. a scoped signal handler for helper apps). as Michael says, pls check with 3.0.0 too. marking WORKSFORME...