Bug #51877 [Fbk->Opn]: php5ts.dll crash and reset Apache

2010-05-21 Thread diegoturriaga at yahoo dot com dot ar
Edit report at http://bugs.php.net/bug.php?id=51877&edit=1

 ID:   51877
 User updated by:  diegoturriaga at yahoo dot com dot ar
 Reported by:  diegoturriaga at yahoo dot com dot ar
 Summary:  php5ts.dll crash and reset Apache
-Status:   Feedback
+Status:   Open
 Type: Bug
 Package:  Reproducible crash
 Operating System: Windows XP / 2003
 PHP Version:  5.3.2

 New Comment:

Ups! Please replace $this->recordset by $recordset (copy/paste error;)


Previous Comments:

[2010-05-21 20:17:42] paj...@php.net

Well, not sure I can even debug that as I see no way to have the VFP
data.



But why do you use COM and ADODB instead of ODBC? ODBC will be way more
stable than ADODB through COM.


[2010-05-21 20:14:33] diegoturriaga at yahoo dot com dot ar

ConnectionTimeout = 1200;

  $conexion->CommandTimeout = 2400;

  $conexion->Open($stringDeConexion);

}

catch (Exception $e) {

  echo "Error creando conexion OLEDB.". $e->getMessage();

  exit(1);

} 

# intenta crear un comando

try {

  $comando = new COM("ADODB.Command");

  $comando->CommandType = 1; //adCmdText

  $comando->ActiveConnection = $conexion;

  $comando->CommandText = $consulta;

}

catch (Exception $e) {

  echo "Error creando el comando OLEDB.". $e->getMessage();

  exit(1);

} 

# intenta ejecutar el comando SQL

try {

  $rs = $comando->Execute($cantRegAfectados);

}

catch (Exception $e) {

  echo "Error ejecutando comando OLEDB.". $e->getMessage();

  exit(1);

}

# pasa los datos al recordset y libera los recursos

$this->recordset = array();

$j=0;

if ($rs->State!=0) {

  while (!$rs->EOF) {

for ($i=0; $i<$rs->Fields()->Count; $i++) {

  $this->recordset[$j][$rs[$i]->Name] = $rs[$i]->Value;

}

$rs->MoveNext();

$j++;

  }

  $rs->Close();

}

$conexion->Close();

$rs = null;

$conexion = null;

echo "It's all right!";

return 0;



?>



PD: You will need hugedbf1.dbf and hugedbf2.dbf shared on \\server\data

and the user running apache service need permission from I/O there.
Also

you have to have installed the VFP OLEDB drivers.


[2010-05-21 11:15:24] paj...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with ,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.




[2010-05-21 01:43:31] diegoturriaga at yahoo dot com dot ar

Description:

I thought it might be a matter of server version so initially I started
a report here (http://www.apachelounge.com/viewtopic.php?p=15696) which
will be of help to avoid writing both.



Test script:
---
In the previous url I have posted some php code... You can use a
connection string like this for testing:



$cnStr = 'Provider=VFPOLEDB.1;Data
Source="\\server\data";Mode=ReadWrite|Share Deny
None;Password="";Collating Sequence=SPANISH;DELETED=False';



Other variables needed:



$charPage = CP_UTF8;

$consulta = "SELECT * FROM hugedbf1 x INNER JOIN hugedbf2 y ON
x.Id=y.xId"



And it's all... works fine for a few records but crash for many.



As I said in the other post, works fine with PHP 5.2

Expected result:

array results

Actual result:
--
php5ts.dll crash






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


Bug #51877 [Fbk->Opn]: php5ts.dll crash and reset Apache

2010-05-21 Thread diegoturriaga at yahoo dot com dot ar
Edit report at http://bugs.php.net/bug.php?id=51877&edit=1

 ID:   51877
 User updated by:  diegoturriaga at yahoo dot com dot ar
 Reported by:  diegoturriaga at yahoo dot com dot ar
 Summary:  php5ts.dll crash and reset Apache
-Status:   Feedback
+Status:   Open
 Type: Bug
 Package:  Reproducible crash
 Operating System: Windows XP / 2003
 PHP Version:  5.3.2

 New Comment:

ConnectionTimeout = 1200;

  $conexion->CommandTimeout = 2400;

  $conexion->Open($stringDeConexion);

}

catch (Exception $e) {

  echo "Error creando conexion OLEDB.". $e->getMessage();

  exit(1);

} 

# intenta crear un comando

try {

  $comando = new COM("ADODB.Command");

  $comando->CommandType = 1; //adCmdText

  $comando->ActiveConnection = $conexion;

  $comando->CommandText = $consulta;

}

catch (Exception $e) {

  echo "Error creando el comando OLEDB.". $e->getMessage();

  exit(1);

} 

# intenta ejecutar el comando SQL

try {

  $rs = $comando->Execute($cantRegAfectados);

}

catch (Exception $e) {

  echo "Error ejecutando comando OLEDB.". $e->getMessage();

  exit(1);

}

# pasa los datos al recordset y libera los recursos

$this->recordset = array();

$j=0;

if ($rs->State!=0) {

  while (!$rs->EOF) {

for ($i=0; $i<$rs->Fields()->Count; $i++) {

  $this->recordset[$j][$rs[$i]->Name] = $rs[$i]->Value;

}

$rs->MoveNext();

$j++;

  }

  $rs->Close();

}

$conexion->Close();

$rs = null;

$conexion = null;

echo "It's all right!";

return 0;



?>



PD: You will need hugedbf1.dbf and hugedbf2.dbf shared on \\server\data

and the user running apache service need permission from I/O there.
Also

you have to have installed the VFP OLEDB drivers.


Previous Comments:

[2010-05-21 11:15:24] paj...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with ,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.




[2010-05-21 01:43:31] diegoturriaga at yahoo dot com dot ar

Description:

I thought it might be a matter of server version so initially I started
a report here (http://www.apachelounge.com/viewtopic.php?p=15696) which
will be of help to avoid writing both.



Test script:
---
In the previous url I have posted some php code... You can use a
connection string like this for testing:



$cnStr = 'Provider=VFPOLEDB.1;Data
Source="\\server\data";Mode=ReadWrite|Share Deny
None;Password="";Collating Sequence=SPANISH;DELETED=False';



Other variables needed:



$charPage = CP_UTF8;

$consulta = "SELECT * FROM hugedbf1 x INNER JOIN hugedbf2 y ON
x.Id=y.xId"



And it's all... works fine for a few records but crash for many.



As I said in the other post, works fine with PHP 5.2

Expected result:

array results

Actual result:
--
php5ts.dll crash






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