|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2008-10-14 09:39 UTC] asylow at free dot fr
Description:
------------
Hi,
I get an apache crash when executing the "execute" on a prepared query.
"L'instruction ? "0x0096ac76" emploie l'adresse m?moire "0X07a0a410". La m?moire ne peut pas ?tre "read"
PHP 5.2.6
Apache 2.2.9
The problem also happened using Aug 06, 2008 04:30 UTC Snapshot.
Reproduce code:
---------------
The minimal code that causes the crash is :
<?php
class myclass {
function __construct() {
$this->db = new PDO ("mssql:host=localhost\SQLEXPRESS;dbname=test","sa","toto");
}
function foo() {
$sql = 'SELECT oidObject FROM otIncidentspec WHERE oidObject=:ndossier AND oidArticle=277247835';
$sth_activiteincident = $this->db->prepare($sql);
$extract[] = array("abc"=>29);
$extract[] = array("def"=>20);
$sth_activiteincident->execute(array(':ndossier'=>277248289));
$sth_activiteincident->execute(array(':ndossier'=>277248290));
}
}
$erp = new myclass();
$erp->foo();
?>
Actual result:
--------------
Strangely minimal changes to the code avoids the problem.
ie : removing the $extract[] definitions OR removing "AND oidArticle=277247835" in the query OR defining $this->db in the foo function instead of in the __construct.
I made a backtrace :
PHP5TS! 0096ac76()
PHP5TS! 0096bd79()
php_pdo_stmt_delref(_pdo_stmt_t * 0x064621c8, void * * * 0x01e67d18) line 2426 + 13 bytes
pdo_dbstmt_free_storage(_pdo_stmt_t * 0x064621c8, void * * * 0x01e67d18) line 2432 + 13 bytes
PHP5TS! 00a0cb9f()
PHP5TS! 00a0ca59()
Thank you.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 11:00:01 2025 UTC |
I also get this issue on WinXP SP2 (5.1 build 2600) running Apache 2.2.11.0 (from xampplite 1.7.0). Interestingly this occurs with executing a PDO::prepare()d SELECT statement but not on UPDATE or INSERT. This happens even when PDOStatement::bindValue / bindParam is not used. I cannot reproduce the "subtle change makes it work" described by asylow. I am unable to provide a backtrace. --Code-- $dbConn = new PDO(DBDSN, DBUSER, DBPASS); // Connection is definitely valid $q = $dbConn->prepare('SELECT * FROM people'); $q->execute(); --Crash report-- AppName: apache.exe AppVer: 2.2.11.0 ModName: php_pdo_mysql.dll ModVer: 5.2.9.9 Offset: 0000249a --PHP Version-- [per phpinfo()] Was occurring on 5.2.8 and also on snapshot: PHP Version 5.2.9RC3-dev System Windows NT 18315XP 5.1 build 2600 Build Date Feb 18 2009 23:39:16 Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--with-snapshot-template=d:\php-sdk\bin\\..\snap_5_2\vc6\x86\template" "--with-php-build=d:\php-sdk\bin\\..\snap_5_2\vc6\x86\php_build" "--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared" --PDO Version-- [per phpinfo()] pdo_mysql PDO Driver for MySQL, client library version 5.1.30 --MySQL Version-- C:\xampplite\mysql\bin>mysqld.exe --version mysqld.exe Ver 5.1.30-community for Win32 on ia32 (MySQL Community Server (GPL))I'm having the same issue on Windows Vista. The following Windows crash information might be useful: Windows error-reporting creates the following error-messages: Faulting application apache.exe, version 2.2.11.0, time stamp 0x493f5d44, faulting module php_pdo_mysql.dll, version 5.2.8.8, time stamp 0x493d7650, exception code 0xc0000005, fault offset 0x0000250a, process id 0xf10, application start time 0x01c9c677df857f87. And: Faulting application apache.exe, version 2.2.11.0, time stamp 0x493f5d44, faulting module ntdll.dll, version 6.0.6001.18000, time stamp 0x4791a7a6, exception code 0xc0000005, fault offset 0x0006814c, process id 0x10d8, application start time 0x01c9c677ded2aa47. And after that, the following information: Fault bucket 1062083465, type 1 Event Name: APPCRASH Response: None Cab Id: 0 Problem signature: P1: apache.exe P2: 2.2.11.0 P3: 493f5d44 P4: php_pdo_mysql.dll P5: 5.2.8.8 P6: 493d7650 P7: c0000005 P8: 0000250a P9: P10: Attached files: C:\ProgramData\Microsoft\Windows\WER\ReportQueue\Report09c3bd88\WERAF65.tmp.version.txt C:\ProgramData\Microsoft\Windows\WER\ReportQueue\Report09c3bd88\WERAF66.tmp.appcompat.txt C:\ProgramData\Microsoft\Windows\WER\ReportQueue\Report09c3bd88\WERAFC4.tmp.hdmp C:\ProgramData\Microsoft\Windows\WER\ReportQueue\Report09c3bd88\WERBC91.tmp.mdmp These files may be available here: C:\ProgramData\Microsoft\Windows\WER\ReportArchive\Report0cdbcec7 Specs: * Windows Vista Home Edition * Apache 2.2 * MySQL 5.1.30 * PHP 5.2.8I have a similar occurrence when running through apache2.2 and mysql 5 When running a page via apache with mysql query it crashes szAppName : httpd.exe szAppVer : 2.2.11.0 szModName : php5ts.dll szModVer : 5.2.9.9 offset : 0000ac7a however when running the same page through php cli it works fine Running PHP 5.2.9-2 (cli) (built: Apr 9 2009 08:23:19) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies Here is my example code It crashes frequently on the mysql_connect line other times it appears to get as far (compiling) as the mysql query <? $cMysqlDatabase = 'develop'; $cMysqlUsername = 'develop'; $cMysqlPassword = 'develop'; $cMysqlDatabase = 'develop_dev'; $mysql_link = mysql_connect($gcMysqlHost1, $cMysqlUsername, $cMysqlPassword); $bDatabaseSelected = mysql_select_db($cMysqlDatabase, $mysql_link); print "hello\n"; $nTestLevel = 1; if ($nTestLevel > 0) { print " nTestLevel > 0"; $query = "show tables\n"; print "Query = $query"; $mysql_result = mysql_query($query, $mysql_link); if ($mysql_result) { while ($arTables = mysql_fetch_assoc($mysql_result)) { print_r($arTables); } } else { print "error ". mysql_error($mysql_link) . "\n"; } } print "end\n"; ?>