From:             bhook at coder7 dot com
Operating system: Slackware 9.1 (Linux 2.6.4)
PHP version:      5.0.0RC1
PHP Bug Type:     *Extensibility Functions
Bug description:  pcntl_fork() children go <defunct> on completion

Description:
------------
When using pcntl_fork(), if a child script finishes execution (or
exit/dies), the process goes defunct. I've found that with my particular
needs I can reverse the normal programming method used with a server-like
application, and the defunct problem goes away.



For example, if I had a script that waited for a socket connection, then I
would spawn child processes to handle any connections. This causes defunct
processes when the children exit. Instead, I have to spawn a child that
continues listening, and the parent process handles the current
connection. When the parent finishes execution, it exits cleanly, and the
child becomes the new "parent".

Reproduce code:
---------------
for($a=0;$a<=10;$a++)

{

  $pid=pcntl_fork();

  if($pid==-1){die('fork error');}

  elseif($pid==0) //child process

  {

    echo "hello world\n";

    exit;

  }

  else //parent process

  {

    /* Continue Looping */

  }

}

passthru('ps -a | grep php');



Expected result:
----------------
Expected output of passthru() would be to have 1 properly functioning
process listed.

Actual result:
--------------
Defunct processes are created. These processes will persist until the
parent process dies.

-- 
Edit bug report at http://bugs.php.net/?id=27739&edit=1
-- 
Try a CVS snapshot (php4):  http://bugs.php.net/fix.php?id=27739&r=trysnapshot4
Try a CVS snapshot (php5):  http://bugs.php.net/fix.php?id=27739&r=trysnapshot5
Fixed in CVS:               http://bugs.php.net/fix.php?id=27739&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=27739&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=27739&r=needtrace
Need Reproduce Script:      http://bugs.php.net/fix.php?id=27739&r=needscript
Try newer version:          http://bugs.php.net/fix.php?id=27739&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=27739&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=27739&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=27739&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=27739&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=27739&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=27739&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=27739&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=27739&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=27739&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=27739&r=float

Reply via email to