From:             pool at unimca dot com
Operating system: Linux Debian Wheezy amd64
PHP version:      5.4.17
Package:          Reproducible crash
Bug Type:         Bug
Bug description:Segmentation Fault in _zend_mm_free_int using mysqlnd

Description:
------------
I get recurring (script to reproduce attached) segmentation faults. Both
PHP 5.4.17 and 5.4.4.
When I query mySQL using:
- mysqli
- mysqlnd (native driver)
- prepared statements
- specific number o parameters
For me a number of parameters in the provided script of 1923-2033 produce
the error. A number below or above works fine. The numbers might vary from
system to system (I don't know). To take this into account, I made the
script loop with different numbers of parameters.

The Apache2 log reports: [notice] child pid 30414 exit signal Segmentation
fault (11)

I get the same error when using PDO and prepared statements (with real
prepared statements, ATTR_EMULATE_PREPARES = false).

I compiled PHP 5.4.17 myself (I'm not experienced in doing so). PHP 5.4.4
was out of the box.
Both use mysqlnd in what seems to be the same version 5.0.10 ((?) according
to phpinfo()).

mySQL is out of the box wheezy: is Ver 14.14 Distrib 5.5.31, for
debian-linux-gnu (x86_64) using readline 6.2. Using InnoDB
Debian Wheezy is: 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux

Can anyone confirm that this is not specific to my machine/installation ?



Test script:
---------------
<?php 
  
/*
CREATE DATABASE testDatabase
 CHARACTER SET utf8
 DEFAULT CHARACTER SET utf8
 COLLATE utf8_general_ci
 DEFAULT COLLATE utf8_general_ci;
USE testDatabase;
SET NAMES 'utf8';

GRANT CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES, SELECT, INSERT,
UPDATE, DELETE ON testDatabase.* TO 'testUser'@'localhost' IDENTIFIED BY
'testPassword';
GRANT CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES, SELECT, INSERT,
UPDATE, DELETE ON testDatabase.* TO 'testUser'@'localhost.localdomain'
IDENTIFIED BY 'testPassword';
FLUSH PRIVILEGES;

CREATE TABLE `testTable` (
  `testField` binary(16) NOT NULL,
  `content` varchar(30) NOT NULL,
  PRIMARY KEY (`testField`)
);
*/

for($j=2;$j<65000;$j++)
{

$arBind = array();
$sBind = '';

for($i=0;$i<$j;$i++) //$j = number parameters for prepared statement

    {
    $sBind .= 's';
    $arBind[] = '00000000000000000000000000000000';
    }
echo '<br>Going to probe number of parameters: ' . count($arBind);    
ob_flush(); //print it to browser right away, not required for script
flush();    //print it to browser right away, not required for script

//Constructing the query
$query = 'SELECT * from testTable WHERE testField IN(unhex(?)';
$questionMarksMinus1 = count($arBind) - 1; //1 questionmark already set in
query
for($i=1;$i<=$questionMarksMinus1;$i++)
    {
    $query .= ',unhex(?)';
    }
$query .= ')';

$mysqliConn= mysqli_connect('127.0.0.1', 'testUser', 'testPassword');
$mysqliConn->select_db('testDatabase');
$mysqliSTMT = $mysqliConn->stmt_init();
$mysqliSTMT->prepare($query);

array_unshift($arBind,$sBind); //add the type string to the beginning of
the array
$arBindRef = array(); //bind the parameters. bind_param expects references
and not values -> making new reference array
foreach($arBind as $key => $value)
    {
    $arBindRef[] = &$arBind[$key];
    } 
call_user_func_array(array($mysqliSTMT,'bind_param'),$arBindRef);

$mysqliSTMT->execute(); //here the problem occurs

}

echo '<br>FINISHED';
?>

Expected result:
----------------
No segementation fault

Actual result:
--------------
  (gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
_zend_mm_free_int (heap=0x7f7a2473fa40, p=0x7f7a19cd5f38) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_alloc.c:2100
2100            if (ZEND_MM_IS_FREE_BLOCK(next_block)) {
(gdb) bt
#0  _zend_mm_free_int (heap=0x7f7a2473fa40, p=0x7f7a19cd5f38) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_alloc.c:2100
#1  0x00007f7a1eb08afd in _mysqlnd_pefree (ptr=<optimized out>,
persistent=0 '\000') at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_alloc.c:372
#2  0x00007f7a1eb14cfa in mysqlnd_internal_free_result_contents
(result=0x7f7a19d479e8) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_result.c:288
#3  0x00007f7a1eb14d1a in mysqlnd_internal_free_result
(result=0x7f7a19d479e8) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_result.c:302
#4  0x00007f7a1eb1b9a1 in php_mysqlnd_stmt_free_stmt_content_pub
(s=0x7f7a19cc6ae0) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_ps.c:2115
#5  0x00007f7a1eb1cc4c in php_mysqlnd_stmt_net_close_priv (s=<optimized
out>, implicit=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_ps.c:2203
#6  0x00007f7a1eb1b66e in php_mysqlnd_stmt_dtor_pub (s=0x7f7a19cc6ae0,
implicit=1 '\001') at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_ps.c:2229
#7  0x00007f7a1e9ab018 in php_clear_stmt_bind (stmt=0x7f7a19f1d658) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqli/mysqli.c:164
#8  0x00007f7a1e9ab06a in mysqli_stmt_free_storage (object=0x7f7a19cc6860)
at /home/myUser/DebMaking/php-5.4.17/ext/mysqli/mysqli.c:255
#9  0x00007f7a1ebada26 in zend_objects_store_del_ref_by_handle_ex
(handle=2, handlers=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_objects_API.c:221
#10 0x00007f7a1ebada43 in zend_objects_store_del_ref
(zobject=0x7f7a19cc5360) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_objects_API.c:173
#11 0x00007f7a1eb77d29 in _zval_dtor (zvalue=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_variables.h:35
#12 _zval_ptr_dtor (zval_ptr=0x7f7a19cc6918) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_execute_API.c:436
#13 _zval_ptr_dtor (zval_ptr=0x7f7a19cc6918) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_execute_API.c:425
#14 0x00007f7a1eb930a5 in zend_hash_apply_deleter
(ht=ht@entry=0x7f7a1f396d08, p=p@entry=0x7f7a19cc6900) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_hash.c:650
#15 0x00007f7a1eb94be1 in zend_hash_reverse_apply
(ht=ht@entry=0x7f7a1f396d08, apply_func=apply_func@entry=0x7f7a1eb77bb0
<zval_call_destructor>)
    at /home/myUser/DebMaking/php-5.4.17/Zend/zend_hash.c:804
#16 0x00007f7a1eb78041 in shutdown_destructors () at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_execute_API.c:217
#17 0x00007f7a1eb86ac7 in zend_call_destructors () at
/home/myUser/DebMaking/php-5.4.17/Zend/zend.c:922
#18 0x00007f7a1eb27e25 in php_request_shutdown (dummy=dummy@entry=0x0) at
/home/myUser/DebMaking/php-5.4.17/main/main.c:1742
#19 0x00007f7a1ec305af in php_apache_request_dtor (r=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/sapi/apache2handler/sapi_apache2.c:507
#20 php_handler (r=0x7f7a22af20a0) at
/home/myUser/DebMaking/php-5.4.17/sapi/apache2handler/sapi_apache2.c:679
#21 0x00007f7a22d0db60 in ap_run_handler ()
#22 0x00007f7a22d0dfab in ap_invoke_handler ()
#23 0x00007f7a22d1e088 in ap_process_request ()
#24 0x00007f7a22d1af48 in ?? ()
#25 0x00007f7a22d14520 in ap_run_process_connection ()
#26 0x00007f7a22d22cb9 in ?? ()
#27 0x00007f7a22d233d2 in ?? ()
#28 0x00007f7a22d23f36 in ap_mpm_run ()
#29 0x00007f7a22cf8832 in main ()
(gdb) bt full
#0  _zend_mm_free_int (heap=0x7f7a2473fa40, p=0x7f7a19cd5f38) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_alloc.c:2100
        mm_block = 0x7f7a19cd5f28
        next_block = 0x3030afaa49fd8f58
        size = 3472328296227680304
#1  0x00007f7a1eb08afd in _mysqlnd_pefree (ptr=<optimized out>,
persistent=0 '\000') at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_alloc.c:372
        free_amount = <optimized out>
        collect_memory_statistics = 0 '\000'
#2  0x00007f7a1eb14cfa in mysqlnd_internal_free_result_contents
(result=0x7f7a19d479e8) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_result.c:288
No locals.
#3  0x00007f7a1eb14d1a in mysqlnd_internal_free_result
(result=0x7f7a19d479e8) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_result.c:302
No locals.
#4  0x00007f7a1eb1b9a1 in php_mysqlnd_stmt_free_stmt_content_pub
(s=0x7f7a19cc6ae0) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_ps.c:2115
        stmt = 0x7f7a19cc6b30
#5  0x00007f7a1eb1cc4c in php_mysqlnd_stmt_net_close_priv (s=<optimized
out>, implicit=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_ps.c:2203
        stmt = 0x7f7a19cc6b30
        conn = <optimized out>
        cmd_buf = "\001\000\000"
        statistic = <optimized out>
#6  0x00007f7a1eb1b66e in php_mysqlnd_stmt_dtor_pub (s=0x7f7a19cc6ae0,
implicit=1 '\001') at
/home/myUser/DebMaking/php-5.4.17/ext/mysqlnd/mysqlnd_ps.c:2229
        stmt = 0x7f7a19cc6b30
        ret = FAIL
        persistent = 0 '\000'
#7  0x00007f7a1e9ab018 in php_clear_stmt_bind (stmt=0x7f7a19f1d658) at
/home/myUser/DebMaking/php-5.4.17/ext/mysqli/mysqli.c:164
No locals.
#8  0x00007f7a1e9ab06a in mysqli_stmt_free_storage (object=0x7f7a19cc6860)
at /home/myUser/DebMaking/php-5.4.17/ext/mysqli/mysqli.c:255
        stmt = <optimized out>
        zo = 0x7f7a19cc6860
        intern = 0x7f7a19cc6860
        my_res = <optimized out>
#9  0x00007f7a1ebada26 in zend_objects_store_del_ref_by_handle_ex
(handle=2, handlers=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_objects_API.c:221
        __orig_bailout = <optimized out>
        __bailout = {{__jmpbuf = {140162395558752, -8192091644916044739,
140162395540600, 140162486594824, 140162478078896, 140735356192568,
-8123113098347975619, 
              -8192088360732496835}, __mask_was_saved = 0, __saved_mask =
{__val = {140162477808826, 140161962737665, 0, 5283658345051342928,
140162477785156, 0, 
                140162542126972, 0, 0, 140735356190832, 140162397992704,
140162531681520, 140162477986829, 140162486592512, 0, 0}}}}
        obj = 0x7f7a19f05070
        failure = <optimized out>
#10 0x00007f7a1ebada43 in zend_objects_store_del_ref
(zobject=0x7f7a19cc5360) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_objects_API.c:173
        handle = <optimized out>
#11 0x00007f7a1eb77d29 in _zval_dtor (zvalue=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_variables.h:35
No locals.
#12 _zval_ptr_dtor (zval_ptr=0x7f7a19cc6918) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_execute_API.c:436
No locals.
#13 _zval_ptr_dtor (zval_ptr=0x7f7a19cc6918) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_execute_API.c:425
No locals.
#14 0x00007f7a1eb930a5 in zend_hash_apply_deleter
(ht=ht@entry=0x7f7a1f396d08, p=p@entry=0x7f7a19cc6900) at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_hash.c:650
        retval = <optimized out>
#15 0x00007f7a1eb94be1 in zend_hash_reverse_apply
(ht=ht@entry=0x7f7a1f396d08, apply_func=apply_func@entry=0x7f7a1eb77bb0
<zval_call_destructor>)
    at /home/myUser/DebMaking/php-5.4.17/Zend/zend_hash.c:804
        result = 1
        p = 0x7f7a19cc0c78
        q = 0x7f7a19cc6900
#16 0x00007f7a1eb78041 in shutdown_destructors () at
/home/myUser/DebMaking/php-5.4.17/Zend/zend_execute_API.c:217
        symbols = 14
        __orig_bailout = 0x7fff80e9bf30
        __bailout = {{__jmpbuf = {140162486594432, -8192091645151974339,
140162544640160, 140162549147716, -4294967295, 140735356192568,
-8123113101239948227, 
              -8192088332522132419}, __mask_was_saved = 0, __saved_mask =
{__val = {140162482955400, 140162397992704, 140162477812253, 0,
140162397992840, 103079215104, 
                140162477986829, 140162397992896, 140162477986829, 0,
433992944, 8, 140162396730936, 7, 23, 140162486594824}}}}
#17 0x00007f7a1eb86ac7 in zend_call_destructors () at
/home/myUser/DebMaking/php-5.4.17/Zend/zend.c:922
        __orig_bailout = <optimized out>
        __bailout = {{__jmpbuf = {140162486594432, -8192091645151974339,
140162544640160, 140162549147716, -4294967295, 140735356192568,
-8123113101273502659, 
              -8192088337574958019}, __mask_was_saved = 0, __saved_mask =
{__val = {140735356192568, 140735356191360, 140162537525486, 3,
140735356191400, 
                140162479205191, 140162544640040, 140162477998400,
140162574668336, 140162544603136, 140162544606128, 8, 18446744069414584321,
140162486592808, 
                140162486592512, 140162544640160}}}}
---Type <return> to continue, or q <return> to quit---
#18 0x00007f7a1eb27e25 in php_request_shutdown (dummy=dummy@entry=0x0) at
/home/myUser/DebMaking/php-5.4.17/main/main.c:1742
        __orig_bailout = <optimized out>
        __bailout = {{__jmpbuf = {140162486594432, -8192091645151974339,
140162544640160, 140162549147716, -4294967295, 140735356192568,
-8123113101149770691, 
              -8192088286588605379}, __mask_was_saved = 0, __saved_mask =
{__val = {140162544640040, 4, 140162544606160, 140735356191600,
140162537483668, 
                140162483051270, 140162544606128, 140162483051320,
140162544643688, 4294967400, 409318933599, 55834574848, 140162544643984,
140162483051323, 
                140162544640160, 140162486593120}}}}
        report_memleaks = 1 '\001'
#19 0x00007f7a1ec305af in php_apache_request_dtor (r=<optimized out>) at
/home/myUser/DebMaking/php-5.4.17/sapi/apache2handler/sapi_apache2.c:507
No locals.
#20 php_handler (r=0x7f7a22af20a0) at
/home/myUser/DebMaking/php-5.4.17/sapi/apache2handler/sapi_apache2.c:679
        ctx = 0x7f7a22aefe08
        conf = 0x7f7a22c203d8
        brigade = 0x7f7a22ae9b08
        bucket = <optimized out>
        rv = <optimized out>
        parent_req = 0x0
#21 0x00007f7a22d0db60 in ap_run_handler ()
No symbol table info available.
#22 0x00007f7a22d0dfab in ap_invoke_handler ()
No symbol table info available.
#23 0x00007f7a22d1e088 in ap_process_request ()
No symbol table info available.
#24 0x00007f7a22d1af48 in ?? ()
No symbol table info available.
#25 0x00007f7a22d14520 in ap_run_process_connection ()
No symbol table info available.
#26 0x00007f7a22d22cb9 in ?? ()
No symbol table info available.
#27 0x00007f7a22d233d2 in ?? ()
No symbol table info available.
#28 0x00007f7a22d23f36 in ap_mpm_run ()
No symbol table info available.
#29 0x00007f7a22cf8832 in main ()
No symbol table info available.


phpinfo() of my 5.4.17:
  Configure Command    './configure' '--prefix=/usr' '--with-mysql=mysqlnd'
'--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd'
'--with-apxs2=/usr/bin/apxs2' '--with-libdir=/lib/x86_64-linux-gnu'
'--without-db4' '--without-qdbm' '--without-gdbm' '--without-imap'
'--with-sqlite3' '--with-gd' '--with-config-file-path=/etc/php5/apache2'
'--with-config-file-scan-dir=/etc/php5/apache2/conf.d'
'--build=x86_64-linux-gnu' '--host=x86_64-linux-gnu' '--sysconfdir=/etc'
'--localstatedir=/var' '--mandir=/usr/share/man' '--disable-debug'
'--with-regex=php' '--disable-rpath' '--disable-static' '--with-pic'
'--with-layout=GNU' '--with-pear=/usr/share/php' '--enable-calendar'
'--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-bcmath'
'--with-bz2' '--enable-ctype' '--with-iconv' '--enable-exif' '--enable-ftp'
'--with-gettext' '--enable-mbstring' '--with-onig=/usr'
'--with-pcre-regex=/usr' '--enable-shmop' '--enable-sockets'
'--enable-wddx' '--with-libxml-dir=/usr' '--with-zlib'
'--with-kerberos=/usr' '--with-openssl=/usr' '--enable-soap' '--enable-zip'
'--with-mhash=yes' '--with-system-tzdata'
'--with-mysql-sock=/var/run/mysqld/mysqld.sock' '--without-mm'
'--with-curl=shared,/usr' '--with-enchant=shared,/usr'
'--with-zlib-dir=/usr' '--enable-gd-native-ttf' '--with-gmp=shared,/usr'
'--with-jpeg-dir=shared,/usr' '--with-xpm-dir=shared,/usr/X11R6'
'--with-png-dir=shared,/usr' '--with-freetype-dir=shared,/usr'
'--with-imap-ssl' '--enable-intl=shared' '--without-t1lib'
'--with-ldap=shared,/usr' '--with-ldap-sasl=/usr'
'--with-mcrypt=shared,/usr' '--with-pspell=shared,/usr'
'--with-recode=shared,/usr' '--with-xsl=shared,/usr'
'--with-snmp=shared,/usr' '--with-mssql=shared,/usr'
'--with-tidy=shared,/usr' '--with-xmlrpc=shared'
'--with-pgsql=shared,/usr'


-- 
Edit bug report at https://bugs.php.net/bug.php?id=65337&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=65337&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=65337&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=65337&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=65337&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=65337&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=65337&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=65337&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=65337&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=65337&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=65337&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=65337&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=65337&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=65337&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65337&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=65337&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=65337&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=65337&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65337&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=65337&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=65337&r=mysqlcfg

Reply via email to