ID:               32092
 User updated by:  stanislav dot voroniy at portavita dot nl
 Reported By:      stanislav dot voroniy at portavita dot nl
-Status:           Feedback
+Status:           Open
 Bug Type:         Session related
 Operating System: Linux
 PHP Version:      4.3.10
 New Comment:

First reaction about the snapshot is not related to this bug, bau in
fact another bug. In procedure configure checking for Oracle Instance
Client always overwrites variable ext_shared from previous Oracle Home
installation checking. Very bad!
The following patch solves the problem:
=======================
--- ext/oci8/config.m4.orig     2005-02-25 11:05:41.000000000 +0100
+++ ext/oci8/config.m4  2005-02-25 11:07:27.000000000 +0100
@@ -64,13 +64,17 @@
 [  --with-oci8[=DIR]       Include Oracle (OCI8) support using an
ORACLE_HOME
                           install. The default DIR is ORACLE_HOME])

-PHP_ARG_WITH(oci8-instant-client, for Oracle (OCI8) support using
Oracle Instant Client,
-[  --with-oci8-instant-client[=DIR]
+if test "$PHP_OCI8" = "no"; then
+  PHP_ARG_WITH(oci8-instant-client, for Oracle (OCI8) support using
Oracle Instant Client,
+  [  --with-oci8-instant-client[=DIR]
                           Include Oracle (OCI8) support using
                           Oracle Instant Client. DIR is the directory
with the
                           Instant Client libraries. On Linux it will
default to
                          
/usr/lib/oracle/<most_recent_version>/client/lib
                           Other platforms will need to have it
explicitly specified.])
+else
+  PHP_OCI8_INSTANT_CLIENT="no"
+fi

 if test "$PHP_OCI8" != "no"; then

======================================
Also in make test the following test has failed:
FAIL Bug #31213 (Sideeffects caused by bug #29493)
[ext/standard/tests/array/bug31213.phpt]

If my major problem is solved I'll report later.


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

[2005-02-24 21:23:17] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip



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

[2005-02-24 16:25:44] stanislav dot voroniy at portavita dot nl

Adding to the end of the scripts call to session_write_close() solves
the problem. But as far as I can understand it should be done
automatically always, but some times it does not happens.

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

[2005-02-24 15:58:25] stanislav dot voroniy at portavita dot nl

Description:
------------
In my application running Apache 2.0.46/php 4.3.10 in some scripts
after complte execution file in /tmp/sess_xxxxx stays open. I've done
tracing of apache processes with strace and found the following:

process A do open /tmp/sess_ file, flock it, execute script, close
connection, but does not close /tmp/sess_ file. Any further request
within this session is haging - further processes try to flock
/tmp/sess_ file that stays open in process A and gets infinitive wait
within the flock syscall.

Reproduce code:
---------------
I can't reproduce it in separate script. But the same application under
Apache 1.3/PHP 4.3.4 works fine.

Expected result:
----------------
Sessions hangs.

Actual result:
--------------
Normal run of scripts:
14:40:58.514489 open("/tmp/sess_89b3f6140bce299259e0f810037c2d59",
O_RDWR|O_CREAT, 0600) = 29
14:40:58.514559 flock(29, LOCK_EX)      = 0
14:40:58.514604 fcntl64(29, F_SETFD, FD_CLOEXEC) = 0
14:40:58.514646 fstat64(29, {st_mode=S_IFREG|0600, st_size=1976, ...})
= 0
14:40:58.514728 pread(29, "xxxxx"..., 1976, 0) = 1976
......
14:40:58.667724 ftruncate(29, 0)        = 0
14:40:58.667807 pwrite(29, "xxxx"..., 1371, 0) = 1371
14:40:58.667923 close(29)               = 0

Broken scripts:14:35:15.776816
open("/tmp/sess_89b3f6140bce299259e0f810037c2d59", O_RDWR|O_CREAT,
0600) = 29
14:35:15.776879 flock(29, LOCK_EX)      = 0
14:35:15.776925 fcntl64(29, F_SETFD, FD_CLOEXEC) = 0
14:35:15.776966 fstat64(29, {st_mode=S_IFREG|0600, st_size=1976, ...})
= 0
14:35:15.777041 pread(29, "xxxxx" 1976, 0) = 1976
and no operation any more on file 29...

Next request within the same session:14:35:16.187099
open("/tmp/sess_89b3f6140bce299259e0f810037c2d59", O_RDWR|O_CREAT,
0600) = 29
14:35:16.187167 flock(29, LOCK_EX <unfinished ...>

In /proc/<pid>/fd/ of idle apache process after execution of "broken
scripts" I can see file 29 -> /tmp/sess_... still open.




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


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

Reply via email to