Still still trying to figure this out:

I get about 10 or 20 exit signal Alarm Clock (14) messages a day -- out of
15,000+ requests.  Not very many.

I log the PID of my mod_perl script each request, and for each 'exit signal
Alarm Clock (14)' there seems to be a mod_perl request about 5 minutes and
two or three seconds before the time of the Alarm message in the main log
file.

The Apache Timeout setting is 5 minutes.

So it would seem that my mod_perl script is somehow not restoring
$SIG{ALRM} in some cases, even though it's localized in an eval block.
That is, the Apache Timeout is triggering an alarm, but there's no handler
to catch it.  I'm always calling alarm( 0 ) after exiting the block.

I have failed to duplicate the error message on a test server.  I've tried
a server with only one child process, running the mod_perl script, then
running another mod_cgi script that just sits for longer than the Timeout
setting.  But it times out as expected without killing the process.

I could try using Sys::Signal, but I understand that's not need with
$SIG{ALRM}.  Besides, I do see other normal timeouts (e.g. send body timed
out) in the server log file.  So it's not happening all the time.

Any suggestion on what else to look at?

BTW -- I did remove the CORE:: from CORE::sub {} as Stas suggested.


Bill Moseley
mailto:[EMAIL PROTECTED]

Reply via email to