#30312 [Asn->Csd]: sybase_unbuffered_query calls
| From: | thekid@php.net | Date: | Sat, 08 Nov 2008 14:08:07 +0000 |
| Subject: | #30312 [Asn->Csd]: sybase_unbuffered_query calls | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-130777@lists.php.net to get a copy of this message | ||
ID: 30312
Updated by: thekid@php.net
Reported By: dfleury2 at libertysurf dot fr
-Status: Assigned
+Status: Closed
Bug Type: Sybase-ct (ctlib) related
Operating System: *
PHP Version: 5.1.3, 4.4.2
Assigned To: thekid
New Comment:
This bug has been fixed in CVS.
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.
Looks as if a double-free caused this problem. Tests from
ext/sybase_ct/tests now all work.
Fixed in PHP_5_3 branch, PHP_5_2 will follow.
Previous Comments:
------------------------------------------------------------------------
[2007-01-19 19:40:40] lobster2 at xs4all dot nl
The use of sybase_query instead of sybase_unbuffered_query solved the
core dumps in my case (PHP 4.4.0 & 5.2.0 CLI with Sybase 12.5.3 on AIX
5.2).
I used the sybase_unbuffered_query calls with the third parameter =
false. The second sql query call in the script would crash the process
every time, surviving only the first fetch on the result set.
------------------------------------------------------------------------
[2006-05-02 16:36:41] dfleury2 at libertysurf dot fr
The bugs are still here in the 5.1.3 release.
------------------------------------------------------------------------
[2005-02-07 22:01:53] dfleury2 at libertysurf dot fr
The patch seems to work for the first example but not this one.
<?php
$db = sybase_connect( 'LOCALHOST', 'sa', '' );
$query= sybase_unbuffered_query( 'select getdate()' );
$array= sybase_fetch_array( $query );
var_dump( $array );
sybase_free_result( $query );
$query = sybase_unbuffered_query( 'select getdate(), getdate()'
);
$array = sybase_fetch_array( $query );
var_dump( $array );
sybase_free_result( $query );
?>
OUTPUT
------------
array(2) {
[0]=>
string(19) "Feb 7 2005 2:18PM"
["computed"]=>
string(19) "Feb 7 2005 2:18PM"
}
array(4) {
[0]=>
string(19) "Feb 7 2005 2:18PM"
["8"]=>
string(19) "Feb 7 2005 2:18PM"
[1]=>
string(19) "Feb 7 2005 2:18PM"
["Ø"]=>
string(19) "Feb 7 2005 2:18PM"
}
Bus error
with the patch a sample like this didn't work.
(I not sure if it's a legitimate code)
<?php
$db = sybase_connect( 'LOCAHOST', 'sa', '' );
$i = 0;
while( 1 )
{
$query = sybase_unbuffered_query( 'select * from big_table' );
$array = sybase_fetch_array( $query );
echo $i++." \n";
}
?>
but I got :
Warning: sybase_fetch_array(): supplied argument is not a valid Sybase
result resource in /tmp_mnt/users/fxa/fle
ury/divers/php/test2.php on line 8
(work fine in 4.3.8 but with memory leaks).
------------------------------------------------------------------------
[2005-02-06 15:35:40] thekid@php.net
Sorry, I cannot reproduce this, neither with apache / mod_php4 nor with
cli-php. Maybe this is because I'm using FreeTDS (and not the ct-libs?)
I added a test case to the PHP test system
(http://cvs.php.net/co.php/php-src/ext/sybase_ct/tests/bug30312.phpt)
which worked fine for me.
I can see a possible double-free in the sourcecode. Maybe could you try
the following patch:
http://sitten-polizei.de/bug30312.patch
------------------------------------------------------------------------
[2005-02-03 21:11:37] dfleury2 at libertysurf dot fr
The problem still here. (php_sybase_ct.c didn't move)
A free avoid the core, but the array is corrupted for the second
fetch.
<?php
$db = sybase_connect( 'LOCALHOST', 'sa', '' );
$query = sybase_unbuffered_query( 'select getdate()' );
$array = sybase_fetch_array( $query );
var_dump( $array );
sybase_free_result( $query );
$query = sybase_unbuffered_query( 'select getdate(), getdate()'
);
while( $array = sybase_fetch_array( $query ) )
var_dump( $array );
// sybase_free_result( $query );
?>
------------------------------------------------------------------------
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/30312
--
Edit this bug report at http://bugs.php.net/?id=30312&edit=1