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

Reply via email to