Hi,

I'm hoping to gather some insight into what is causing a problem in some code I 
have inherited. It is based on the 'forking web server' example in the 
cookbook. Basically the problem is that sending a TERM signal to the parent 
process does not kill any of the child processes. Instead, I get the following 
warnings:

<sg> Kernel now running in a different process (is=9012 was=9011).  You must 
call call $poe_kernel->has_forked in the child process.
-----
 at /Library/Perl/5.10.0/POE/Resource/Signals.pm line 798
        POE::Kernel::_data_sig_pipe_send('POE::Kernel', 'TERM') called at 
/Library/Perl/5.10.0/POE/Loop/PerlSignals.pm line 27
        POE::Kernel::_loop_signal_handler_generic('TERM') called at 
/Library/Perl/5.10.0/POE/Loop/Select.pm line 205
        eval {...} called at /Library/Perl/5.10.0/POE/Loop/Select.pm line 205
        POE::Kernel::loop_do_timeslice('POE::Kernel=ARRAY(0x100ac9c50)') called 
at /Library/Perl/5.10.0/POE/Loop/Select.pm line 334
        POE::Kernel::loop_run('POE::Kernel=ARRAY(0x100ac9c50)') called at 
/Library/Perl/5.10.0/POE/Kernel.pm line 1342

When this happens, _stop is never reached in the parent process - in this state 
the parent sends a kill signal to its children. I believe this may be limited 
to recent versions of POE. As far as I know, it used to work fine without 
anything having changed in the implementation code.

Cheers,
Andy

Reply via email to