Subject: | POE error terminating parent process |
Date: | Wed, 31 Mar 2010 13:09:15 +0100 |
To: | bug-POE [...] rt.cpan.org |
From: | Andy Jenkinson <andy.jenkinson [...] ebi.ac.uk> |
Hi, I asked this on the list but got no response:
I have some code 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 would send a kill signal to its children). I believe this may be limited to recent versions of POE, as it does not occur on machines with older versions. The problem occurs on both linux and os x architectures.
Cheers,
Andy