ID:               32287
 Updated by:       [EMAIL PROTECTED]
 Reported By:      john at swartzentruber dot us
-Status:           Open
+Status:           Bogus
-Bug Type:         Reproducible crash
+Bug Type:         MySQLi related
 Operating System: Fedora Core3
 PHP Version:      5CVS-2005-03-12 (dev)
 New Comment:

This is propably the oldest and most well known 'bug' that has been
reported.. :)



Previous Comments:
------------------------------------------------------------------------

[2005-03-14 21:09:42] john at swartzentruber dot us

I believe I found the problem. From my default installation I had
mod_auth_mysql.so loading, and it was using an old version of MySQL. By
removing that RPM and no longer loading mod_auth_mysql, the problem went
away. Sorry about the false alarm.

------------------------------------------------------------------------

[2005-03-13 02:58:38] john at swartzentruber dot us

I'm an experienced C++ programmer, but unfortunately not a GNU debugger
user. So I went way back to my really early days and put a few printf
calls at the problem area. Here is my output:

field_len = 0x88bf358, *field_len = 5, fields=0x4f9c285,
mysql_num_fields(result) = 2
field_len = 0x88bf358, *field_len = 8, fields=0x88c3a30,
mysql_num_fields(result) = 2
fields[0].name = 0x88c3a78
    fields[0].name = Name
fields[0].org_name = 0x88c3a70
    fields[0].org_name = City
fields[0].table = (nil)
fields[0].org_table = 0xfe
Segmentation fault

This segmentation fault is in one of my printfs. The interesting thing
is that org_name has a value that *should* be the value for table. And
org_table is bogus, causing this segfault.

It looks like something is not using the most recent mysql.h file and
there is a structure mismatch.

I went back and looked at my phpinfo(). It says that the mysqli client
API version is 3.23.58. I'm running version 4.1.10a of MySQL, so that
doesn't look right. That might be the cause of the problem. My big
question now is why is it using that version (if that is the case)?
Where does that come from?

I hope something here helps.

------------------------------------------------------------------------

[2005-03-13 01:47:03] john at swartzentruber dot us

I'm not sure what is being asked for that wasn't provided. The problem
seems to be specific to mysqli, so needs to use the database. The
database in this case is the standard example world database used in
the PHP mysqli examples. As the comment indicates, the include is only
to set $rootpass. If you want to just code your root password directly
instead of including that file, that will work.

------------------------------------------------------------------------

[2005-03-12 22:51:21] john at swartzentruber dot us

Description:
------------
When I run the example script using my browser, there is a segmentation
fault on the call to $result->fetch_array(MYSQLI_ASSOC) on line 16. When
I run it from the command line, the script appears to work. The
segmentation fault only occurs when fetching the associative array.
Using MYSQLI_NUM works, but MYSQLI_BOTH also crashes.

Reproduce code:
---------------
<?php
include "../../secrets/rootmysqlpass.inc.php"; // only defines
$rootpass
$mysqli = new mysqli("localhost", "root", $rootpass, "World");
printf("Host information: %s\n", $mysqli->host_info);
/* check connection */
if (mysqli_connect_errno()) {
   printf("Connect failed: %s\n", mysqli_connect_error());
   exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = $mysqli->query($query);
/* numeric array */
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);
/* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
$result->close();
$mysqli->close();
?>


Expected result:
----------------
Kabul (AFG)
Qandahar (AFG)


Actual result:
--------------
#0  0x0018d96b in strlen () from /lib/tls/libc.so.6
#1  0x0231cc70 in php_mysqli_fetch_into_hash (ht=1,
return_value=0x9ed2454, this_ptr=0x9ed16fc, return_value_used=1,
    override_flags=0, into_object=0) at
/usr/local/src/php5-STABLE-200503121930/ext/mysqli/mysqli.c:663
#2  0x02326b79 in zif_mysqli_fetch_array (ht=1, return_value=0x9ed2454,
this_ptr=0x9ed16fc, return_value_used=1)
    at
/usr/local/src/php5-STABLE-200503121930/ext/mysqli/mysqli_nonapi.c:193
#3  0x024c3f31 in zend_do_fcall_common_helper (execute_data=0xbfee64d0,
opline=0x9ed61b8, op_array=0x9e78dd4)
    at
/usr/local/src/php5-STABLE-200503121930/Zend/zend_execute.c:2727
#4  0x024c4645 in zend_do_fcall_by_name_handler
(execute_data=0xbfee64d0, opline=0x9ed61b8, op_array=0x9e78dd4)
    at
/usr/local/src/php5-STABLE-200503121930/Zend/zend_execute.c:2841
#5  0x024bf0ee in execute (op_array=0x9e78dd4) at
/usr/local/src/php5-STABLE-200503121930/Zend/zend_execute.c:1406
#6  0x0249b364 in zend_execute_scripts (type=8, retval=0x0,
file_count=3)
    at /usr/local/src/php5-STABLE-200503121930/Zend/zend.c:1068
#7  0x0245c516 in php_execute_script (primary_file=0xbfee8830) at
/usr/local/src/php5-STABLE-200503121930/main/main.c:1630
#8  0x024c9b29 in php_handler (r=0x9ebf8d8)
    at
/usr/local/src/php5-STABLE-200503121930/sapi/apache2handler/sapi_apache2.c:555
#9  0x007bf9f7 in ap_run_handler () from /usr/sbin/httpd
#10 0x09b83888 in ?? ()
#11 0x007bf9ce in ap_run_handler () from /usr/sbin/httpd
#12 0x09ebf8d8 in ?? ()
#13 0x09ebf8d8 in ?? ()
#14 0xbfee89a8 in ?? ()
#15 0x007bfe63 in ap_invoke_handler () from /usr/sbin/httpd
Previous frame inner to this frame (corrupt stack?)



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=32287&edit=1

Reply via email to