Philippe I know your buisy with mod_perl 2 stuff at the moment, but I hope you get a chance to look at this when your free - unless the author of the code is someone else and you just recommended it?
Anyway, Let me know. David On Mon, 2004-10-11 at 12:25, David Radunz wrote: > Further to that - I just tested with an even bigger string and this one > did get cleared fine, so it musnt be the size :( > > Not sure what the problem is, > > DJ > > On Mon, 2004-10-11 at 12:13, David Radunz wrote: > > Hey, > > > > Thanks for your help. I tried using Devel::Unload to see how it works > > and encountered something unexpected. Basically I put the > > 'unload_package_xs' call just above the 'flush_namespace' call. Then I > > printed from within the namespace clearing loop (expecting nothing to be > > printed), yet something did get printed.. > > > > Flushing > > Apache::ROOTsmog_2edev_2enetspace_2enet_2eau::client_2dinfo_2dpr::chargespage_2ecgi::qs > > Flushing > > Apache::ROOTsmog_2edev_2enetspace_2enet_2eau::client_2dinfo_2dpr::paymentspage_2ecgi::qs > > Flushing > > Apache::ROOTsmog_2edev_2enetspace_2enet_2eau::client_2dinfo_2dpr::homeadslclientpage_2ecgi::qs > > > > Which isnt that bad, because the rest of the namespace had been cleared, > > except this lonley scalar - I printed it to see if it contained anything > > and got the following: > > > > Scalar = SELECT DECODE.... (i wont paste the whole scalar here, its > > basically a huge SQL statement, about 2000 characters). > > > > Perhaps the scalar was too big to be cleared? > > > > Cheers, > > > > DJ > > > > > > On Sat, 2004-10-09 at 09:08, Philippe M. Chiasson wrote: > > > Stas Bekman wrote: > > > > > > > David Radunz wrote: > > > > > > > >> 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. > > > > > > It's also available as a yet to be released on CPAN module > > > (Devel::Unload) here: http://svn.ectoplasm.org/projects/perl/Devel-Unload/ > > > > > > You might just try installing Devel::Unload and plugging it into > > > PerlRun.pm and see if it works > > > > > > (untested patch) > > > > > > Index: lib/Apache/PerlRun.pm > > > =================================================================== > > > RCS file: /home/cvs/modperl/lib/Apache/PerlRun.pm,v > > > retrieving revision 1.41 > > > diff -u -I$Id -r1.41 PerlRun.pm > > > --- lib/Apache/PerlRun.pm 8 Mar 2003 04:11:09 -0000 1.41 > > > +++ lib/Apache/PerlRun.pm 8 Oct 2004 23:08:02 -0000 > > > @@ -118,6 +118,8 @@ > > > $_r->clear_rgy_endav; > > > $_r->log_error("Apache::PerlRun->compile") if $Debug && $Debug & 4; > > > Apache->untaint($$eval); > > > + use Devel::Unload; > > > + Devel::Unload::unload_package_xs($pr->namespace); > > > { > > > no strict; #so eval'd code doesn't inherit our bits > > > eval $$eval; > > > > > > > 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 > > > > > > > > > > -- > > David Radunz, > > Developer / Programmer > > > > Netspace Online Systems Pty Ltd > > Ground Floor, 293 Camberwell Road > > Camberwell, Victoria 3124 > > Ph: +613 9811 0087 > > Fx: +613 9811 0044 > > Mo: +614 0549 9719 > > Em: [EMAIL PROTECTED] > > > > This email and any files transmitted with it are confidential and intended solely > > for the > > use of the individual or entity to whom they are addressed. Please notify the > > sender > > immediately by email if you have received this email by mistake and delete this > > email > > from your system. Please note that any views or opinions presented in this email > > are solely > > those of the author and do not necessarily represent those of the organisation. > > Finally, the recipient should check this email and any attachments for the > > presence of > > viruses. The organisation accepts no liability for any damage caused by any virus > > transmitted by this email. > -- > David Radunz, > Developer / Programmer > > Netspace Online Systems Pty Ltd > Ground Floor, 293 Camberwell Road > Camberwell, Victoria 3124 > Ph: +613 9811 0087 > Fx: +613 9811 0044 > Mo: +614 0549 9719 > Em: [EMAIL PROTECTED] -- David Radunz, Developer / Programmer Netspace Online Systems Pty Ltd Ground Floor, 293 Camberwell Road Camberwell, Victoria 3124 Ph: +613 9811 0087 Fx: +613 9811 0044 Mo: +614 0549 9719 Em: [EMAIL PROTECTED] -- 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