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

Reply via email to