#38161 [Com]: oci_bind_by_name return memory dump

From: Date: Fri, 21 Jul 2006 03:36:56 +0000
Subject: #38161 [Com]: oci_bind_by_name return memory dump
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-99700@lists.php.net to get a copy of this message
 ID:               38161
 Comment by:       cjbj at hotmail dot com
 Reported By:      a dot bodemer at brillux dot de
 Status:           Feedback
 Bug Type:         OCI8 related
 Operating System: Linux x86
 PHP Version:      5.1.4
 New Comment:

Tony you shouldn't need a stack dump for this.  Just try a 
var_dump($returnValue) at the end of the script.  Because no value has
been returned in the variable it is being treated as a 64K string and
printing garbage.

The workaround for users is to make sure that the PL/SQL block always
sets variable values in all possible code paths.  Something like:

$query= "declare   
 n_status NUMBER(2); 
 begin
 :retValue := 0;  -- set default value
  n_status := 1 ;
  IF :n_status = 0 THEN
    :retValue := :n_status;
  END IF;
end;";


Previous Comments:
------------------------------------------------------------------------

[2006-07-20 15:48:02] tony2001@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php
for *NIX and
http://bugs.php.net/bugs-generating-backtrace-win32.php
for Win32

Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.



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

[2006-07-20 15:05:00] a dot bodemer at brillux dot de

The SampleCode produce in php5.2-200607190630 the same result, a memory
dump. 
In all Testcases the script run without a PHP Error message or a
'Segmentation Failure'.

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

[2006-07-20 14:18:03] tony2001@php.net

Please try using this CVS snapshot:

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



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

[2006-07-20 14:16:20] a dot bodemer at brillux dot de

Description:
------------
Hallo,

we use a Linux/Apache/Oracle/PHP on a X86 system. 
We tested the Codesample on PHP 5.1.4 with Oracle 8.1/10.1 and Apache
2.0.46/2.0.58. Every times the same result, a memory dump from the
current apache.



Reproduce code:
---------------
<?php
$query= "declare
  n_status NUMBER(2);
begin
  n_status := -1 ;
  IF :n_status = 0 THEN
    :retValue := :n_status;
  END IF;
end;";

$conn = OCILogon("wws", "wws", "zente");
$stmt = OCIParse($conn, $query);
OCIBindByName($stmt, ":retValue", $returnValue,50);
OCIBindByName($stmt, ":n_status", $n_status,50);
$ret=OCIExecute($stmt);

print "\n<pre><br>OCIExecute() ret=$ret";
print "\n<br> Return Value=".$returnValue;
?>

Expected result:
----------------
The return value must be NULL.

Actual result:
--------------
The result is a memory dump from the current apache.


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


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


Thread (9 messages)

« previous php.bugs (#99700) next »