ID:               24531
 User updated by:  Manfred dot Metz at rsd dot rohde-schwarz dot com
 Reported By:      Manfred dot Metz at rsd dot rohde-schwarz dot com
 Status:           Open
 Bug Type:         OCI8 related
 Operating System: Solaris 8 (SPARC)
 PHP Version:      4CVS, 5CVS
 New Comment:

I'm still using the php version 4.3.3-RC2-STABLE-200307080530 with this
patch applied together with apache 1.3.27. 

There are no problems with non persistant Oracle connections. 

There are problems with persistant Oracle connections because the reuse
of existing connections does not work properly and so the limit of
parallel database connections to Oracle will be reached after a while.


So we also use non persistant connections. In January 2004 we plan to
move to the latest versions of apache 1.3 and to php-4.3.4 then i will
be able to see what happens.


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

[2003-12-03 01:07:44] editor at tinnes dot com

Could you tell me the status of this issue? Its a showstopper for my
development (See bug #26393)

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

[2003-11-27 01:10:33] [EMAIL PROTECTED]

See bug #26393, there it's said that this patch does not fix the
problem..


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

[2003-07-10 00:16:41] Manfred dot Metz at rsd dot rohde-schwarz dot com

Ok. Here is the unified diff


/usr/local/bin/diff -u php4-STABLE-200307080530/ext/oci8/oci8.c
php-4.3.3RC2-dev/ext/oci8/oci8.c
--- php4-STABLE-200307080530/ext/oci8/oci8.c    2003-05-02
11:05:44.000000000 +0200
+++ php-4.3.3RC2-dev/ext/oci8/oci8.c    2003-07-08 12:57:41.150024000
+0200
@@ -2153,6 +2153,8 @@
        oci_session *session = 0, *psession = 0;
        OCISvcCtx *svchp = 0;
        char *hashed_details;
+       struct timeval tv;
+       int sec, usec;
 #ifdef HAVE_OCI_9_2
        ub2 charsetid = 0;
 #endif
@@ -2167,6 +2169,7 @@
           but only as pesistent requested connections will be kept
between requests!
        */

+       if (! exclusive) {
        hashed_details = (char *)
malloc(strlen(SAFE_STRING(username))+
                                                                       
 strlen(SAFE_STRING(password))+
                                                                       
 strlen(SAFE_STRING(server->dbname))+1);
@@ -2176,7 +2179,6 @@
                        SAFE_STRING(password),
                        SAFE_STRING(server->dbname));

-       if (! exclusive) {
                zend_hash_find(OCI(user), hashed_details,
strlen(hashed_details)+1, (void **) &session);

                if (session) {
@@ -2191,6 +2193,15 @@
                                /* breakthru to open */
                        }
                }
+       } else {
+       gettimeofday((struct timeval *) &tv, (struct timezone *)
NULL);
+       sec = (int) tv.tv_sec;
+       usec = (int) (tv.tv_usec % 1000000);
+       /* The max value usec can have is 0xF423F, so we use only five
+        hex digits for usec and eigth hex digits for sec. */
+       hashed_details = (char *) malloc(8+5+1); /* always enough */
+       sprintf(hashed_details, "%08x%05x", tv.tv_sec, tv.tv_usec);
+
        }

        session = calloc(1,sizeof(oci_session));
@@ -2679,7 +2690,7 @@
                persistent = 0;
        } else {
                /* if our server-context is not persistent we can't */
-               persistent = server->persistent;
+               persistent = server->persistent ? persistent : 0;
        }

        session =
_oci_open_session(server,username,password,persistent,exclusive,charset);

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

[2003-07-08 05:02:26] Manfred dot Metz at rsd dot rohde-schwarz dot com

After switching to persistant OCI connections the error seems to be
gone?!?!?!?!?!

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

[2003-07-08 02:42:07] Manfred dot Metz at rsd dot rohde-schwarz dot com

Description:
------------
When running a PHP Skript with Oracle calls then very often the apache
process dies and produces a SIGSEV error.

My configuration is:

./configure
--with-apache=../apache_1.3.27
--with-xml
--enable-wddx
--with-ldap=/usr/local
--with-openssl=/usr/local/ssl
--with-curl=/usr/local
--with-zlib
--with-oci8=/opt/oracle/ora920
--without-mysql
--with-config-file-path=/etc/apache
--enable-debug
--prefix=/usr/local

The first occurrence of the error has the following backtrace:

Program received signal SIGSEGV, Segmentation fault.
0xfebf0b1c in sltstcu () from /opt/ora920/ora920/lib/libclntsh.so.9.0
(gdb) bt
#0  0xfebf0b1c in sltstcu () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#1  0xfe57aa24 in kpusattr () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#2  0xc03fc in _oci_close_session (session=0x3f3200)
    at /data/src/php4-STABLE-200307080530/ext/oci8/oci8.c:2410
#3  0xbbda8 in _oci_session_list_dtor (rsrc=0x374a58)
    at /data/src/php4-STABLE-200307080530/ext/oci8/oci8.c:935
#4  0x91790 in list_entry_destructor (ptr=0x374a58)
    at /data/src/php4-STABLE-200307080530/Zend/zend_list.c:177
#5  0x8e7ec in zend_hash_apply_deleter (ht=0x28bb4c, p=0x4b3df0)
    at /data/src/php4-STABLE-200307080530/Zend/zend_hash.c:598
#6  0x8eb5c in zend_hash_graceful_reverse_destroy (ht=0x28bb4c)
    at /data/src/php4-STABLE-200307080530/Zend/zend_hash.c:664
#7  0x91984 in zend_destroy_rsrc_list (ht=0x28bb4c)
    at /data/src/php4-STABLE-200307080530/Zend/zend_list.c:233
#8  0x755bc in shutdown_executor ()
    at /data/src/php4-STABLE-200307080530/Zend/zend_execute_API.c:213
#9  0x85878 in zend_deactivate ()
    at /data/src/php4-STABLE-200307080530/Zend/zend.c:666
#10 0x3c3b4 in php_request_shutdown (dummy=0x0)
    at /data/src/php4-STABLE-200307080530/main/main.c:995
#11 0xa552c in apache_php_module_main (r=0x34ab58,
display_source_mode=0)
    at /data/src/php4-STABLE-200307080530/sapi/apache/sapi_apache.c:60
#12 0x30fa8 in send_php ()
---Type <return> to continue, or q <return> to quit---
#13 0x31018 in send_parsed_php ()
#14 0x1ed94c in ap_invoke_handler ()
#15 0x20e2f0 in process_request_internal ()
#16 0x20e37c in ap_process_request ()
#17 0x200630 in child_main ()
#18 0x2009d4 in make_child ()
#19 0x200aec in startup_children ()
#20 0x201514 in standalone_main ()
#21 0x2021ac in main ()



All subsequent occurrences have this backtrace:

Program received signal SIGSEGV, Segmentation fault.
0xfe3428d4 in t_splay () from /usr/lib/libc.so.1
(gdb) bt
#0  0xfe3428d4 in t_splay () from /usr/lib/libc.so.1
#1  0xfe342740 in t_delete () from /usr/lib/libc.so.1
#2  0xfe342344 in realfree () from /usr/lib/libc.so.1
#3  0xfe342b84 in _free_unlocked () from /usr/lib/libc.so.1
#4  0xfe342ad4 in free () from /usr/lib/libc.so.1
#5  0xfe823230 in nlad_destroy_node ()
   from /opt/ora920/ora920/lib/libclntsh.so.9.0
#6  0xfe82320c in nlad_destroy_node ()
   from /opt/ora920/ora920/lib/libclntsh.so.9.0
#7  0xfe822424 in nladtrm () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#8  0xfe71fe50 in nsopen_cleanup ()
   from /opt/ora920/ora920/lib/libclntsh.so.9.0
#9  0xfe71f83c in nsclose () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#10 0xfe702ec4 in nsdisc () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#11 0xfe7a9bc8 in nioqds () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#12 0xfe53abbc in upidhs () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#13 0xfe55dcb0 in kpudtch () from
/opt/ora920/ora920/lib/libclntsh.so.9.0
#14 0xc0bbc in _oci_close_server (server=0x323790)
    at /data/src/php4-STABLE-200307080530/ext/oci8/oci8.c:2595
#15 0xbbd60 in _oci_server_list_dtor (rsrc=0x7bb930)
    at /data/src/php4-STABLE-200307080530/ext/oci8/oci8.c:921
#16 0x91790 in list_entry_destructor (ptr=0x7bb930)
    at /data/src/php4-STABLE-200307080530/Zend/zend_list.c:177
---Type <return> to continue, or q <return> to quit---
#17 0x8e7ec in zend_hash_apply_deleter (ht=0x28bb4c, p=0x49b508)
    at /data/src/php4-STABLE-200307080530/Zend/zend_hash.c:598
#18 0x8eb5c in zend_hash_graceful_reverse_destroy (ht=0x28bb4c)
    at /data/src/php4-STABLE-200307080530/Zend/zend_hash.c:664
#19 0x91984 in zend_destroy_rsrc_list (ht=0x28bb4c)
    at /data/src/php4-STABLE-200307080530/Zend/zend_list.c:233
#20 0x755bc in shutdown_executor ()
    at /data/src/php4-STABLE-200307080530/Zend/zend_execute_API.c:213
#21 0x85878 in zend_deactivate ()
    at /data/src/php4-STABLE-200307080530/Zend/zend.c:666
#22 0x3c3b4 in php_request_shutdown (dummy=0x0)
    at /data/src/php4-STABLE-200307080530/main/main.c:995
#23 0xa552c in apache_php_module_main (r=0x34abb8,
display_source_mode=0)
    at /data/src/php4-STABLE-200307080530/sapi/apache/sapi_apache.c:60
#24 0x30fa8 in send_php ()
#25 0x31018 in send_parsed_php ()
#26 0x1ed94c in ap_invoke_handler ()
#27 0x20e2f0 in process_request_internal ()
#28 0x20e37c in ap_process_request ()
#29 0x200630 in child_main ()
#30 0x2009d4 in make_child ()
#31 0x200f40 in perform_idle_server_maintenance ()
#32 0x20182c in standalone_main ()
---Type <return> to continue, or q <return> to quit---
#33 0x2021ac in main ()






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


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

Reply via email to