ID: 32092 User updated by: stanislav dot voroniy at portavita dot nl Reported By: stanislav dot voroniy at portavita dot nl Status: Open Bug Type: Session related Operating System: Linux PHP Version: 4.3.10 New Comment:
The main problem in snapshot is solved. So fix bag in ext/oci8/config.m4 and release 4.3.11 ASAP. Previous Comments: ------------------------------------------------------------------------ [2005-02-25 11:33:53] stanislav dot voroniy at portavita dot nl 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. ------------------------------------------------------------------------ [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