Stas Bekman wrote:

> On Tue, 13 Mar 2001, Daniel wrote:
> 
> 
>> 
>> 
>>>> All scripts on
>>>> site start with:
>>>> 
>>>> use vars qw(%input $r);
>>>> $r = Apache->request;
>>>> 
>>>> This has worked fine...no complaints in log files...until I switched the
>>>> handler from Registry to RegistryNG;
>>>> 
>>>> Now I see occasional:
>>>> Variable "$r" will not stay shared at /home/httpd/perl/daily-news.pl
>>>> line 9 (#1)
>>>> in log files.
>>> 
>>> 
>>> http://perl.apache.org/guide/troubleshooting.html#Value_of_x_will_not_stay_shared
>> 
>> Thanks for the reply and the guide (of which I'm pretty familiar) Stas.
>> See comments above and below. $r is global in my scripts.
>> Unless I'm misunderstanding something, the warning shouldn't be
>> occurring. Wasn't under Registry. Also these warnings do not appear on
>> every page request, so I'm wondering if it has something to do with the
>> compile stage of perlrun and/or something that happens during a new
>> apache process creation.
> 
> 
> Sorry, I've jumped too fast with a conclusion at seeing the standard
> "...will not stay shared".

lol...np...you're doing a great job for mod_perl helping newcomers.


> But in order to debug the problem, I have to be
> able to reproduce it. Are you saying that the script below, as it is,
> has this problem? But it's not the whole script, I understand. Can you
> write a small reproducing test?

I tried last nite to put something together to trigger the error 
everytime. All I came up with was reducing maxrequestsperchild to 10
and some scary lwp selfdownloading, $self->lookup($self_uri)->run code.
The code did not produce the exact error but managed to produce:


Can't locate object method "log_error" via package "Apache::RegistryNG" 
at /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/PerlRun.pm line 53.
 
Apache::PerlRun::can_compile('Apache::RegistryNG=HASH(0x876a8dc)') 
called at /usr/lib/perl5/site_perl/5.005/i386-linux/Apache/RegistryNG.pm 
line 33
         Apache::RegistryNG::handler('Apache=SCALAR(0x876af3c)') called 
at /dev/null line 0
         eval {...} called at /dev/null line 0

I can't post the full site code either.

Best I can do is expand the description and other oddities I've noticed 
here on site.

There's about six heavily used RegistryNG scripts onsite.

Each calls a php header via $subr->run which does a virtual() to include 
a RegistryNG banner ad.

Each calls a php footer via $subr->run which does a virtual() to include
about five other RegistryNG banners ads and a virtual() for a RegistryNG 
list of the day's stories.

Oddity: after any $subr->run calls, the next print() may or may not 
work. I have to print "<!--anything-->"; to use print() reliably after a 
$subr->run call.

Oddity: I use $ENV{SCRIPT_NAME} for scripts that call themselves. Once a 
$subr->run has occurred  $ENV{SCRIPT_NAME} $ENV{SCRIPT_FILENAME} are 
changed in the caller to the values of the $subr %ENV (does it not try 
to restore?).

Lemme know if any of this sounds familiar.




 
Error occurs at first $r assignment:

 
>>>> first nine from daily-news.pl:
>>>> #!/usr/bin/perl -w
>>>> use strict;
>>>> use DBI;
>>>> use date_site;
>>>> my $dateformat = date_site::dateformat;
>>>> use Apache::Request;
>>>> 
>>>> use vars qw($dbh %input %output %filebase $r %sites); #vars used on $r
>>>> $r = Apache->request; #<--error first happens here
>>>> 
>>> 


-- 
Daniel Bohling
NewsFactor Network

Reply via email to