ID: 33153
Comment by: eddie at omegaware dot com
Reported By: erudd at netfor dot com
Status: Open
Bug Type: MSSQL related
Operating System: Fedora Core 3 x86_64
PHP Version: 4.3.11
New Comment:
segfault occurs because of a null res_info in the dbproc that is passed
to the dblastrow function in freetds' dblib.
FreeTDS bug report on the issue
http://sourceforge.net/tracker/index.php?func=detail&aid=1209286&group_id=33106&atid=407806
Not sure if this is a freetds issue, or if php-mssql isn't doing
something correct.
Previous Comments:
------------------------------------------------------------------------
[2005-05-26 18:23:22] eddie at omegaware dot com
Backtrace of the crash.
#0 dblastrow (dbproc=0x8c9530) at dblib.c:5909
#1 0x0000002a9a7f54bf in zif_mssql_next_result (ht=9213232,
return_value=0x7bde58,
this_ptr=0x9034a0, return_value_used=9454256)
at
/home/erudd/RPMBUILD/BUILD/php-4.3.11/ext/mssql/php_mssql.c:1865
#2 0x000000000051c405 in execute (op_array=0x8004b8)
at /usr/src/debug/php-4.3.11/Zend/zend_execute.c:1654
#3 0x000000000051891b in execute (op_array=0x7f3128)
at /usr/src/debug/php-4.3.11/Zend/zend_execute.c:1698
#4 0x000000000051891b in execute (op_array=0x7af1b8)
at /usr/src/debug/php-4.3.11/Zend/zend_execute.c:1698
#5 0x000000000050869d in zend_execute_scripts (type=8, retval=0x0,
file_count=3)
at /usr/src/debug/php-4.3.11/Zend/zend.c:926
#6 0x00000000004dc14a in php_execute_script
(primary_file=0x7fbffff550)
at /usr/src/debug/php-4.3.11/main/main.c:1745
#7 0x000000000052384a in main (argc=3, argv=0x7fbffff688)
at /usr/src/debug/php-4.3.11/sapi/cgi/cgi_main.c:1601
------------------------------------------------------------------------
[2005-05-26 18:16:43] erudd at netfor dot com
Description:
------------
Using the mssql extension from PHP 4.3.11 on an x86_64 system. (core
PHP is latest FC3 RPMS, php-mssql is custom compiled RPM using freetds
0.63). Everything works fine except for calling the mssql_next_result
function (via PEAR::DB 1.7.6) apache and the command line client will
segfault. This works fine on a MDK 10.1 32bit system w/ PHP 4.3.8.
I havn't yet tried on a FC3 x86 system
Also the freetds commandline 'tsql" command runs the query without any
issues and returns all the result fields.
Reproduce code:
---------------
require_once("DB.php");
$db =& DB::connect("mssql://user:pass@server/Database");
$sql = <<<EOSQL
DECLARE Search CURSOR LOCAL SCROLL READ_ONLY FOR
SELECT * FROM MyTable
DECLARE @limit INT, @offset INT
SET @limit = 20
SET @offset = 5
OPEN Search
FETCH ABSOLUTE @offset FROM Search
WHILE @@FETCH_STATUS =0 AND @limit > 1
BEGIN
FETCH NEXT FROM Search
SET @limit = @limit -1
END
CLOSE Search
DEALLOCATE Search
EOSQL;
$res =& $db->query($sql);
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
do {
$return[] =& $row;
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
if (is_null($row)) {
if ($res->nextResult()) {
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
}
}
} while ($row);
Expected result:
----------------
Not to segfault and return 20 records from the table starting at record
5
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33153&edit=1