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

 ID:                 40639
 Comment by:         aero2sing at hotmail dot com
 Reported by:        spher...@php.net
 Summary:            DBLIB driver segfaults on repeated prepared select
                     statements
 Status:             No Feedback
 Type:               Bug
 Package:            PDO related
 Operating System:   Mac OS X 10.4.8
 PHP Version:        5CVS-2007-02-26 (CVS)
 Assigned To:        fmk
 Block user comment: N
 Private report:     N

 New Comment:

Thanks for the posting. I have experienced the same issue and was trying to 
find 
the cause for the past three days. I am using PHP 5.3.3.3 on Linux, and my 
program was working totally fine, until recently someone insert a new record 
which made the first execution of a select statement returned empty row. And 
this 
broke the whole part. Now thanks to your posting, I know where the problem was.


Previous Comments:
------------------------------------------------------------------------
[2009-05-03 01:00:03] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

------------------------------------------------------------------------
[2009-04-25 14:43:43] j...@php.net

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/



------------------------------------------------------------------------
[2007-02-27 13:22:56] tony2...@php.net

Frank, could you take a look at it?

------------------------------------------------------------------------
[2007-02-26 14:01:01] spher...@php.net

Also, check out this one, I'm not sure whether this is the 
expected behaviour, but the colno seems to change value:

Breakpoint 1, fetch_value (stmt=0x172a624, dest=0x172a984, 
colno=0, type_override=0x0) at /usr/local/src/PHP_5_2/ext/
pdo/pdo_stmt.c:500
500             char *value = NULL;
(gdb) step    
501             unsigned long value_len = 0;
(gdb) step
502             int caller_frees = 0;
(gdb) step
506             type = PDO_PARAM_TYPE(col->param_type);
(gdb) step
507             new_type =  type_override ? PDO_PARAM_TYPE
(*type_override) : type;
(gdb) step
509             value = NULL;
(gdb) step
510             value_len = 0;
(gdb) step
512             stmt->methods->get_col(stmt, colno, &value, 
&value_len, &caller_frees TSRMLS_CC);
(gdb) print colno
$5 = 0
(gdb) step
pdo_dblib_stmt_get_col (stmt=0x172a624, colno=0, 
ptr=0xbffff05c, len=0xbffff058, caller_frees=0xbffff054) at 
/usr/local/src/PHP_5_2/ext/pdo_dblib/dblib_stmt.c:255
255             pdo_dblib_stmt *S = (pdo_dblib_stmt*)stmt-
>driver_data;
(gdb) finish
Run till exit from #0  pdo_dblib_stmt_get_col 
(stmt=0x172a624, colno=0, ptr=0xbffff05c, len=0xbffff058, 
caller_frees=0xbffff054) at /usr/local/src/PHP_5_2/ext/
pdo_dblib/dblib_stmt.c:255
fetch_value (stmt=0x172a624, dest=0x172a984, colno=24291756, 
type_override=0x0) at /usr/local/src/PHP_5_2/ext/pdo/
pdo_stmt.c:514
514             switch (type) {
Value returned is $6 = 1
(gdb) print colno
$7 = 24291756

------------------------------------------------------------------------
[2007-02-26 13:51:09] spher...@php.net

(gdb) p stmt
$1 = (pdo_stmt_t *) 0x172a624
(gdb) p *stmt
$2 = {
  ce = 0x24a0180, 
  properties = 0x172a6e8, 
  in_get = 0, 
  in_set = 0, 
  methods = 0x557bc0, 
  driver_data = 0x172a768, 
  executed = 1, 
  supports_placeholders = 0, 
  _reserved = 0, 
  column_count = 1, 
  columns = 0x172a95c, 
  database_object_handle = {
    value = {
      lval = 1, 
      dval = 5.5997329951816251e-307, 
      str = {
        val = 0x1 <Address 0x1 out of bounds>, 
        len = 5843616
      }, 
      ht = 0x1, 
      obj = {
        handle = 1, 
        handlers = 0x592aa0
      }
    }, 
    refcount = 2, 
    type = 5 '\005', 
    is_ref = 0 '\0'
  }, 
  dbh = 0x172a3a0, 
  bound_params = 0x172ad34, 
  bound_param_map = 0x0, 
  bound_columns = 0x0, 
  row_count = -1, 
  query_string = 0x172a740 "SELECT 'foo' WHERE '1' 
= :value", 
  query_stringlen = 31, 
  active_query_string = 0x0, 
  active_query_stringlen = 28, 
  error_code = "00000", 
  lazy_object_ref = {
    value = {
      lval = 0, 
      dval = 0, 
      str = {
        val = 0x0, 
        len = 0
      }, 
      ht = 0x0, 
      obj = {
        handle = 0, 
        handlers = 0x0
      }
    }, 
    refcount = 0, 
    type = 0 '\0', 
    is_ref = 0 '\0'
  }, 
  refcount = 1, 
  default_fetch_type = PDO_FETCH_BOTH, 
  fetch = {
    column = 0, 
    cls = {
      ce = 0x0, 
      ctor_args = 0x0, 
      retval_ptr = 0x0, 
      fci = {
        size = 0, 
        function_table = 0x0, 
        function_name = 0x0, 
        symbol_table = 0x0, 
        retval_ptr_ptr = 0x0, 
        param_count = 0, 
        params = 0x0, 
        object_pp = 0x0, 
        no_separation = 0 '\0'
      }, 
      fcc = {
        initialized = 0 '\0', 
        function_handler = 0x0, 
        calling_scope = 0x0, 
        object_pp = 0x0
      }
    }, 
    func = {
      function = 0x0, 
      fetch_args = 0x0, 
      object = 0x0, 
      fci = {
        size = 0, 
        function_table = 0x0, 
        function_name = 0x0, 
        symbol_table = 0x0, 
        retval_ptr_ptr = 0x0, 
        param_count = 0, 
        params = 0x0, 
        object_pp = 0x0, 
        no_separation = 0 '\0'
      }, 
      fcc = {
        initialized = 0 '\0', 
        function_handler = 0x0, 
        calling_scope = 0x0, 
        object_pp = 0x0
      }, 
      values = 0x0
    }, 
    into = 0x0
  }, 
  named_rewrite_template = 0x0
}
(gdb) p i
$3 = 0
(gdb) p stmt->columns[i]
$4 = {
  name = 0x0, 
  namelen = 6648949, 
  maxlen = 25, 
  param_type = 17, 
  precision = 47, 
  dbdo_data = 0x172adf4
}

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


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

    https://bugs.php.net/bug.php?id=40639


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

Reply via email to