ID: 48745 Updated by: theta...@php.net Reported By: theta...@php.net -Status: Closed +Status: Open Bug Type: MySQL related Operating System: * PHP Version: 5.3.0 Assigned To: mysql New Comment:
It is still the same stack trace: Program terminated with signal 11, Segmentation fault. #0 0xfc3931aa in php_mysql_field_info (ht=0, return_value=0xd7db5a8, return_value_ptr=0x0, this_ptr=0x0, return_value_used=1, tsrm_ls=0xc96f228, entry_type=2) at /pangaea/install/php5.3-200908291030/ext/mysql/php_mysql.c:2410 2410 Z_STRLEN_P(return_value) = strlen(mysql_field->table); (gdb) where #0 0xfc3931aa in php_mysql_field_info (ht=0, return_value=0xd7db5a8, return_value_ptr=0x0, this_ptr=0x0, return_value_used=1, tsrm_ls=0xc96f228, entry_type=2) at /pangaea/install/php5.3-200908291030/ext/mysql/php_mysql.c:2410 #1 0xfc56d291 in zend_do_fcall_common_helper_SPEC (execute_data=0xc6ddf20, tsrm_ls=0xc404e20) at /pangaea/install/php5.3-200908291030/Zend/zend_vm_execute.h:313 #2 0xfc56c116 in execute (op_array=0xc7dcaec, tsrm_ls=0xc404e20) at /pangaea/install/php5.3-200908291030/Zend/zend_vm_execute.h:104 #3 0xfc54a437 in zend_execute_scripts (type=8, tsrm_ls=0xc404e20, retval=0x0, file_count=3) at /pangaea/install/php5.3-200908291030/Zend/zend.c:1188 #4 0xfc4f58d6 in php_execute_script (primary_file=0xe7de7cb8, tsrm_ls=0xc404e20) at /pangaea/install/php5.3-200908291030/main/main.c:2212 #5 0xfc5d60ea in php5_execute (pb=0x81ae228, sn=0xc2661dc, rq=0xc266254) at /pangaea/install/php5.3-200908291030/sapi/nsapi/nsapi.c:1047 #6 0xfecfb147 in func_exec_str () from /pangaea/webserver70/lib/libns-httpd40.so #7 0xfecfbd2a in INTfunc_exec_directive () from /pangaea/webserver70/lib/libns-httpd40.so #8 0xfed009d6 in INTservact_service () from /pangaea/webserver70/lib/libns-httpd40.so #9 0xfed01a39 in INTservact_handle_processed () from /pangaea/webserver70/lib/libns-httpd40.so #10 0xfed5e358 in __1cLHttpRequestUUnacceleratedRespond6M_v_ () from /pangaea/webserver70/lib/libns-httpd40.so #11 0xfed5d5ba in __1cLHttpRequestNHandleRequest6MpnGnetbuf_I_i_ () from /pangaea/webserver70/lib/libns-httpd40.so #12 0xfed5be90 in __1cNDaemonSessionDrun6M_v_ () from /pangaea/webserver70/lib/libns-httpd40.so #13 0xfeb861fc in ThreadMain () from /pangaea/webserver70/lib/libnsprwrap.so #14 0xfe0bb6c9 in _pt_root () from /pangaea/webserver70/lib/libnspr4.so #15 0xfd37fd36 in _thr_setup () from /lib/libc.so.1 #16 0xfd380020 in L3_doit () from /lib/libc.so.1 #17 0xeb9d3c00 in ?? () #18 0x00000000 in ?? () (gdb) print *mysql_field $2 = {name = 0x0, org_name = 0x0, table = 0x0, org_table = 0x0, db = 0x0, catalog = 0x0, def = 0x0, length = 0, max_length = 0, name_length = 0, org_name_length = 0, table_length = 0, org_table_length = 0, db_length = 0, catalog_length = 0, def_length = 0, flags = 0, decimals = 0, charsetnr = 0, type = MYSQL_TYPE_DECIMAL, root = 0x0, root_len = 0} (gdb) print mysql_result $3 = (MYSQLND_RES *) 0x0 (gdb) The new version is installed (I checked the snaps.php.net version for your changes). The attached PHP scipt to reproduce generates similar stack trace: Core was generated by `php test.php'. Program terminated with signal 11, Segmentation fault. #0 0x081a24f2 in php_mysql_field_info (ht=0, return_value=0x887e28c, return_value_ptr=0x0, this_ptr=0x0, return_value_used=1, tsrm_ls=0x8b057d8, entry_type=2) at /pangaea/install/php5.3-200908291030/ext/mysql/php_mysql.c:2410 2410 Z_STRLEN_P(return_value) = strlen(mysql_field->table); (gdb) where #0 0x081a24f2 in php_mysql_field_info (ht=0, return_value=0x887e28c, return_value_ptr=0x0, this_ptr=0x0, return_value_used=1, tsrm_ls=0x8b057d8, entry_type=2) at /pangaea/install/php5.3-200908291030/ext/mysql/php_mysql.c:2410 #1 0x0837c5d9 in zend_do_fcall_common_helper_SPEC (execute_data=0x8abb468, tsrm_ls=0x885ecc0) at /pangaea/install/php5.3-200908291030/Zend/zend_vm_execute.h:313 #2 0x0837b45e in execute (op_array=0x886e340, tsrm_ls=0x885ecc0) at /pangaea/install/php5.3-200908291030/Zend/zend_vm_execute.h:104 #3 0x0835977f in zend_execute_scripts (type=8, tsrm_ls=0x885ecc0, retval=0x0, file_count=3) at /pangaea/install/php5.3-200908291030/Zend/zend.c:1188 #4 0x08304c1e in php_execute_script (primary_file=0x8047c90, tsrm_ls=0x885ecc0) at /pangaea/install/php5.3-200908291030/main/main.c:2212 #5 0x083e5406 in main (argc=2, argv=0x8047d24) at /pangaea/install/php5.3-200908291030/sapi/cli/php_cli.c:1188 $ php --version PHP 5.3.1-dev (cli) (built: Aug 29 2009 14:35:51) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies >From this snap: php5.3-200908291030.tar.bz2 Uwe Previous Comments: ------------------------------------------------------------------------ [2009-08-29 12:46:44] theta...@php.net I still get SIGSEGV when logging into to the CMS Contenido with mysql extension instead of mysqli. I will reopen the bug report after investigating and analyzing the core dump (maybe its a new bug). ------------------------------------------------------------------------ [2009-08-28 09:38:11] and...@php.net This bug has been fixed in SVN. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Uwe, the fix will appear in 5.3.1 ------------------------------------------------------------------------ [2009-08-28 09:30:17] s...@php.net Automatic comment from SVN on behalf of andrey Revision: http://svn.php.net/viewvc/?view=revision&revision=287834 Log: Fix for bug#48745 mysqlnd: mysql_num_fields returns wrong column count for mysql_list_fields ------------------------------------------------------------------------ [2009-07-02 07:19:33] theta...@php.net Thanks! I understand the problem and that it is deprecated. The important thing is: it should *not* SIGSEGV. So the best idea would be to simply disable the whole function, if it is not working with mysqlnd and you are not willing to support it (something like: "deprecated functions work with libmysqlclient but not with mysqlnd". They should simply return false or throw an error or should removed at all). Because of the sigsegv it was hard to find out, where the error really occurred in this thousands of lines of foreign PHP code. But if Andrew is able to fix it, let's wait for it. > compile ext/mysql against libmysql (like ever since) and try > again in four weeks My problem was, that this does not work easily with PHP 32bit on Solaris x64 using /opt/csw libs (mysql_config only returns 64bit libs, includes strange not GCC compatible CFLAGS and so on). But this is another problem. It was also broken in 5.2 (but you were able to fix it), but with 5.3 it now produces hard compilation errors (and can only be fixed by replacing mysql_config with a "dummy" that returns correct CFLAGS and LIB paths). But Linux users can always compile against libmysql this. For Solaris users mysqlnd is the best for problem-less installation! The easiest workaround was to use mysqli in our case :) For me this bug is obsolete, I only want to keep it open because of the SIGSEGV. Uwe ------------------------------------------------------------------------ [2009-07-02 07:01:42] u...@php.net Thanks. As said, its fixable, I know the cause, I may know a hack to fix it but the call is deprecated. There are zillions of MySQL 4.0 users but we don't support MySQL 4.0 any more. There may be many list_fields users, but list_fields is deprecated. At some point you simply have to stop giving old, deprecated calls the highest priority. Apart from that, I don't want to hack with the packet decoders in the absence of Andrey if the workaround is as easy as: compile ext/mysql against libmysql (like ever since) and try again in four weeks. Ulf ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/48745 -- Edit this bug report at http://bugs.php.net/?id=48745&edit=1