php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #36724 Fix for #35646 incorrect
Submitted: 2006-03-13 20:54 UTC Modified: 2007-01-15 01:00 UTC
From: mberg at synacor dot com Assigned: tony2001 (profile)
Status: No Feedback Package: Apache related
PHP Version: 5.1.3RC3, 4.4.2 OS: Red Hat Linux 7.2 (ish)
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: mberg at synacor dot com
New email:
PHP Version: OS:

 

 [2006-03-13 20:54 UTC] mberg at synacor dot com
Description:
------------
The fix for bug #35646 results in mod_php_memory_usage always being set to 0.   The proper fix seems to already be implemented in the Apache 1.x handler, so it should just be a matter of rolling back the broken fix and copying the right one into the apache2handler.

<pre>
diff -u2 -r php-4.4.2.orig/Zend/zend_alloc.c php-4.4.2/Zend/zend_alloc.c
--- php-4.4.2.orig/Zend/zend_alloc.c    Sun Jan  1 08:46:49 2006
+++ php-4.4.2/Zend/zend_alloc.c Fri Mar 10 16:59:18 2006
@@ -539,5 +539,4 @@
 #if MEMORY_LIMIT
        AG(memory_exhausted)=0;
-       AG(allocated_memory_peak) = 0;
 #endif


diff -u2 -r php-4.4.2.orig/sapi/apache2handler/sapi_apache2.c php-4.4.2/sapi/apache2handler/sapi_apache2.c
--- php-4.4.2.orig/sapi/apache2handler/sapi_apache2.c   Sun Jan  1 08:47:01 2006
+++ php-4.4.2/sapi/apache2handler/sapi_apache2.c        Mon Mar 13 14:47:52 2006
@@ -588,4 +588,5 @@

                        mem_usage = apr_psprintf(ctx->r->pool, "%u", AG(allocated_memory_peak));
+                       AG(allocated_memory_peak) = 0;
                        apr_table_set(r->notes, "mod_php_memory_usage", mem_usage);
</pre>


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-03-15 15:12 UTC] tony2001@php.net
I can't reproduce it with both prefork and threaded MPM.
 [2006-03-15 16:04 UTC] mberg at synacor dot com
That sounds like you're testing with 2.x.  My installation is 1.x.  Not sure if you have memory_limit set in php.ini, but that's required for this to show up as well.
 [2006-03-15 17:00 UTC] tony2001@php.net
>That sounds like you're testing with 2.x.  
Apparently yes, sapi/apache2handler is for Apache2.

>My installation is 1.x. 
Then your report doesn't make any sense to me.
You've said that it's fixed for Apache 1.x or what did you mean by that?
 [2006-03-15 17:28 UTC] mberg at synacor dot com
I meant that the problem described in #35646 was fixed (or perhaps was never broken?) in Apache 1.x.  If you look at sapi/apache/mod_php4.c, allocated_memory_peak is zeroed after it's retrieved:

  mem_usage = ap_psprintf(r->pool, "%u", 
  AG(allocated_memory_peak));
  AG(allocated_memory_peak) = 0;
  ap_table_setn(r->notes, "mod_php_memory_usage", 
  mem_usage);

The patch I submitted alters the similar code in apache2handler/sapi_apache2.c to zero it out there, instead of Zend/zend_alloc.c, since that's zeroing it before the apache variable is set.
 [2006-03-15 17:33 UTC] tony2001@php.net
I still don't get it. 
Did you test it? Does it work for you?
The current way is to zero twice:
1) it in the beginning of the request, when memory manager starts.
2) in the end of the request, when memory manager goes down.
What makes you think it's wrong if you didn't even test it?
 [2006-03-15 17:47 UTC] mberg at synacor dot com
We're always getting a value of 0 logged for %{mod_php_memory_usage} using stock 4.4.2 with Apache 1.3.34.  It worked as expected with 4.3.11.

Reverting the change introduced in bug #35646 with the following patch fixed it for us:

--- php-4.4.2.orig/Zend/zend_alloc.c    Sun Jan  1 08:46:49 2006
+++ php-4.4.2/Zend/zend_alloc.c Fri Mar 10 16:59:18 2006
@@ -541 +540,0 @@
-       AG(allocated_memory_peak) = 0;

This presumably breaks Apache 2.x though (_that_ I haven't tested), which is where the second part of my suggested fix comes in.  This is just clearing the value in the bit of code in apache2handler that's analagous to where it was cleared in mod_php4.c.
 [2006-03-15 18:15 UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.1-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.1-win32-latest.zip


 [2006-03-16 22:47 UTC] mberg at synacor dot com
Same behaviour.  Same fix.  Tested on CentOS 4.2 as well.  Same behaviour.  Same fix.
 [2006-03-24 21:33 UTC] mberg at synacor dot com
Just to be clear, the configurations I produced this under were:

Red Hat Linux 7.2 + Apache 1.3.34 + PHP 4.4.2
CentOS 4.2 + Apache 1.3.34 + PHP 4.4.2
CentOS 4.2 + Apache 1.3.34 + PHP 5.1 (CVS)

This bug will /not/ be reproducable with Apache 2.x.
 [2006-04-07 20:10 UTC] mberg at synacor dot com
So have you actually tried this with Apache 1.x?  When you mentioned not being able to reproduce it earlier you referenced Apache 2.x.
 [2007-01-07 04:17 UTC] iliaa@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip


 [2007-01-15 01:00 UTC] 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".
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 11:01:30 2024 UTC