On 06/01/2007 05:42 PM, [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]> wrote:
> Author: jim
> Date: Fri Jun  1 08:42:57 2007
> New Revision: 543511
> 
> URL: 
> http://svn.apache.org/viewvc?view=rev&rev=543511<http://svn.apache.org/viewvc?view=rev&rev=543511>
> Log:
> Add in parent process PID table, to provide for
> a check against the pid values located in the
> scoreboard.
> 
> Modified:
>     httpd/httpd/branches/1.3.x/src/main/http_main.c
> 

I tried out the code in apache-1.3_20070603161656.tar.gz on TPF because I
thought the pid_table stuff might affect the platform.

I found some problems in main/http_main.c on both Linux and TPF:

1)  The new snprintf calls need to be changed to ap_snprintf for it to
compile on TPF (and possibly other platforms without a native snprintf).

2)  For both Linux and TPF, idle server maintenance can cause "Bad pid in
scoreboard slot" errors:

I tied up several children with requests and then let them time out so
they'd become idle.
(I lowered MinSpareServers to 1 and MaxSpareServers to 3 so it was easy to
reach the limits.)
This hit the kill(pid, SIG_TIMEOUT_KILL) and kill(pid, SIG_IDLE_KILL) code
in perform_idle_server_maintenance.
Those same pids showed up later in "Bad pid in scoreboard slot" errors.

3)  For both Linux and TPF, "Bad pid in scoreboard slot" errors can loop:

I hit this with issue #2 above but presumably you could get it on any
in_pid_table error where that scoreboard slot is hit again at a later
time...

I got looping error messages if the idle child that initially cause the
"Bad pid ..." error was the one that perform_idle_server_maintenance was
trying to get rid of.
An in_pid_table() error writes to the log but leaves the scoreboard slot
as-is.
So when we come through perform_idle_server_maintenance the next time, the
same error is logged for the same slot and pid.
Again, and again.

Hopefully this is enough information to recreate the issues.
If I left something out please let me know.

-David McCreedy

Reply via email to