ID: 33153 Comment by: freddyz77 at tin dot it Reported By: erudd at netfor dot com Status: Feedback Bug Type: MSSQL related Operating System: Fedora Core 3 x86_64 PHP Version: 4.3.11 New Comment:
dblastrow should not fail, this is certainly a FreeTDS bug. Fixed in CVS, expect a new 0.63.1 release. However I don't understand why PHP calls dblastrow (related to dblib buffering). freddy77 (FreeTDS developer) Previous Comments: ------------------------------------------------------------------------ [2005-05-26 19:37:46] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-05-26 18:49:17] eddie at omegaware dot com 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. ------------------------------------------------------------------------ [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:[EMAIL PROTECTED]/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