Mombu the Php Forum sponsored links

Go Back   Mombu the Php Forum > Php > #30312 : sybase_unbuffered_query calls
User Name
Password
REGISTER NOW! Mark Forums Read

sponsored links


Reply
 
1 12th June 23:08
External User
 
Posts: 1
Default #30312 : sybase_unbuffered_query calls


ID: 30312
Updated by: sniper@php.net
Reported By: dfleury2 at libertysurf dot fr
-Status: Open
+Status: Assigned
Bug Type: Sybase-ct (ctlib) related
Operating System: *
-PHP Version: 4CVS-2005-02-05
+PHP Version: 5.1.3, 4.4.2
Assigned To: thekid


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

[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 );
?>

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

[2004-10-03 20:21:32] dfleury2 at libertysurf dot fr

Description:
------------
Two calls to sybase_unbuffered_query core Apache.

To correct the problem before somelse those it
perfectly, I had add a return after
php_sybase_finish_results(result);

/* Forward declaration */
static int php_sybase_finish_results (sybase_result *result);

static void php_free_sybase_result(zend_rsrc_list_entry *rsrc
TSRMLS_DC)
{
sybase_result *result = (sybase_result *)rsrc->ptr;

/* Check to see if we've read all rows */
if (result->sybase_ptr && result->sybase_ptr->active_result_index)
{
if (result->sybase_ptr->cmd) {
ct_cancel(NULL, result->sybase_ptr->cmd, CS_CANCEL_ALL);
}
php_sybase_finish_results(result);
return; // correction
}

_free_sybase_result(result);
}

Reproduce code:
---------------
<?php
$db = sybase_connect( 'LOCALHOST', 'sa', '' );

$query = sybase_unbuffered_query( 'select getdate()' );
$array = sybase_fetch_array( $query );

echo $array[ 0 ];
echo '<br>';

$query = sybase_unbuffered_query( 'select getdate()' );
$array = sybase_fetch_array( $query );
echo $array[ 0 ];
?>

Expected result:
----------------
2-Oct-2004 18:42:50
2-Oct-2004 18:42:50

Actual result:
--------------
Core dump

(gdb) bt
#0 0x080e2890 in _free_sybase_result (result=0x81cb89c)
at
/home/david/Do***ents/php-4.3.9/ext/sybase_ct/php_sybase_ct.c:128
#1 0x080e2acc in php_free_sybase_result (rsrc=0x81b86f4)
at
/home/david/Do***ents/php-4.3.9/ext/sybase_ct/php_sybase_ct.c:161
#2 0x0812cfa0 in list_entry_destructor (ptr=0x81b86f4)
at /home/david/Do***ents/php-4.3.9/Zend/zend_list.c:177
#3 0x0812add1 in zend_hash_del_key_or_index (ht=0x8177ce8, arKey=0x0,
nKeyLength=0, h=5, flag=1)
at /home/david/Do***ents/php-4.3.9/Zend/zend_hash.c:527
#4 0x0812cc92 in _zend_list_delete (id=5) at
/home/david/Do***ents/php-4.3.9/Zend/zend_list.c:56
#5 0x08123a95 in _zval_dtor (zvalue=0x81c6a2c,
__zend_filename=0x8163dc4
"/home/david/Do***ents/php-4.3.9/Zend/zend_execute_API.c",
__zend_lineno=291) at
/home/david/Do***ents/php-4.3.9/Zend/zend_variables.c:69
#6 0x0811a9eb in _zval_ptr_dtor (zval_ptr=0xbfffcad0,
__zend_filename=0x814dd58
"/home/david/Do***ents/php-4.3.9/ext/sybase_ct/php_sybase_ct.c",
__zend_lineno=1426) at
/home/david/Do***ents/php-4.3.9/Zend/zend_execute_API.c:291
#7 0x080e6ffd in php_sybase_query (ht=1, return_value=0x81c69ec,
this_ptr=0x0, return_value_used=1,
buffered=1) at
/home/david/Do***ents/php-4.3.9/ext/sybase_ct/php_sybase_ct.c:1426
#8 0x080e74f7 in zif_sybase_unbuffered_query (ht=1,
return_value=0x81c69ec, this_ptr=0x0,
return_value_used=1) at
/home/david/Do***ents/php-4.3.9/ext/sybase_ct/php_sybase_ct.c:1634
#9 0x08137694 in execute (op_array=0x81c3b84)
at /home/david/Do***ents/php-4.3.9/Zend/zend_execute.c:1640
#10 0x08125735 in zend_execute_scripts (type=8, retval=0x0,
file_count=3)
at /home/david/Do***ents/php-4.3.9/Zend/zend.c:891
#11 0x080ef2c6 in php_execute_script (primary_file=0xbffff240)
---Type <return> to continue, or q <return> to quit---
at /home/david/Do***ents/php-4.3.9/main/main.c:1735
#12 0x0813d2fa in main (argc=2, argv=0xbffff304)
at /home/david/Do***ents/php-4.3.9/sapi/cli/php_cli.c:822

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

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
  Reply With Quote


  sponsored links


Reply


Thread Tools
Display Modes




Copyright 2006 SmartyDevil.com - Dies Mies Jeschet Boenedoesef Douvema Enitemaus -
666