|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #43340 Segmentation fault after executing the same proc twice
Submitted: 2007-11-20 03:16 UTC Modified: 2007-12-11 20:42 UTC
Avg. Score:4.8 ± 0.4
Reproduced:4 of 4 (100.0%)
Same Version:2 (50.0%)
Same OS:2 (50.0%)
From: marplatense at ubuntu dot com Assigned:
Status: Not a bug Package: OCI8 related
PHP Version: 5.2.5 OS: Centos 4 64 bits
Private report: No CVE-ID:
 [2007-11-20 03:16 UTC] marplatense at ubuntu dot com


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2007-11-20 13:44 UTC]
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 for *NIX and 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-11-20 19:11 UTC] marplatense at ubuntu dot com
Hi, thanks for your quick answer.
Here's what I got after following the traceback's instructions.
Hope there's enough information for you to work on this. Let me know if you need anything else.

(gdb) bt
#0  0x0000002a9b609f8b in kpufGetRcvInfo () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#1  0x0000002a9b82b508 in ttcacr () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#2  0x0000002a9b8303f4 in ttcdrv () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#3  0x0000002a9b70b7b8 in nioqwa () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#4  0x0000002a9b53ca5f in upirtrc () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#5  0x0000002a9b4a5fa3 in kpurcsc () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#6  0x0000002a9b4549df in kpuexecv8 () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#7  0x0000002a9b4525c3 in kpuexec () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#8  0x0000002a9b500937 in OCIStmtExecute () from /opt/oracle/orase/oracle/product/10.2.0/db_1/lib/
#9  0x0000002a9a1f8d25 in php_oci_statement_execute (statement=0x2a9cd276f0, mode=0)
    at /opt/downloads/php-5.2.5/ext/oci8/oci8_statement.c:442
#10 0x0000002a9a202f39 in zif_oci_execute (ht=2, return_value=0x2a9cd26e38, return_value_ptr=0x0, this_ptr=0x0, 
    return_value_used=0) at /opt/downloads/php-5.2.5/ext/oci8/oci8_interface.c:1302
#11 0x0000002a9a439abc in zend_do_fcall_common_helper_SPEC (execute_data=0x7fbfffcd40)
    at /opt/downloads/php-5.2.5/Zend/zend_vm_execute.h:200
#12 0x0000002a9a43f769 in ZEND_DO_FCALL_SPEC_CONST_HANDLER (execute_data=0x7fbfffcd40)
    at /opt/downloads/php-5.2.5/Zend/zend_vm_execute.h:1681
#13 0x0000002a9a439554 in execute (op_array=0x2a9cd26558) at /opt/downloads/php-5.2.5/Zend/zend_vm_execute.h:92
#14 0x0000002a9a411690 in zend_execute_scripts (type=8, retval=0x0, file_count=3)
    at /opt/downloads/php-5.2.5/Zend/zend.c:1134
#15 0x0000002a9a3b70af in php_execute_script (primary_file=0x7fbffff280) at /opt/downloads/php-5.2.5/main/main.c:2004
#16 0x0000002a9a48c2d4 in php_handler (r=0x552ae5a618) at /opt/downloads/php-5.2.5/sapi/apache2handler/sapi_apache2.c:631
#17 0x000000552aac79f3 in ap_run_handler () from /usr/sbin/httpd
#18 0x000000552aac7eb1 in ap_invoke_handler () from /usr/sbin/httpd
#19 0x000000552aac4cb8 in ap_process_request () from /usr/sbin/httpd
#20 0x000000552aac0089 in _start () from /usr/sbin/httpd
#21 0x000000552aad1693 in ap_run_process_connection () from /usr/sbin/httpd
#22 0x000000552aac5b20 in ap_graceful_stop_signalled () from /usr/sbin/httpd
#23 0x000000552aac5dbd in ap_graceful_stop_signalled () from /usr/sbin/httpd
#24 0x000000552aac5ea4 in ap_graceful_stop_signalled () from /usr/sbin/httpd
#25 0x000000552aac65db in ap_mpm_run () from /usr/sbin/httpd
#26 0x000000552aacccef in main () from /usr/sbin/httpd
 [2007-12-03 15:05 UTC] christian at elmerot dot se
Reverting the following patch fixed the segfault for us on executing the same page twice. Might be worth trying to see if it fixes your issue too

--- main.c	2007/09/21 14:12:52	1.640.
+++ main.c	2007/09/24 11:53:40	1.640.
@@ -18,7 +18,7 @@
-/* $Id: main.c,v 1.640. 2007/09/21 14:12:52 tony2001 Exp $ */
+/* $Id: main.c,v 1.640. 2007/09/24 11:53:40 dmitry Exp $ */
 /* {{{ includes
@@ -1298,6 +1298,8 @@
 	} zend_catch {
 		retval = FAILURE;
 	} zend_end_try();
+	SG(sapi_started) = 1;
 	return retval;
 [2007-12-03 15:53 UTC] marplatense at ubuntu dot com
Christian, thanks for your input.
I will give it a try and let you guys know the results.

 [2007-12-05 13:42 UTC] michael dot virnstein at brodos dot de
The fix didn't work for me. I also have filed the bug (Bug #43449), because haven't found this one.
The problem doesn't occure when you run a page two times. It occures  when you try to call a PL/SQL-Function which returns a ref cursor more than once in a PHP-script. See bug Bug #43449 for more details.
 [2007-12-05 14:11 UTC] marplatense at ubuntu dot com
Hi Michael, I read your bug and I can confirm this bug does not exist in php 5.2.3 (we're using that version while we wait for a fix).
We too agree that the problem is related to a double execution of a procedure returning a ref cursor (at least that's how we could reproduce it).
I couldn't find time to test Christian's suggestion to see if it works for me but I will try to do it asap.
 [2007-12-11 20:03 UTC]
I reproduced the crash.  The quick fix was to change the PL/SQL package so the cursor is IN OUT instead of just OUT.
 [2007-12-11 20:42 UTC]
Please do not submit the same bug more than once. An existing
bug report already describes this very problem. Even if you feel
that your issue is somewhat different, the resolution is likely
to be the same. 

Thank you for your interest in PHP.

| After looking at the testcases, I'm going to close this bug as
| a duplicate of
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Sat Apr 19 12:01:52 2014 UTC