Edit report at https://bugs.php.net/bug.php?id=64722&edit=1
ID: 64722 Comment by: tj dot botha at plista dot com Reported by: tj dot botha at plista dot com Summary: PDO extension causes zend_mm_heap corrupted Status: Feedback Type: Bug Package: PDO related Operating System: Ubuntu Server 12.10 PHP Version: master-Git-2013-04-26 (Git) Block user comment: N Private report: N New Comment: I just want to emphasize - that commenting out the code not a solution - since it causes errors later down the line. Also, when stepping / breaking at problem area through the code - the project starts loading in bits and pieces, no segfaults occur. Only when left to run without breakpoints does it crash - therefor this really does seem like a concurrency problem. Previous Comments: ------------------------------------------------------------------------ [2013-04-30 12:45:41] tj dot botha at plista dot com This appears to be a race condition - so I am unable to reproduce. I am however able to make the problem go away by modifying pdo_dbh.c to the following: static void pdo_dbh_free_storage(pdo_dbh_t *dbh TSRMLS_DC) { if (dbh->in_txn && dbh->methods && dbh->methods->rollback) { dbh->methods->rollback(dbh TSRMLS_CC); dbh->in_txn = 0; } if (dbh->is_persistent && dbh->methods && dbh->methods- >persistent_shutdown) { dbh->methods->persistent_shutdown(dbh TSRMLS_CC); } //uncomment below to cause zend_mm_heap corrupted //zend_object_std_dtor(&dbh->std TSRMLS_CC); //dbh->std.properties = NULL; dbh_free(dbh TSRMLS_CC); } If I recompile this into PHP it works - however now there is most likely a memory leak. I checked and this code is also new from PHP 5.3. So definitely it is causing the fault. Don't know what the real solution is though. TJ ------------------------------------------------------------------------ [2013-04-26 17:53:01] s...@php.net Do you have a reproducible testcase? ------------------------------------------------------------------------ [2013-04-26 14:48:58] tj dot botha at plista dot com Description: ------------ I have a project which uses MySQL PDO. I Compiled PHP versions 5.4.6, PHP 5.4.14 and PHP 5.6 (from current GIT repositoty - 26 April 2013). I have various configuration options, but everytime I my configure command includes --with-pdo-mysql=mysqlnd, I am unable to run my project. The ONLY log file which shows any kind of information is Apache error.log: zend_mm_heap corrupted When I remove --with-pdo-mysql from configure, then my project works okay (however all my PDO functions are of course missing) and I just get normal expected PHP errors. However. When I compile PHP version 5.3.24, it works. I can successfully include --with-pdo-mysql=mysqlnd, and my project loads without problems. Test script: --------------- I do not have a test script - as I have no indication as to where the app fails Actual result: -------------- #0 0x00000000008ee2c2 in zval_delref_p (pz=0x5a5a5a5a5a5a5a5a) at /home/tj/php- latest/Zend/zend.h:409 #1 0x00000000008ee51f in i_zval_ptr_dtor (zval_ptr=0x5a5a5a5a5a5a5a5a, __zend_filename=0xe38408 "/home/tj/php-latest/Zend/zend_objects.c", __zend_lineno=54) at /home/tj/php-latest/Zend/zend_execute.h:76 #2 0x00000000008ef896 in _zval_ptr_dtor (zval_ptr=0x7f88d6068a20, __zend_filename=0xe38408 "/home/tj/php-latest/Zend/zend_objects.c", __zend_lineno=54) at /home/tj/php-latest/Zend/zend_execute_API.c:428 #3 0x00000000009354de in zend_object_std_dtor (object=0x271b880) at /home/tj/php-latest/Zend/zend_objects.c:54 #4 0x000000000068aad0 in pdo_dbh_free_storage (dbh=0x271b880) at /home/tj/php- latest/ext/pdo/pdo_dbh.c:1576 #5 0x000000000093c9ad in zend_objects_store_del_ref_by_handle_ex (handle=140, handlers=0x116c2e0 <pdo_dbh_object_handlers>) at /home/tj/php-latest/Zend/zend_objects_API.c:221 #6 0x000000000093c6b3 in zend_objects_store_del_ref (zobject=0x7f88d60a4af8) at /home/tj/php-latest/Zend/zend_objects_API.c:173 #7 0x0000000000901b6c in _zval_dtor_func (zvalue=0x7f88d60a4af8, __zend_filename=0xe335f8 "/home/tj/php-latest/Zend/zend_execute.h", __zend_lineno=81) at /home/tj/php-latest/Zend/zend_variables.c:54 #8 0x00000000008ee4c1 in _zval_dtor (zvalue=0x7f88d60a4af8, __zend_filename=0xe335f8 "/home/tj/php-latest/Zend/zend_execute.h", __zend_lineno=81) at /home/tj/php-latest/Zend/zend_variables.h:35 #9 0x00000000008ee58c in i_zval_ptr_dtor (zval_ptr=0x7f88d60a4af8, __zend_filename=0xe34970 "/home/tj/php-latest/Zend/zend_variables.c", __zend_lineno=182) at /home/tj/php-latest/Zend/zend_execute.h:81 #10 0x00000000008ef896 in _zval_ptr_dtor (zval_ptr=0x7f88d6030b28, __zend_filename=0xe34970 "/home/tj/php-latest/Zend/zend_variables.c", __zend_lineno=182) at /home/tj/php-latest/Zend/zend_execute_API.c:428 #11 0x0000000000901f7b in _zval_ptr_dtor_wrapper (zval_ptr=0x7f88d6030b28) at /home/tj/php-latest/Zend/zend_variables.c:182 #12 0x00000000009174a7 in zend_hash_destroy (ht=0x7f88d6069138) at /home/tj/php- latest/Zend/zend_hash.c:560 #13 0x0000000000901b2f in _zval_dtor_func (zvalue=0x7f88d6b1ece8, __zend_filename=0xe335f8 "/home/tj/php-latest/Zend/zend_execute.h", __zend_lineno=81) at /home/tj/php-latest/Zend/zend_variables.c:45 #14 0x00000000008ee4c1 in _zval_dtor (zvalue=0x7f88d6b1ece8, __zend_filename=0xe335f8 "/home/tj/php-latest/Zend/zend_execute.h", __zend_lineno=81) at /home/tj/php-latest/Zend/zend_variables.h:35 #15 0x00000000008ee58c in i_zval_ptr_dtor (zval_ptr=0x7f88d6b1ece8, __zend_filename=0xe33d68 "/home/tj/php-latest/Zend/zend_opcode.c", __zend_lineno=169) at /home/tj/php-latest/Zend/zend_execute.h:81 #16 0x00000000008ef896 in _zval_ptr_dtor (zval_ptr=0x7f88d6b1ef20, __zend_filename=0xe33d68 "/home/tj/php-latest/Zend/zend_opcode.c", __zend_lineno=169) at /home/tj/php-latest/Zend/zend_execute_API.c:428 ---Type <return> to continue, or q <return> to quit--- #17 0x00000000008f562e in cleanup_user_class_data (ce=0x7f88d6b1e528) at /home/tj/php-latest/Zend/zend_opcode.c:169 #18 0x00000000008f5757 in zend_cleanup_user_class_data (pce=0x26d28e8) at /home/tj/php-latest/Zend/zend_opcode.c:202 #19 0x0000000000917ee7 in zend_hash_reverse_apply (ht=0x25016b0, apply_func=0x8f572e <zend_cleanup_user_class_data>) at /home/tj/php- latest/Zend/zend_hash.c:799 #20 0x00000000008ef301 in shutdown_executor () at /home/tj/php- latest/Zend/zend_execute_API.c:289 #21 0x000000000090411e in zend_deactivate () at /home/tj/php- latest/Zend/zend.c:939 #22 0x000000000086c2b5 in php_request_shutdown (dummy=0x0) at /home/tj/php- latest/main/main.c:1800 #23 0x00000000009b42f8 in do_cli (argc=2, argv=0x2500a40) at /home/tj/php- latest/sapi/cli/php_cli.c:1176 #24 0x00000000009b4b8d in main (argc=2, argv=0x2500a40) at /home/tj/php- latest/sapi/cli/php_cli.c:1377 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=64722&edit=1