Hi All,
I have looked high and low to work out how to avoid the 'Constant subroutine redefined' warnings in the error log, followed by the 'Prototype missmatch:' error upon subsequent hits to the apache child process - but, I have not been able to find an easy solution. The warnings are caused by the 'flush_namespace' routine of Apache::PerlRun which attempts to reset/nullify everything - including constants. When a constant is redefined it causes a warning in the error_log, and when the constant gets reset upon the next run of the script the prototype doesnt match as its reset incorrectly.
David, take a look at the ModPerl::PerlRun which now http://cvs.apache.org/viewcvs.cgi/modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm?r1=1.50&r2=1.51&diff_format=h
uses:
http://perl.apache.org/docs/2.0/api/ModPerl/Util.html#C_unload_package_
which Philippe has just added recently. (you will need the current mp2 cvs to see it at works). It solves all these problems in a much cleaner way. It's still too new to new to be sure that it doesn't have side-effects, but once it's proved to be good by users, we can just port it back to mp1.
If you want to look at the C code that does that, it's modperl_package_unload in:
http://cvs.apache.org/viewcvs.cgi/modperl-2.0/src/modules/perl/modperl_util.c?view=markup
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
-- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html