Subject: | [ASP WARN] Can't call method "cleanup_register" on an undefined value |
Date: | Sat, 8 Dec 2012 08:27:21 +0200 |
To: | bug-Apache-ASP [...] rt.cpan.org |
From: | Chatzianagnostou Sotirios <sotcha [...] gmail.com> |
Distribution: Apache-ASP-2.62
Perl : This is perl 5, version 14, subversion 2 (v5.14.2) built for
i486-linux-gnu-thread-multi-64int
OS : Linux dragon 3.4-6.slh.1-aptosid-686 #1 SMP PREEMPT Fri Jul 20
00:47:01 UTC 2012 i686 GNU/Linux
I have apache2, mod_perl2 and apache-asp, all installed from debian
repositories.
An error occurs when trying to use Loader on the apache startup using
something like this on a perl startup, when mod_perl2 is being used.
use Apache::ASP();
Apache::ASP->Loader('/var/www/mobile_deals', ".(asp|asa)\$",
Global => '.',
Debug => 3, # see system output when starting apache
UseStrict => 1,
);
Then I can see on the apache's error file
[ASP WARN] Can't call method "cleanup_register" on an undefined value at
/usr/share/perl5/Apache/ASP.pm line 517.
at /usr/share/perl5/Apache/ASP.pm line 517
Apache::ASP::RegisterCleanup('Apache::ASP=HASH(0xb89a5fb8)',
'CODE(0xb8b15004)') called at /usr/share/perl5/Apache/ASP.pm line 383
Apache::ASP::new('Apache::ASP', 'Apache::ASP::Load=HASH(0xb8b15040)')
called at /usr/share/perl5//Apache/ASP/Load.pm line 129
eval {...} called at /usr/share/perl5//Apache/ASP/Load.pm line 127
Apache::ASP::Load::Run('/var/www/mobile_deals/login.asp', '.(asp|asa)$',
'Global', ., 'Debug', 3, 'UseStrict', 1) called at
/usr/share/perl5//Apache/ASP/Load.pm line 87
Apache::ASP::Load::Run('Apache::ASP', '/var/www/mobile_deals',
'.(asp|asa)$', 'Global', ., 'Debug', 3, 'UseStrict', 1, ...) called at
/usr/share/perl5/Apache/ASP.pm line 1987
Apache::ASP::Loader('Apache::ASP', '/var/www/mobile_deals', '.(asp|asa)$',
'Global', ., 'Debug', 3, 'UseStrict', 1, ...) called at /etc/apache2/perl/
startup.pl line 7
require /etc/apache2/perl/startup.pl called at (eval 2) line 1
eval 'require q/etc/apache2/perl/startup.pl
;' called at /etc/apache2/perl/startup.pl line 0
When using Apache::ASP::Load::Run (called from Apache::ASP::Loader) in
Load.pm:129
creates Apache::ASP passing Apache::ASP::Loader object (not an apache
request object as usual - Apache2::RequestRec in mod_perl2),
so in ASP.pm:382 when calls RegisterCleanup and an error occurs in
ASP.pm:517.
The problem seems to be on RegisterCleanup where an Apache2::RequestRec
object expencted, but there is a Apache::ASP::Loader object.
Apache2::RequestRec has the pool subroutine which returns an APR::Pool
object.
sub RegisterCleanup {
my $self = shift;
if($ModPerl2) {
if(defined($self->{r}->pool)){
$self->{r}->pool->cleanup_register(@_);
}
} else {
$self->{r}->register_cleanup(@_);
}
}
Cheers ,
Sotiris Chatzianagnostou
sotcha@gmail.com