From:             jjoss at mail dot ru
Operating system: Ubuntu Linux 2.6.18
PHP version:      5.2.9
PHP Bug Type:     InterBase related
Bug description:  After FORK Interbase doesn't work

Description:
------------
After using the pcntl_fork() function both parent and child are not able
to connect to the database.

Reproduce code:
---------------
<?php
  function dbGet($name)
  {
    echo $name.": ".getmypid()."\n";

    $dbLogin    = 'user';
    $dbPassword = 'password';
    $dbDB       = 'localhost:database';
    $dbCharset  = 'WIN1251';
    $dbDialect  = 3;
    $dbRole     = '';

    $dbh = ibase_connect($dbDB, $dbLogin, $dbPassword, $dbCharset, 0,
$dbDialect, $dbRole);
    if (!$dbh)
    {
      echo $name.": connection error - ".ibase_errmsg()."\n";
      posix_kill(getmypid(), 9);
    }

    $query = "SELECT * FROM SOMETABLE;";
    if (!$dbResult = ibase_query($dbh, $query))
    {
      echo $name.": query error - ".ibase_errmsg()."\n";
      posix_kill(getmypid(), 9);
    }

    $row = ibase_fetch_row($dbResult);
    ibase_free_result($dbResult);
    ibase_commit();

    if (empty($row)) echo $name.": row empty - ".ibase_errmsg()."\n";
    else echo $name.":\n".print_r($row, true);
  }

//  $error_reporting_level = error_reporting(0);
//  error_reporting($error_reporting_level);
  error_reporting(0);
  dbGet('grandpa');

    //    $this->obj->Log->debug('ReportGeneric before fork
('.getmygid().')');
  $pid = pcntl_fork();
  if ($pid == -1) die('fork error');
  if ($pid)
  {
    // PARENT
    dbGet('parent');
    posix_kill(getmypid(), 9);
  }
  else
  {
    // CHILD
    dbGet('child');
    posix_kill(getmypid(), 9);
  }
?>

Expected result:
----------------
$ php fork_interbase.php
grandpa: 27850
grandpa:
Array
(
    [0] => 1
)
child: 27852
child:
Array
(
    [0] => 1
)
parent: 27850
parent:
Array
(
    [0] => 1
)
Killed
$

Actual result:
--------------
$ php fork_interbase.php
grandpa: 27850
grandpa:
Array
(
    [0] => 1
)
child: 27852
parent: 27850
parent: row empty - Unable to complete network request to host
"localhost". Error writing data to the connection. Broken pipe
child: query error - Unable to complete network request to host
"localhost". Error reading data from the connection.
Killed
$


-- 
Edit bug report at http://bugs.php.net/?id=48447&edit=1
-- 
Try a CVS snapshot (PHP 5.2):        
http://bugs.php.net/fix.php?id=48447&r=trysnapshot52
Try a CVS snapshot (PHP 5.3):        
http://bugs.php.net/fix.php?id=48447&r=trysnapshot53
Try a CVS snapshot (PHP 6.0):        
http://bugs.php.net/fix.php?id=48447&r=trysnapshot60
Fixed in CVS:                        
http://bugs.php.net/fix.php?id=48447&r=fixedcvs
Fixed in CVS and need be documented: 
http://bugs.php.net/fix.php?id=48447&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=48447&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=48447&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=48447&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=48447&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=48447&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=48447&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=48447&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=48447&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=48447&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=48447&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=48447&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=48447&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=48447&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=48447&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=48447&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=48447&r=mysqlcfg

Reply via email to