POE 0.31 completed a major milestone in the Signal Reforms documented
at http://poe.perl.org/ . One of them was to stop seeding %SIG with
default signal handlers. In the past, POE would register handlers for
all sorts of signal, including SIGCHLD and SIGPIPE whether a program
needed them or not.
The result is zombie processes in programs that use fork(), which is
also used by POE::Wheel::Run and POE::Component::Child. I've also
received a single report of a SIGPIPE killing a process, but this
seems rarer.
I'm going to have POE set $SIG{CHLD} and $SIG{PIPE} to "IGNORE" when
nobody has events registered for them. This should fix both problems.
--
Rocco Caputo - http://poe.perl.org/