|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-07-29 08:25 UTC] jfbustarret at tf1 dot fr
Description:
------------
Using php 5.0.4, with the oci8 extension from CVS & the oci_ping code activated in _oci_open_server, I have random segfaults on my production servers.
Here is the back trace :
#0 0xb78f3779 in _oci_close_session (session=0x8382a20)
at /soft/sources/php/php-5.0.4/ext/oci8/oci8.c:2961
2961 CALL_OCI_RETURN(OCI(error),
(gdb) bt
#0 0xb78f3779 in _oci_close_session (session=0x8382a20)
at /soft/sources/php/php-5.0.4/ext/oci8/oci8.c:2961
#1 0xb79f0d5e in list_entry_destructor (ptr=0x83590f0)
at /soft/sources/php/php-5.0.4/Zend/zend_list.c:173
#2 0xb79eef48 in zend_hash_apply_deleter (ht=0xb7a72560, p=0x836a4c8)
at /soft/sources/php/php-5.0.4/Zend/zend_hash.c:618
#3 0xb79ef227 in zend_hash_graceful_reverse_destroy (ht=0xb7a72560)
at /soft/sources/php/php-5.0.4/Zend/zend_hash.c:684
#4 0xb79e144a in shutdown_executor ()
at /soft/sources/php/php-5.0.4/Zend/zend_execute_API.c:284
#5 0xb79e8c86 in zend_deactivate ()
at /soft/sources/php/php-5.0.4/Zend/zend.c:902
#6 0xb79b544c in php_request_shutdown (dummy=0x0)
[...]
(gdb) print *session
$1 = {num = 137800016, persistent = 0 '\0', is_open = 253 '?',
exclusive = 49 '1', thread = 8 '\b', sessions_list = 0x0, server = 0x0,
pSession = 0x0, pEnv = 0x0, charsetId = 0}
I'll try this patch in _oci_close_session :
if (!session) {
return;
}
+ if (!session->server) {
+ return;
+ }
oci_debug("START _oci_close_session: logging-off sess=%d",session->num);
Reproduce code:
---------------
No reproducing code. The crashes are random & time/traffic dependant.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 10:00:01 2025 UTC |
This new patch should be better : diff -u php-5.0.4-orig/ext/oci8/oci8.c php -5.0.4/ext/oci8/oci8.c --- php-5.0.4-orig/ext/oci8/oci8.c 2005-07-27 20:24:40.000000000 +0 200 +++ php-5.0.4/ext/oci8/oci8.c 2005-08-02 09:33:55.000000000 +0200 @@ -2941,7 +2941,7 @@ oci_debug("START _oci_close_session: logging-off sess=%d",session->num); - if (session->is_open) { + if (session->pEnv && session->is_open) { /* Temporary Service Context */ CALL_OCI_RETURN(OCI(error), OCIHandleAlloc( @@ -3032,12 +3032,13 @@ #ifdef HAVE_OCI_9_2 /* free environment handle (and fix bug #29652 with growing .msb FD numb er under weirdie Solarises) */ - CALL_OCI( - OCIHandleFree( - (dvoid *) session->pEnv, - OCI_HTYPE_ENV - ) - ); + if (session->pEnv) + CALL_OCI( + OCIHandleFree( + (dvoid *) session->pEnv, + OCI_HTYPE_ENV + ) + ); #endif if (session->exclusive) {