ID:               47928
 Updated by:       [email protected]
 Reported By:      jjuergens at web dot de
-Status:           Critical
+Status:           Assigned
 Bug Type:         MySQLi related
 Operating System: *
 PHP Version:      5.*, 6CVS (2009-04-19)
-Assigned To:      
+Assigned To:      mysql


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

[2009-04-19 16:19:58] [email protected]

In PHP_5_3 / HEAD the crash happens with any BLOB/TEXT types.
(due to mysqli_api.c:398)

This might be also a MySQL bug since it seems to set MYSQL_TYPE_BLOB 
always for any blob column.

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

[2009-04-19 15:14:49] [email protected]

Here's better reproduce data (the longtext column has to have enough 
data to cause crash):

drop database crashtest; create database crashtest; use crashtest;
create table crash ( test longtext );
insert into crash set test='
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
';
grant select on crashtest.* to 'test'@'localhost';


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

[2009-04-19 14:44:29] jjuergens at web dot de

Yeah, you're right: Soon as I change the column-type from longtext to
text, PHP doesn't crash anymore. The example you provided also crashes
on my debug-enabled PHP-Version, while the Opensuse-Version (with
Suoshin-Patch) throws efree()-errors until there are more than 396
characters in the textfield.
I actually tried to debug the PHP-code some (with very limited
knowledge) and I think that the problem is somewhere within the binding
of the resultset since thats where the script stops.

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

[2009-04-19 14:11:14] [email protected]

See also bug #46808


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

[2009-04-19 14:07:02] [email protected]

Here is the shortest possible test I could come up with:

<?php

/* Test database and table with data:
drop database crashtest; create database crashtest; use crashtest;
create table crash ( test longtext );
insert into crash set test='123456789';
grant select on crashtest.* to 'test'@'localhost';
*/

$dbLink=new mysqli("localhost","test","","crashtest",3306);
$stmt=$dbLink->prepare("SELECT test FROM crash");
$stmt->execute();
$stmt->bind_result($foo);
while($stmt->fetch());
$stmt->close();
?>

The problem seems to be with the longtext column. If that is changed 
to text column, everything works just fine.


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

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/47928

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

Reply via email to