Bug #66633 [Fbk->NoF]: Segmentation fault with pdo_odbc / freetds and bind params

From: Date: Sun, 22 Mar 2020 04:22:09 +0000
Subject: Bug #66633 [Fbk->NoF]: Segmentation fault with pdo_odbc / freetds and bind params
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-226215@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66633&edit=1

 ID:               66633
 Updated by:       php-bugs@lists.php.net
 Reported by:      jeanseb@php.net
 Summary:          Segmentation fault with pdo_odbc / freetds and bind
                   params
-Status:           Feedback
+Status:           No Feedback
 Type:             Bug
 Package:          PDO ODBC
 Operating System: CentOS 6.5
 PHP Version:      5.4.24
 Assigned To:      cmb
 Private report:   N

 New Comment:

No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.


Previous Comments:
------------------------------------------------------------------------
[2020-03-13 14:25:16] cmb@php.net

Do you still experience this segfault with any of the actively
supported PHP versions[1]?

[1] <https://www.php.net/supported-versions.php>

------------------------------------------------------------------------
[2014-02-03 16:23:52] jeanseb@php.net

Some step by step debugging : 

Breakpoint 2, fetch_row (cl_statement=0xdac520, row_number=0, offset=0) at SQLExtendedFetch.c:104
104     {
(gdb) n
111         if ( row_number < cl_statement -> rowset_count )
(gdb) n
240             if ( cl_statement -> rowset_complete )
(gdb) n
245             ret = SQLFETCH( cl_statement -> cl_connection,
(gdb) n
248             if ( ret == SQL_NO_DATA )
(gdb) n
245             ret = SQLFETCH( cl_statement -> cl_connection,
(gdb) n
248             if ( ret == SQL_NO_DATA )
(gdb) n
103     SQLRETURN fetch_row( CLHSTMT cl_statement, int row_number, int offset )
(gdb) p cl_statement -> rowset_complete
$1 = 0
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
0x00007fffd6c7ac8e in fetch_row (cl_statement=0xdac520, row_number=0, offset=0) at
SQLExtendedFetch.c:103
103     SQLRETURN fetch_row( CLHSTMT cl_statement, int row_number, int offset 



The code : 

245         ret = SQLFETCH( cl_statement -> cl_connection,
246                         cl_statement -> driver_stmt );
247
248         if ( ret == SQL_NO_DATA )
249         {
250             /*
251              * at the end
252              */
253             cl_statement -> rowset_complete = 1;
254             cl_statement -> rowset_position = CL_AFTER_END;
255         }
256         else
257         {
....
392         return ret;
393     }

------------------------------------------------------------------------
[2014-02-03 12:40:54] jeanseb@php.net

Description:
------------
I need to connect to a Microsoft SQL Server 2005 with PHP 5.4 on CentOS.

A simple query with bind params does seg fault.

I have try with unixOdbc 2.2.14 (unixODBC-2.2.14-12.el6_3.x86_64) et 2.3.0.

$ php --version
PHP 5.4.24 (cli) (built: Jan  9 2014 07:32:12)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

FreeTDS 0.91.

$ $ cat /etc/odbcinst.ini
[FreeTDS]
Description = ODBC for MSSQL
Driver = /usr/lib64/libtdsodbc.so.0
Setup = /usr/lib64/libtdsS.so.2

Test script:
---------------
<?php
$cnx = new
PDO("odbc:DRIVER=FreeTDS;SERVER=*****,49503;DATABASE=****;MARS_Connection=yes;StripParmNames=yes;CallEscape=no",
'***', '***');
$stmt = $cnx->prepare("select ID from AUDIT WHERE ID = ?");
$id = 1;
$stmt->bindParam(1, $id, PDO::PARAM_INT);
var_dump($stmt->execute());
var_dump($stmt->fetchAll(PDO::FETCH_NUM));

Expected result:
----------------
bool(true)
Array
(
    [0] => Array
    (
        [ID] => 1
    )
)


Actual result:
--------------
bool(true)

Program received signal SIGSEGV, Segmentation fault.
0x00007fffd6c7ac8e in fetch_row (cl_statement=0xdac520, row_number=0, offset=0) at
SQLExtendedFetch.c:103
103     SQLRETURN fetch_row( CLHSTMT cl_statement, int row_number, int offset )
Missing separate debuginfos, use: debuginfo-install libaio-0.3.107-10.el6.x86_64
libedit-2.11-4.20080712cvs.1.el6.x86_64 libicu-last-50.1.2-10.el6.remi.x86_64
libidn-1.18-2.el6.x86_64 libtool-ltdl-2.2.6-15.5.el6.x86_64 ncurses-libs-5.7-3.20090208.el6.x86_64
sqlite-3.7.9-1.el6.art.x86_64
(gdb) bt
#0  0x00007fffd6c7ac8e in fetch_row (cl_statement=0xdac520, row_number=0, offset=0) at
SQLExtendedFetch.c:103
#1  0x00007fffd6c7b0bc in fetch_rowset (cl_statement=0xdac520, rows_in_set=1, row_offset=0,
fetched_rows=0x7fffffffa69c, row_status_array=0x0, rows_fetched_ptr=0x0) at SQLExtendedFetch.c:473
#2  0x00007fffd6c7b4d7 in do_fetch_scroll (cl_statement=0xdac520, fetch_orientation=1,
fetch_offset=<value optimized out>, row_status_ptr=0x0, rows_fetched_ptr=<value optimized
out>,
    ext_fetch=<value optimized out>) at SQLExtendedFetch.c:604
#3  0x00007fffe303eb85 in SQLFetchScroll (statement_handle=0xdacc20, fetch_orientation=1,
fetch_offset=0) at SQLFetchScroll.c:273
#4  0x00007fffe27fd080 in odbc_stmt_fetch (stmt=0x7ffff7fd9e48, ori=<value optimized out>,
offset=<value optimized out>) at /usr/src/debug/php-5.4.24/ext/pdo_odbc/odbc_stmt.c:528
#5  0x00007fffe2c13e24 in do_fetch_common (stmt=0x7ffff7fd9e48, ori=PDO_FETCH_ORI_NEXT,
offset=<value optimized out>, do_bind=1) at /usr/src/debug/php-5.4.24/ext/pdo/pdo_stmt.c:700
#6  0x00007fffe2c13f4b in do_fetch (stmt=0x7ffff7fd9e48, return_value=0x7ffff7fda0d0,
how=PDO_FETCH_NUM, ori=<value optimized out>, offset=<value optimized out>,
return_all=0x0, do_bind=1)
    at /usr/src/debug/php-5.4.24/ext/pdo/pdo_stmt.c:867
#7  0x00007fffe2c15600 in zim_PDOStatement_fetchAll (ht=<value optimized out>,
return_value=0x7ffff7fda0a0, return_value_ptr=<value optimized out>, this_ptr=<value
optimized out>,
    return_value_used=<value optimized out>) at
/usr/src/debug/php-5.4.24/ext/pdo/pdo_stmt.c:1540
#8  0x00007fffedaa758f in xdebug_execute_internal (current_execute_data=0x7ffff7fa4060,
return_value_used=1) at /usr/src/debug/php-pecl-xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1547
#9  0x000000000065e3d5 in zend_do_fcall_common_helper_SPEC (execute_data=<value optimized
out>) at /usr/src/debug/php-5.4.24/Zend/zend_vm_execute.h:645
#10 0x000000000064bf58 in execute (op_array=0x7ffff7fd7a40) at
/usr/src/debug/php-5.4.24/Zend/zend_vm_execute.h:410
#11 0x00007fffedaa79e9 in xdebug_execute (op_array=0x7ffff7fd7a40) at
/usr/src/debug/php-pecl-xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1435
#12 0x00000000005e1de0 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at
/usr/src/debug/php-5.4.24/Zend/zend.c:1315
#13 0x0000000000584b18 in php_execute_script (primary_file=0x7fffffffd2f0) at
/usr/src/debug/php-5.4.24/main/main.c:2502
#14 0x000000000068d8d3 in do_cli (argc=2, argv=0x7fffffffe648) at
/usr/src/debug/php-5.4.24/sapi/cli/php_cli.c:989
#15 0x000000000068e098 in main (argc=2, argv=0x7fffffffe648) at
/usr/src/debug/php-5.4.24/sapi/cli/php_cli.c:1365



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



--
Edit this bug report at https://bugs.php.net/bug.php?id=66633&edit=1


Thread (4 messages)

« previous php.bugs (#226215) next »