ID: 48754
Comment by: xektrum at gmail dot com
Reported By: busia at tiscali dot it
Status: Verified
Bug Type: MySQL related
Operating System: *
PHP Version: 5.3.0 (as of 21-07-2008)
Assigned To: mysql
New Comment:
Description:
------
I can confirm this, I'm having the same issue with php 5.3 and apache2
when calling mysql_close without a mysql_link as parameter.
Reproduce code:
------
<?php
mysql_connect('localhost','root','password');
mysql_close(); // win32 uncaught exception catched by MSVS
?>
Workaround/not crashing:
------
<?php
$link = mysql_connect('localhost','root','password');
mysql_close($link);
?>
Exception :
------
Not handled Exception in 0x006e2072 in httpd.exe: 0xC0000005:
Access violation when reading location 0x00000000.
Note : The Exception has been translated so it is not literal
Previous Comments:
------------------------------------------------------------------------
[2009-07-02 16:45:00] [email protected]
Really a great one.
The bug exists since 21-07-2008. That is 11 months and 1 week ago.
Sometimes I which users would try non-GA versions just in case test
suites don't catch issues...
This is when the bug was introduced:
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/php_mysql.c?r1=1.213.2.6.2.16.2.22&r2=1.213.2.6.2.16.2.23&
mysql_link points to NULL and that's causing a crash.
Possible workaround (as suggested by Johannes):
nixn...@linux-en61:~/src/login/php5> cvs diff ext/mysql/tests/
cvs diff: Diffing .
cvs diff: Diffing ext
cvs diff: Diffing ext/mysql
cvs diff: Diffing ext/mysql/tests
nixn...@linux-en61:~/src/login/php5> cvs diff ext/mysql/
cvs diff: Diffing ext/mysql
Index: ext/mysql/php_mysql.c
===================================================================
RCS file: /repository/php-src/ext/mysql/php_mysql.c,v
retrieving revision 1.213.2.6.2.16.2.37
diff -r1.213.2.6.2.16.2.37 php_mysql.c
372a373,376
> #ifdef MYSQL_USE_MYSQLND
> mysqlnd_end_psession(link->conn);
> #endif
>
987,995c991
< #ifdef MYSQL_USE_MYSQLND
< {
< int tmp;
< if ((mysql = zend_list_find(Z_RESVAL_P(mysql_link),
&tmp)) && tmp == le_plink) {
< mysqlnd_end_psession(mysql->conn);
< }
< }
< #endif
< if (mysql_link) { /* explicit resource number */
---
> if (mysql_link) {
cvs diff: Diffing ext/mysql/tests
Someone may want to review that.
------------------------------------------------------------------------
[2009-07-02 13:05:17] [email protected]
This one is funny. It may have existed since more than one year now and
nobody has ever found it.
------------------------------------------------------------------------
[2009-07-01 21:59:31] busia at tiscali dot it
1) The sleep function is not needed
2) The connection is successfull
An other information: if I save in $a the mysql_connect return value
and pass it to mysql_close php doesn't crash. In othe words this script
works well:
<?
$a=mysql_connect('127.0.0.1', 'root', 'root');
mysql_close($a);
?>
This instead crashes php:
<?
mysql_connect('127.0.0.1', 'root', 'root');
mysql_close();
?>
------------------------------------------------------------------------
[2009-07-01 18:04:17] sjoerd-php at linuxonly dot nl
Thank you for your bug report.
I have a couple of questions regarding your bug report:
1. Is the sleep(2) needed to reproduce the bug?
2. Does the database connection succeed? (i.e. what is the return value
of mysql_connect?)
------------------------------------------------------------------------
[2009-07-01 12:30:54] busia at tiscali dot it
Description:
------------
This simple code crash php.
This is the Debug diagnostic tool output:
In
php__PID__5128__Date__07_01_2009__Time_02_22_25PM__909__Second_Chance_Exception_C0000005.dmp
the assembly instruction at php_mysql!zif_mysql_close+92 in C:\Program
Files\PHP\ext\php_mysql.dll from The PHP Group has caused an access
violation exception (0xC0000005) when trying to read from memory
location 0x00000000 on thread 0
Report for
php__PID__5128__Date__07_01_2009__Time_02_22_25PM__909__Second_Chance_Exception_C0000005.dmp
Type of Analysis Performed Crash Analysis
Machine Name PC-UTENTE
Operating System Windows Vista Service Pack 1
Number Of Processors 2
Process ID 5128
Process Image C:\Program Files\PHP\php.exe
System Up-Time 00:13:11
Process Up-Time 00:00:02
Thread 0 - System ID 5132
Entry point php!mainCRTStartup
Create time 01/07/2009 14.22.23
Time spent in user mode 0 Days 0:0:0.31
Time spent in kernel mode 0 Days 0:0:0.62
Function Arg 1 Arg 2 Arg 3 Source
php_mysql!zif_mysql_close+92 00000000 02a0d350 00000000
php5ts!zend_do_fcall_common_helper_SPEC+946 00000000 02a40070
00052fd0
php5ts!ZEND_DO_FCALL_SPEC_CONST_HANDLER+130 00c0fbd4 00052fd0
00c0fe70
php5ts!execute+29e 02a40070 00052f00 00000000
php5ts!zend_execute_scripts+f6 00000008 00052fd0 00000000
php5ts!php_execute_script+22d 00c0fe70 00052fd0 00000000
php!main+bf1 00000002 00052f68 00051888
php!mainCRTStartup+e3 7ffdb000 00c0ffd4 77bee4b6
kernel32!BaseThreadInitThunk+e 7ffdb000 770bbeaf 00000000
ntdll!__RtlUserThreadStart+23 00402d78 7ffdb000 00000000
ntdll!_RtlUserThreadStart+1b 00402d78 7ffdb000 00000000
PHP_MYSQL!ZIF_MYSQL_CLOSE+92In
php__PID__5128__Date__07_01_2009__Time_02_22_25PM__909__Second_Chance_Exception_C0000005.dmp
the assembly instruction at php_mysql!zif_mysql_close+92 in C:\Program
Files\PHP\ext\php_mysql.dll from The PHP Group has caused an access
violation exception (0xC0000005) when trying to read from memory
location 0x00000000 on thread 0
Module Information
Image Name: C:\Program Files\PHP\ext\php_mysql.dll Symbol Type: PDB
Base address: 0x01c30000 Time Stamp: Mon Jun 29 22:24:49 2009
Checksum: 0x00000000 Comments: Thanks to Zeev Suraski, Zak Greant,
Georg Richter
COM DLL: False Company Name: The PHP Group
ISAPIExtension: False File Description: MySQL
ISAPIFilter: False File Version: 5.3.0
Managed DLL: False Internal Name: MYSQL extension
VB DLL: False Legal Copyright: Copyright © 1997-2009 The PHP Group
Loaded Image Name: php_mysql.dll Legal Trademarks: PHP
Mapped Image Name: C:\Program Files\PHP\ext\php_mysql.dll Original
filename: php_mysql.dll
Module name: php_mysql Private Build:
Single Threaded: False Product Name: PHP
Module Size: 44,00 KBytes Product Version: 5.3.0
Symbol File Name:
C:\Users\utente\Desktop\php-debug-pack-5.3.0-Win32-VC6-x86\php_mysql.pdb
Special Build: &
Reproduce code:
---------------
<?php
sleep(2);
mysql_connect('127.0.0.1', 'root', 'root');
mysql_close();
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48754&edit=1