ID:               47675
 Comment by:       bryan at stansell dot org
 Reported By:      cs at ecn dot purdue dot edu
 Status:           No Feedback
 Bug Type:         Apache2 related
 Operating System: Solaris 10
 PHP Version:      5.2.9
 New Comment:

I finally got a chance to test a theory.  Looks like the volatile
attribute fixed things for me.

#if HAVE_BROKEN_GETCWD
        volatile int old_cwd_fd = -1;
#else

Once I added that, the setjmp/longjmp worked as expected.  I got the
idea from the manpage on Solaris:

     The values of register and  automatic  variables  are  unde-
     fined.  Register  or automatic variables whose value must be
     relied upon must be declared as volatile.

Perhaps it's a gcc/gas/Solaris/x86 optimization somewhere that
overlooked the case, but this is a workaround.  Of course, undefining
HAVE_BROKEN_GETCWD for Solaris also works, if you have a web tree that
isn't restricted in some way.


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

[2010-01-09 06:59:22] bryan at stansell dot org

I've encountered this problem using OpenSolaris (snv_115), apache
1.3.41 and php-5.2.12 (via mod_php5).  It was also a problem with php
5.2.9.  My apache processes continue to accumulate open files pointing
to the directory which contains the php script.

I am using gcc 4.3.3, gnu as, and solaris ld.  It makes me wonder if
it's a compiler-related thing.

I was also talking to a friend and we checked his httpd processes and
saw the same file descriptor leak.  His setup is Solaris 9 (sparc),
apache 1.3.41, php 4.4.8, and gcc 4.0.2.

I worked around my problem by unsetting HAVE_BROKEN_GETCWD.  I have a
couple other ideas on possibly narrowing down the problem, but I haven't
had a chance to try them.

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

[2009-06-29 01:00:01] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

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

[2009-06-22 00:18:11] d...@php.net

Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php

If you can provide more information, feel free to add it
to this bug and change the status back to "Open".

Thank you for your interest in PHP.


I run OpenSolaris 2009.06 with Apache 2.2.11 and cannot reproduce this

behavior. The old_cwd_fd is closed. ZEND_EXIT calls zend_bailout which

jumps back to the end of the try/catch block in php_execute_script
where 
the descriptor is closed.

Can you be more specific about the behavior you encountered?



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

[2009-03-16 16:25:21] cs at ecn dot purdue dot edu

I am using apache 2.2.11.

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

[2009-03-16 16:21:51] j...@php.net

Apache1 or Apache2 ?

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/47675

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

Reply via email to