ID:               38577
 User updated by:  php at diptyque dot net
 Reported By:      php at diptyque dot net
-Status:           Feedback
+Status:           Open
 Bug Type:         Apache related
 Operating System: FreeBSD 4.4
 PHP Version:      4.4.4
 New Comment:

I'm not trying anything. You told me to download and install 
the latest CVS snapshot. That's what I did but the erratic 
function overloading behavior is still there. Considering no 
drastic changes have been made since v4.4.4 either at the 
Apache SAPI level (mod_php4.c) or in Mbstring (mbstring.c) 
source code, this isn't very surprising.

Regarding Xdebug, this particular extension also overrides 
two core functions -- namely var_dump() and set_time_limit
(). Don't you think it would be interesting to know if the 
function overloading that Xdebug performs is sticky or not 
when running under the Apache 1.3 SAPI?

I have the strong feeling that the original PHP function 
table state is not restored properly by Mbstring but I don't 
have the time nor the resources needed to nail down further 
the origin of the leak -- i.e. the overridden functions 
stickiness or whatever you may call it.


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

[2006-09-07 16:48:46] [EMAIL PROTECTED]

I'm not sure I understand what you're trying to do and to say.

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

[2006-09-07 16:39:49] php at diptyque dot net

FYI, I do *NOT* have any Zend or Xdebug extension 
installed... I have downloaded Xdebug only to compare its 
overriding technique with the one used in Mbstring 
extension.

=begin
[diptyque] % php -m
[PHP Modules]
bz2
ctype
curl
gd
imap
mbstring
mysql
openssl
overload
pcre
posix
readline
session
sqlite
standard
tokenizer
xml
zlib

[Zend Modules]
=end

BTW, I compared source files for apache SAPI 
(./sapi/apache/mod_php4.c) and mbstring extension 
(./ext/mbstring/mbstring.c) between version 4.4.4 and 
latest stable version and did not find anything different 
(!?)

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

[2006-09-07 15:25:39] [EMAIL PROTECTED]

Please remove all zend_extensions, including XDebug and try again.

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

[2006-09-07 15:14:49] php at diptyque dot net

Antony, I'm not very familiar with Zend Engine 1.3 innards 
but I had a look at how Xdebug is overriding both 
var_dump() and set_time_limit() functions in 
PHP_RINIT_FUNCTION(xdebug) and how it does restore the 
original function pointers in 
PHP_RSHUTDOWN_FUNCTION(xdebug). Peeking at mbstring 
extension source code, this looks a bit more verbose and it 
doesn't fiddle directly with 
orig->internal_function.handler (!?) to  restore the 
original function. Instead it calls subsequently 
zend_hash_update() and zend_hash_del() using the info it 
gathered inside its mb_overload_def struct... IMHO, 
mbstring ini settings are properly reset (please see 
http://bugs.php.net/bug.php?id=25753) but not the initial 
PHP function table state.

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

[2006-09-07 09:29:53] php at diptyque dot net

Sorry but it doesn't make it. Mbstring function overloading 
setting is unfortunately persistent once an Apache process 
has served content from a vhost where this ini parameter is 
assigned a value distinct from zero.

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

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/38577

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

Reply via email to