php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #43593 Impossible to disable Zend Memory Manager in anything other than CLI SAPI
Submitted: 2007-12-14 07:23 UTC Modified: 2013-10-15 11:54 UTC
Votes:6
Avg. Score:4.2 ± 1.2
Reproduced:4 of 4 (100.0%)
Same Version:1 (25.0%)
Same OS:1 (25.0%)
From: phajdan dot jr at gmail dot com Assigned:
Status: No Feedback Package: Compile Failure
PHP Version: 5.2CVS-2007-12-14 OS: Linux Gentoo 2007.0
Private report: No CVE-ID: None
 [2007-12-14 07:23 UTC] phajdan dot jr at gmail dot com
Description:
------------
Okay, so generally the PHP website and docs tell me to use following methods to disable Zend Memory Manager:

Set env var USE_ZEND_ALLOC=0 (works only for CLI)
Compile PHP with --disable-zend-memory-manager or --enable-malloc-mm (these options do not get recognized; I know the first one has been removed, and the second one added - but why doesn't it work?)

How do I test whether it works or not? phpinfo has a position called "Zend Memory Manager", which can be either enabled or disabled. If I try to disable it and it still says "enabled" I suppose the method doesn't work.

Last but not least, why would I want to disable the memory manager? I get horrible crashes with it, I (and not only I) reported it, the bug got closed as a dupe, but the "original" bug was also closed with no feedback etc. And while I believe in fixing the bug itself, it would be nice to have a workaround.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-12-14 10:38 UTC] phajdan dot jr at gmail dot com
Wait, I can test everything, but which method should I use (to disable Zend Memory Manager)? The crashes occur even in 5.3-latest, so please tell me what should I *exactly* do with this snapshot.
 [2007-12-17 10:00 UTC] sniper@php.net
How about you tell us what the crash is you get? (what bug id was the one you reported?) Also note that some crash bugs were fixed recently.
And there are no -disable-zend-memory-manager or --enable-malloc-mm configure options. To disable the memory manager (for debugging) you start e.g. apache with same way you do with PHP CLI:

# USE_ZEND_ALLOC=0 /usr/sbin/httpd <your options here>

 [2007-12-17 10:59 UTC] phajdan dot jr at gmail dot com
So the bug I referred to was http://bugs.php.net/bug.php?id=43397. Curently it's marked as a duplicate of some other bug, which is now closed because of lack of feedback. I tried to request reopening my original bug, unfortunately without success.

About setting env var - please note that I tried this method. No go. phpinfo shows that Zend Memory Manager is enabled. Note that I didn't set it from command line, but had in environment (something like export USE_ZEND_ALLOC=0; /usr/sbin/httpd ...). But it shouldn't make a difference.
 [2008-01-29 07:06 UTC] phajdan dot jr at gmail dot com
Well, reproduction script is *not*needed* as it's a PHP configuration setting issue. It is visible for example in <? phpinfo(); ?> and I gave exact *steps* to reproduce at the beginning.

Here they are, for convenience:

The goal is to disable the Zend Memory Manager.

Try #1:

1. set USE_ZEND_ALLOC in the environment (/etc/profile)
1a. also tried other ways, like setting it in the Apache config (SetEnv etc)
2. Restart Apache to make sure change takes effect
3. View phpinfo page to see if Zend Memory Manager got disabled
3a. But this way works for the CLI version of PHP (setting env in /etc/profile).

Try #2:
(proven to be futile and ineffective, but anyway)

I tried to recompile PHP with ./configure switches like --disable-zend-memory-manager or --enable-malloc-mm (some webpages told they will disable Zend MM), but as other developers said in this report, there are no such compile options.
 [2008-02-01 22:48 UTC] jani@php.net
How about --disable-malloc-mm ??
 [2008-02-02 09:18 UTC] phajdan dot jr at gmail dot com
After compiling with that option Zend MM is still enabled, according to phpinfo().

Anyway, it must be possible to somehow disable it, because debug build does it. But it would be not a good solution to use debug build in production.

Please, please check it yourself, *seriously* - no guessing, not requiring me to check every opportunity.
 [2011-02-21 20:52 UTC] jani@php.net
-Package: Feature/Change Request +Package: Compile Failure
 [2013-10-01 11:51 UTC] mike@php.net
-Status: Open +Status: Feedback
 [2013-10-01 11:51 UTC] mike@php.net
Works fine here. What SAPI are you using?

/usr/share/nginx/html$ USE_ZEND_ALLOC=0 PHP_FCGI_CHILDREN=0 php-cgi -b 0:9999

$ curl --progress localhost/info.php | grep "Memory Manager" 

<tr><td class="e">Zend Memory Manager </td><td class="v">disabled </td></tr>

It's really just coming from the environment:
http://lxr.php.net/xref/PHP_TRUNK/Zend/zend_alloc.c#2723
 [2013-10-15 11:54 UTC] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
 [2014-08-29 13:42 UTC] justfortier at gmail dot com
I had a similar problem with Apache 2.2 and PHP 5.4.30.deb and Zend Engine 2.4.0.

I found putting:
EXPORT USE_ZEND_ALLOC=0

in my /etc/apache/envvars solved the issue for me. All other methods would get the php command line version to work, but not through apache mod_php.

Hope this helps someone.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 12:01:31 2024 UTC