ID:               50265
 Updated by:       j...@php.net
 Reported By:      mg at fork dot pl
-Status:           Open
+Status:           Feedback
 Bug Type:         CGI related
 Operating System: Linux
 PHP Version:      5.2.11
 New Comment:

Well, that means the child is running and this process is the main
process waiting it to terminate. So is that child in endless loop or
what? And if it is, why? That's the real problem here..


Previous Comments:
------------------------------------------------------------------------

[2009-11-24 22:00:17] mg at fork dot pl

My previous comment shows state BEFORE the problem hits. Many "forking"
messages are because of low MAX_REQUEST limit.

When I attached to the process running inside the endless loop (it was
before recompilation with DEBUG_FASTCGI) I got following bt

#0  0xffffe424 in __kernel_vsyscall ()                                 
                                                                        
                                                  
#1  0xb712fc6d in __libc_wait (stat_loc=0xbff2d2a4) 
at ../sysdeps/unix/sysv/linux/wait.c:32                                
                                                                        

#2  0x0845e720 in main (argc=0, argv=Cannot access memory at address
0x4                                                                     
                                                       
) at
/usr/src/debug/dev-lang/php-5.2.11/php-5.2.11/sapi/cgi/cgi_main.c:1632

------------------------------------------------------------------------

[2009-11-24 20:20:27] j...@php.net

1 child is in endless loop or what? Try attach to such process with gdb
and see what the backtrace says.

------------------------------------------------------------------------

[2009-11-24 03:02:09] mg at fork dot pl

I rebuilt php and started up, but as I don't know what exactly causes
the problem we'll have to wait until it happens...

I started it like
% PHP_FCGI_CHILDREN=2 PHP_FCGI_MAX_REQUESTS=100 php-cgi -e -b
127.0.0.1:30004 -c /.../php.ini

Process group 2720
Forking, 0 running
Forking, 1 running
Wait for kids, pid 2720
Forking, 1 running
Wait for kids, pid 2720
Forking, 1 running
Wait for kids, pid 2720
Forking, 1 running
Wait for kids, pid 2720


pstree -uap shows

`-php-cgi,2720 -e -b 127.0.0.1:30004 -c /.../php.ini
  |-php-cgi,13821 -e -b 127.0.0.1:30004 -c /.../php.ini
  `-php-cgi,13822 -e -b 127.0.0.1:30004 -c /.../php.ini

------------------------------------------------------------------------

[2009-11-23 10:16:14] j...@php.net

Try enable fastcgi debugging with DEBUG_FASTCGI when you compile PHP
and provide the log of the failing run.

------------------------------------------------------------------------

[2009-11-23 02:24:21] mg at fork dot pl

Description:
------------
fast-cgi php process loops forever during wait()ing for child process
while there's no more child processes. 

Actual result:
--------------
in cgi_main.c there's loop:

1631                 while (1) {
1632                     if (wait(&status) >= 0) {
1633                         running--;
1634                         break;
1635                     } else if (exit_signal) {
1636                         break;
1637                     }
1638                 }

wait returns -1 as strace shows:

wait4(-1, 0xbff2d2a4, 0, NULL)          = -1 ECHILD (No child
processes)

and loop never breaks (as apparently exit_signal is set to 0).


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=50265&edit=1

Reply via email to