From: Operating system: 2.6.32-131.0.15.el6.x86_64 PHP version: 5.3.10 Package: Arrays related Bug Type: Bug Bug description:Segfault from array_walk modifying an array passed by reference
Description: ------------ The following code produces a segmentation fault. Interestingly, if I remove either the unset or the modifying of the array values, it seems to work fine. Also, this only segfaults when the size of the array is larger. At 1000 or lower, it worked fine. We are using Xdebug 2.2.0rc1 gdb backtrace: GNU gdb (GDB) Red Hat Enterprise Linux (7.2-50.el6) Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /usr/bin/php...(no debugging symbols found)...done. [New Thread 8825] Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libcrypt.so.1 Reading symbols from /usr/lib64/libedit.so.0...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libedit.so.0 Reading symbols from /lib64/libncurses.so.5...(no debugging symbols found)...done. Loaded symbols for /lib64/libncurses.so.5 Reading symbols from /usr/lib64/libgmp.so.3...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libgmp.so.3 Reading symbols from /lib64/libbz2.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libbz2.so.1 Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libz.so.1 Reading symbols from /lib64/libpcre.so.0...(no debugging symbols found)...done. Loaded symbols for /lib64/libpcre.so.0 Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/librt.so.1 Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libm.so.6 Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libdl.so.2 Reading symbols from /lib64/libnsl.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libnsl.so.1 Reading symbols from /usr/lib64/libxml2.so.2...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libxml2.so.2 Reading symbols from /lib64/libgssapi_krb5.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libgssapi_krb5.so.2 Reading symbols from /lib64/libkrb5.so.3...(no debugging symbols found)...done. Loaded symbols for /lib64/libkrb5.so.3 Reading symbols from /lib64/libk5crypto.so.3...(no debugging symbols found)...done. Loaded symbols for /lib64/libk5crypto.so.3 Reading symbols from /lib64/libcom_err.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libcom_err.so.2 Reading symbols from /usr/lib64/libssl.so.10...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libssl.so.10 Reading symbols from /usr/lib64/libcrypto.so.10...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libcrypto.so.10 Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libc.so.6 Reading symbols from /lib64/libresolv.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libresolv.so.2 Reading symbols from /lib64/libfreebl3.so...(no debugging symbols found)...done. Loaded symbols for /lib64/libfreebl3.so Reading symbols from /lib64/libtinfo.so.5...(no debugging symbols found)...done. Loaded symbols for /lib64/libtinfo.so.5 Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done. [Thread debugging using libthread_db enabled] Loaded symbols for /lib64/libpthread.so.0 Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/ld-linux-x86-64.so.2 Reading symbols from /lib64/libkrb5support.so.0...(no debugging symbols found)...done. Loaded symbols for /lib64/libkrb5support.so.0 Reading symbols from /lib64/libkeyutils.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libkeyutils.so.1 Reading symbols from /lib64/libselinux.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libselinux.so.1 Reading symbols from /usr/lib64/php/modules/xdebug.so...done. Loaded symbols for /usr/lib64/php/modules/xdebug.so Reading symbols from /usr/lib64/php/modules/apc.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/apc.so Reading symbols from /usr/lib64/php/modules/curl.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/curl.so Reading symbols from /usr/lib64/libcurl.so.4...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libcurl.so.4 Reading symbols from /lib64/libidn.so.11...(no debugging symbols found)...done. Loaded symbols for /lib64/libidn.so.11 Reading symbols from /lib64/libldap-2.4.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libldap-2.4.so.2 Reading symbols from /usr/lib64/libssl3.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libssl3.so Reading symbols from /usr/lib64/libsmime3.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libsmime3.so Reading symbols from /usr/lib64/libnss3.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libnss3.so Reading symbols from /usr/lib64/libnssutil3.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libnssutil3.so Reading symbols from /lib64/libplds4.so...(no debugging symbols found)...done. Loaded symbols for /lib64/libplds4.so Reading symbols from /lib64/libplc4.so...(no debugging symbols found)...done. Loaded symbols for /lib64/libplc4.so Reading symbols from /lib64/libnspr4.so...(no debugging symbols found)...done. Loaded symbols for /lib64/libnspr4.so Reading symbols from /usr/lib64/libssh2.so.1...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libssh2.so.1 Reading symbols from /lib64/liblber-2.4.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/liblber-2.4.so.2 Reading symbols from /usr/lib64/libsasl2.so.2...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libsasl2.so.2 Reading symbols from /usr/lib64/php/modules/dom.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/dom.so Reading symbols from /usr/lib64/php/modules/fileinfo.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/fileinfo.so Reading symbols from /usr/lib64/php/modules/gd.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/gd.so Reading symbols from /usr/lib64/libt1.so.5...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libt1.so.5 Reading symbols from /usr/lib64/libfreetype.so.6...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libfreetype.so.6 Reading symbols from /usr/lib64/libX11.so.6...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libX11.so.6 Reading symbols from /usr/lib64/libXpm.so.4...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libXpm.so.4 Reading symbols from /usr/lib64/libpng12.so.0...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libpng12.so.0 Reading symbols from /usr/lib64/libjpeg.so.62...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libjpeg.so.62 Reading symbols from /usr/lib64/libxcb.so.1...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libxcb.so.1 Reading symbols from /usr/lib64/libXau.so.6...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libXau.so.6 Reading symbols from /usr/lib64/php/modules/json.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/json.so Reading symbols from /usr/lib64/php/modules/ldap.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/ldap.so Reading symbols from /usr/lib64/php/modules/mbstring.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/mbstring.so Reading symbols from /usr/lib64/php/modules/mcrypt.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/mcrypt.so Reading symbols from /usr/lib64/libmcrypt.so.4...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libmcrypt.so.4 Reading symbols from /usr/lib64/libltdl.so.7...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libltdl.so.7 Reading symbols from /usr/lib64/php/modules/mssql.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/mssql.so Reading symbols from /usr/lib64/libsybdb.so.5...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libsybdb.so.5 Reading symbols from /usr/lib64/libgnutls.so.26...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libgnutls.so.26 Reading symbols from /lib64/libgcrypt.so.11...(no debugging symbols found)...done. Loaded symbols for /lib64/libgcrypt.so.11 Reading symbols from /usr/lib64/libtasn1.so.3...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libtasn1.so.3 Reading symbols from /lib64/libgpg-error.so.0...(no debugging symbols found)...done. Loaded symbols for /lib64/libgpg-error.so.0 Reading symbols from /usr/lib64/php/modules/mysql.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/mysql.so Reading symbols from /usr/lib64/mysql/libmysqlclient.so.18...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/mysql/libmysqlclient.so.18 Reading symbols from /usr/lib64/libstdc++.so.6...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libstdc++.so.6 Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done. Loaded symbols for /lib64/libgcc_s.so.1 Reading symbols from /usr/lib64/php/modules/mysqli.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/mysqli.so Reading symbols from /usr/lib64/php/modules/odbc.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/odbc.so Reading symbols from /usr/lib64/libodbc.so.2...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libodbc.so.2 Reading symbols from /usr/lib64/php/modules/pdo.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/pdo.so Reading symbols from /usr/lib64/php/modules/pdo_dblib.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/pdo_dblib.so Reading symbols from /usr/lib64/php/modules/pdo_mysql.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/pdo_mysql.so Reading symbols from /usr/lib64/php/modules/pdo_odbc.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/pdo_odbc.so Reading symbols from /usr/lib64/php/modules/pdo_sqlite.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/pdo_sqlite.so Reading symbols from /usr/lib64/libsqlite3.so.0...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libsqlite3.so.0 Reading symbols from /usr/lib64/php/modules/phar.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/phar.so Reading symbols from /usr/lib64/php/modules/pspell.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/pspell.so Reading symbols from /usr/lib64/libaspell.so.15...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libaspell.so.15 Reading symbols from /usr/lib64/libpspell.so.15...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libpspell.so.15 Reading symbols from /usr/lib64/php/modules/soap.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/soap.so Reading symbols from /usr/lib64/php/modules/sqlite3.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/sqlite3.so Reading symbols from /usr/lib64/php/modules/stats.so...done. Loaded symbols for /usr/lib64/php/modules/stats.so Reading symbols from /usr/lib64/php/modules/wddx.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/wddx.so Reading symbols from /usr/lib64/php/modules/xmlreader.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/xmlreader.so Reading symbols from /usr/lib64/php/modules/xmlwriter.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/xmlwriter.so Reading symbols from /usr/lib64/php/modules/xsl.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/xsl.so Reading symbols from /usr/lib64/libexslt.so.0...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libexslt.so.0 Reading symbols from /usr/lib64/libxslt.so.1...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/libxslt.so.1 Reading symbols from /usr/lib64/php/modules/zip.so...(no debugging symbols found)...done. Loaded symbols for /usr/lib64/php/modules/zip.so Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols found)...done. Loaded symbols for /lib64/libnss_files.so.2 Core was generated by `php segfault.php'. Program terminated with signal 11, Segmentation fault. #0 0x00000000005bb5e2 in zend_hash_get_current_data_ex () Missing separate debuginfos, use: debuginfo-install php-cli-5.3.10-2.el6.remi.x86_64 (gdb) bt #0 0x00000000005bb5e2 in zend_hash_get_current_data_ex () #1 0x00000000004f0d98 in ?? () #2 0x00000000004f1538 in ?? () #3 0x00007fdc92cbc367 in xdebug_execute_internal (current_execute_data=0x7fdc4a547050, return_value_used=0) at /var/tmp/xdebug/xdebug.c:1468 #4 0x00000000005fda96 in ?? () #5 0x00000000005d5310 in execute () #6 0x00007fdc92cbcac9 in xdebug_execute (op_array=0x2276040) at /var/tmp/xdebug/xdebug.c:1376 #7 0x00000000005aee5d in zend_execute_scripts () #8 0x000000000055c0f8 in php_execute_script () #9 0x0000000000639b57 in ?? () #10 0x0000003c7601ecdd in __libc_start_main () from /lib64/libc.so.6 #11 0x0000000000422319 in _start () Test script: --------------- $myArray = array_fill(0, 10000, md5('test')); array_walk( $myArray, function($value, $key, $myArray) { if (rand(0, 1)) { unset($myArray[$key]); } else if (rand(0, 1)) { $myArray[$key] = md5(rand(0, 10000)); } }, &$myArray ); Expected result: ---------------- No segmentation fault Actual result: -------------- Segmentation fault -- Edit bug report at https://bugs.php.net/bug.php?id=61730&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=61730&r=trysnapshot54 Try a snapshot (PHP 5.3): https://bugs.php.net/fix.php?id=61730&r=trysnapshot53 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=61730&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=61730&r=fixed Fixed in SVN and need be documented: https://bugs.php.net/fix.php?id=61730&r=needdocs Fixed in release: https://bugs.php.net/fix.php?id=61730&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=61730&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=61730&r=needscript Try newer version: https://bugs.php.net/fix.php?id=61730&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=61730&r=support Expected behavior: https://bugs.php.net/fix.php?id=61730&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=61730&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=61730&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=61730&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=61730&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=61730&r=dst IIS Stability: https://bugs.php.net/fix.php?id=61730&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=61730&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=61730&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=61730&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=61730&r=mysqlcfg