On Sat, 29 Dec 2007, Tom Donovan wrote:
mod_perl re-defines "perl_free" as "free" in modperl_perl_includes.h:69.This causes an attempt to use the native Windows free() function to release memorywhich should be released by the perl_free() function located in PerlXXX.dll. The specific call is in modperl_perl.c:186, function modperl_perl_destruct() which gets called during the Apache/APR config pool cleanup. The symptoms are:When Apache 2.2 with mod_perl is run in a debugger, the following exception is reportedduring pool cleanup: "Invalid Address specified to RtlFreeHeap" Some indirect symptoms also observed are:Apache graceful restarts do not always work on Windows when mod_perl is loaded.Apache shutdown takes longer on Windows when mod_perl is loaded. The symptoms are the same whether Apache, mod_perl, and Perl are built with Visual C++ 6.0 or Visual C++ 2005 (in any combination).Note that Apache 2.2.6 or Apache from the SVN 2.2.x branch cannot run mod_perlwithout an additional patch for file descriptors.see Apache bug 43534 - http://issues.apache.org/bugzilla/show_bug.cgi?id=43534If you wish to track down the preprocessor definitions, it may be helpful to know:USE_LARGE_FILES is defined in C:\perl\lib\CORE\config.h:4418malloc is defined in C:\perl\lib\CORE\win32iop.h:291 as win32_malloc free is defined in C:\perl\lib\CORE\win32iop.h:294 as win32_freeThe following mod_perl patch corrects the problem on Windows (Win2k sp4) for mod_perl (trunk or v2.0.3) with Apache (SVN 2.2.x branch or 2.2.6) built with Visual C++ (v6.0 or v2005). Regards, -tom-
Hi Tom,
Thanks for the detailed report, and patch. I tried out
the patch with perl-5.8.8, compiled against Apache/2.2.4,
and all the tests passed. However, the restart problem
still remains; evidently,
http://issues.apache.org/bugzilla/show_bug.cgi?id=43534
or something equivalent must still be applied. I'm
heistant though to apply this to fix a problem in
the svn httpd sources, which are subject to change;
also, I'd like to understand better the reasons behind the
original definitions of perl_malloc and perl_free in
modperl_perl_includes.h (I seem to recall this was
needed for older versions of Perl, but it may now
be unnecessary). Thus, unless others think otherwise,
I think it'd be better to wait for an http release
candidate that demonstrates the problem.
--
best regards,
Randy Kobes
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.