#42841 [NoF->Opn]: oci_new_cursor PHP crash
| From: | pr0head at gmail dot com | Date: | Tue, 20 Nov 2007 09:46:48 +0000 |
| Subject: | #42841 [NoF->Opn]: oci_new_cursor PHP crash | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-119871@lists.php.net to get a copy of this message | ||
ID: 42841
User updated by: pr0head at gmail dot com
Reported By: pr0head at gmail dot com
-Status: No Feedback
+Status: Open
Bug Type: OCI8 related
Operating System: Linux version 2.6.20-gentoo-r8
PHP Version: 5.2.4
New Comment:
This script working normally if not reopen cursor.
Bad result:
$sql = "BEGIN sp_vadik_1( :cursor ); END;";
$stmt = oci_parse( $connection, $sql );
$cursor = oci_new_cursor( $connection );
oci_bind_by_name( $stmt, ":cursor", $cursor, -1, OCI_B_CURSOR );
oci_execute( $stmt, OCI_DEFAULT );
oci_execute( $cursor );
oci_free_statement( $stmt );
oci_free_statement( $cursor );
$sql = "BEGIN sp_vadik_1( :cursor ); END;";
$stmt = oci_parse( $connection, $sql );
$cursor = oci_new_cursor( $connection );
oci_bind_by_name( $stmt, ":cursor", $cursor, -1, OCI_B_CURSOR );
oci_execute( $stmt, OCI_DEFAULT );
oci_execute( $cursor );
oci_free_statement( $stmt );
oci_free_statement( $cursor );
Good result:
$sql = "BEGIN sp_vadik_1( :cursor ); END;";
$stmt = oci_parse( $connection, $sql );
$cursor = oci_new_cursor( $connection );
oci_bind_by_name( $stmt, ":cursor", $cursor, -1, OCI_B_CURSOR );
oci_execute( $stmt, OCI_DEFAULT );
oci_execute( $cursor );
oci_free_statement( $stmt );
$sql = "BEGIN sp_vadik_1( :cursor ); END;";
$stmt = oci_parse( $connection, $sql );
oci_bind_by_name( $stmt, ":cursor", $cursor, -1, OCI_B_CURSOR );
oci_execute( $stmt, OCI_DEFAULT );
oci_execute( $cursor );
oci_free_statement( $stmt );
oci_free_statement( $cursor );
Previous Comments:
------------------------------------------------------------------------
[2007-11-20 01:00:00] 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".
------------------------------------------------------------------------
[2007-11-12 10:35: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.
------------------------------------------------------------------------
[2007-10-04 08:38:08] pr0head at gmail dot com
"stop work" - this crash PHP.
If run this script in command line, i see error "segmentation false"
------------------------------------------------------------------------
[2007-10-04 08:27:01] pr0head at gmail dot com
Sorry, need change lines in EXECUTE 2 (for reproduction errors).
SQL and bind param must be the same for both executions:
$sql = "BEGIN sp_vadik_1( :cursor ); END;";
oci_bind_by_name( $stmt, ":cursor", $cursor, -1, OCI_B_CURSOR );
------------------------------------------------------------------------
[2007-10-04 08:14:28] pr0head at gmail dot com
<?php
/**
* ORACLE Storage Procedure
*
* create or replace procedure sp_vadik_1 ( out_1 out sys_refcursor ) is
begin
* open out_1 for select 11 from dual union all select 12 from dual
union all select 13 from dual;
* end sp_vadik_1;
*/
$params_db = array( 'host' => "localhost", 'username' =>
"username",
'password' => "password", 'dbname' => "db" );
putenv( 'ORACLE_SID=' . $params_db['dbname'] );
$conn_string = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=' .
$params_db['host'] . ')(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=' .
$params_db['dbname'] . ')))';
$connection = @oci_connect( $params_db['username'],
$params_db['password'], $conn_string );
//------------ START EXECUTE 1 ---------------//
$sql = "BEGIN sp_vadik_1( :cursor ); END;";
$stmt = oci_parse( $connection, $sql );
$cursor = oci_new_cursor( $connection );
oci_bind_by_name( $stmt, ":cursor", $cursor, -1, OCI_B_CURSOR );
oci_execute( $stmt, OCI_DEFAULT );
oci_execute( $cursor );
while( $row = oci_fetch_array( $cursor, OCI_ASSOC + OCI_RETURN_LOBS )
)
{
$data[] = $row;
}
oci_free_statement( $stmt );
oci_free_statement( $cursor );
//------------ STOP EXECUTE 1 ---------------//
//------------ START EXECUTE 2 ---------------//
$sql = "BEGIN sp_vadik_1( :cursor1 ); END;";
$stmt = oci_parse( $connection, $sql );
$cursor = oci_new_cursor( $connection );
oci_bind_by_name( $stmt, ":cursor1", $cursor, -1, OCI_B_CURSOR );
oci_execute( $stmt, OCI_DEFAULT );
oci_execute( $cursor );
while( $row = oci_fetch_array( $cursor, OCI_ASSOC + OCI_RETURN_LOBS )
)
{
$data[] = $row;
}
oci_free_statement( $stmt );
oci_free_statement( $cursor );
var_dump($cur2);
//------------ STOP EXECUTE 2 ---------------//
oci_close( $connection );
?>
------------------------------------------------------------------------
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
http://bugs.php.net/42841
--
Edit this bug report at http://bugs.php.net/?id=42841&edit=1