I'm running Apache/mod_perl 2 under a Linux OS (forked MPM's) with Perl 5.8.7 compiled, where each Apache child has a number of threads,
cond_waiting on a locked shared reference, haning out and waiting for
cond_signals.
$threads::VERSION = 0.99;
$threads::shared::VERSION = 0.90;
The issue I keep running into is my Apache children seem to randomly get shot by a SIGALRM.
Example:
[Mon Oct 23 16:01:07 2006] [notice] child pid exit signal Alarm clock
+ (14)
Without going to deep into the application it's self (it's too complex for this post), I should point out that I am using
alarm()s in the app. Though, they are all being handled, all in a
local context. Subsequently, if I take the threads out, I don't have this issue.
My question simply is (multi-part):
- Does anyone know if the Apache parent process dulls out SIGALRM's? If so, when and why?
- Does threads.pm, or threads::shared.pm deal with SIGALRMs rather than the traditional cond.c:cond_wait?
I'm now trying to simply catch the SIGALRM in the child and sink it before it kills the child, however this is certainly something I don't want to do moving foward. Any thoughts?
---------
perl -le '$.=[qw(104 97 124 124 116 97)];*p=sub{[@{$_[0]},(45)x 2]};*d=sub{[(45)x 2,@{$_[0]}]};print map{chr}@{p(d($.))}'