ID: 22403
User updated by: cesararnold at yahoo dot com dot br
Reported By: cesararnold at yahoo dot com dot br
Status: Analyzed
Bug Type: Sybase-ct (ctlib) related
Operating System: *
PHP Version: 4.3.2-dev
Assigned To: thekid
New Comment:
Great !
We'll wait for you.
Thanks.
Previous Comments:
------------------------------------------------------------------------
[2003-04-18 20:37:54] thekid@php.net
Have been able to reproduce with sybase libraries. As these are not
available on FreeBSD, I use FreeTDS, which does not produce a status
result in this situation ("return status = -6") but rather issues a
"CS_CMD_FAIL" instantly. I know where the problem is
(php_sybase_finish_results), fixing it is not trivial though (I've
already given it a first shot but gave up after the supposed fix caused
a segfault in another place:)). I'll do my best and see if I can
include the fix in 4.3.2.
------------------------------------------------------------------------
[2003-04-14 20:55:39] cesararnold at yahoo dot com dot br
Bingo !
The output is below:
PHP Version: 4.3.2-dev
OS : Windows NT SAO-IRINEU 5.0 build 2195
SAPI : isapi
Sybase : Adaptive Server Enterprise/11.9.2/1075/P/Linux Intel/Linux
2.2.5 i586/OPT/Mon Jul 12 09:51:46 1999
------------------------------------------------------------------------
>>> Query: exec tempdb..test
*** Caught Sybase Server Message #201 [Severity 16, state 2] at
line 0
'Procedure test expects parameter @param, which was not supplied.'
PHP has encountered an Access Violation at 01EB36C9
At this point the PHP stopped and IIS too, exactly as we have posted.
It was necessary to stop and restart the www service manually.
Thanks again for your great help.
------------------------------------------------------------------------
[2003-04-12 10:27:51] thekid@php.net
Can you show me the output of this script:
<?php
/* Test script for http://bugs.php.net/bug.php?id=22403
*
* SQL needed
* ==========
* use tempdb
* go
* create proc test (@param int)
* as
* begin
* select @param
* select @param + 1
* return @param
* end
* go
*/
header('Content-type: text/plain');
error_reporting(E_ALL);
function sybase_message($msgnumber, $severity, $state, $line, $text)
{
printf(
"*** Caught Sybase Server Message #%d [Severity %d, state %d] at
line %d\n '%s'\n",
$msgnumber,
$severity,
$state,
$line,
chop($text)
);
}
function sybase_exec() {
echo str_repeat('-', 72)."\n";
$args= func_get_args();
$query= array_shift($args);
foreach ($args as $arg) {
$query.= ' '.((NULL === $arg) ? 'NULL' : $arg);
}
printf(">>> Query: %s\n", $query);
flush();
$h= sybase_query($query);
printf("<<< Return: %s\n", var_export(is_resource($h), 1));
flush();
if (!$h) return;
while ($data= sybase_fetch_assoc($h)) {
var_dump($data);
flush();
}
}
sybase_set_message_handler('sybase_message');
sybase_min_server_severity(11);
sybase_connect('...', '...', '...'); // FILL IN PLEASE:)
printf(
"PHP Version: %s\n".
"OS : %s\n".
"SAPI : %s\n".
"Sybase : %s\n",
phpversion(),
php_uname(),
PHP_SAPI,
array_shift(sybase_fetch_row(sybase_query('select @@version')))
);
sybase_exec('exec tempdb..test');
sybase_exec('exec tempdb..test', NULL);
sybase_exec('exec tempdb..test', 1);
sybase_exec('exec tempdb..test', 'foo');
printf("\n===> Done\n");
?>
------------------------------------------------------------------------
[2003-03-28 14:54:50] cesararnold at yahoo dot com dot br
Hi,
first of all, thanks for your tests...
I'm sorry but I forgot to say that it's happening on IIS 5.0, not on
Apache.
Thanks again.
------------------------------------------------------------------------
[2003-03-25 17:56:29] thekid@php.net
Could not reproduce here:
<?php
$db= sybase_connect('sybase', 'username', '******');
$q= sybase_query('exec csc_getAddressByCId '.$argv[1]);
var_dump($q, sybase_fetch_assoc($q));
?>
### Testing with empty parameter:
thekid@thekid:~ > php sybase_segfault.php ''
PHP Warning: sybase_query()
[http://www.php.net/function.sybase-query]: Sybase: Server message:
Procedure csc_getAddressByCId expects parameter @cid, which was not
supplied.
(severity 16, procedure csc_getAddressByCId) in
/usr/home/thekid/sybase_segfault.php on line 3
Warning: sybase_query() [http://www.php.net/function.sybase-query]:
Sybase: Server message: Procedure csc_getAddressByCId expects
parameter @cid, which was not supplied.
(severity 16, procedure csc_getAddressByCId) in
/usr/home/thekid/sybase_segfault.php on line 3
PHP Warning: sybase_fetch_assoc(): supplied argument is not a valid
Sybase result resource in /usr/home/thekid/sybase_segfault.php on line
4
Warning: sybase_fetch_assoc(): supplied argument is not a valid Sybase
result resource in /usr/home/thekid/sybase_segfault.php on line 4
bool(false)
NULL
### Testing with parameter, but sp returning failure:
thekid@thekid:~ > php sybase_segfault.php 182
resource(5) of type (sybase-ct result)
bool(false)
### Testing with parameter and sp returning data:
thekid@thekid:~ > php sybase_segfault.php 1861822
resource(5) of type (sybase-ct result)
array(1) {
["computed"]=>
string(16) "devnull@thekid.de"
}
Does this only happen within Apache or does this occur on cli scripts,
too?
------------------------------------------------------------------------
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/22403
--
Edit this bug report at http://bugs.php.net/?id=22403&edit=1