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.0 +0100
+++ ext/oci8/config.m4 2005-02-25 11:07:27.0 +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//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_x 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, "x"..., 1976, 0) = 1976
..
14:40:58.667724 ftruncate(29, 0)= 0
14:40:58.667807 pwrite(29, ""..., 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, "x" 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
In /proc//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