Question
This error is appearing in httpd's error_log ... does APR make any sense here? Looking into Error.pm at line 403 we see
throw $err if defined($err);
shouldn't it be looking in package Error? Thanks in advance.
[Tue Mar 28 13:52:33 2006] [error] Can't locate object method "throw" via package "APR::Error" at /var/www/twiki-4.0.1/lib/CPAN/lib///Error.pm line 403.\n at /var/www/twiki-4.0.1/lib/CPAN/lib///Error.pm line 403\n\tError::subs::try('CODE(0xabd9f7c)', 'HASH(0xaba8ff8)') called at /var/www/twiki-4.0.1/lib/TWiki/UI.pm line 146\n\tTWiki::UI::run('CODE(0x9d0d45c)') called at /var/www/twiki/bin/view line 31\n\tModPerl::ROOT::ModPerl::Registry::var_www_twiki_bin_view::handler('Apache2::RequestRec=SCALAR(0x9c33e3c)') called at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/ModPerl/RegistryCooker.pm line 203\n\teval {...} called at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/ModPerl/RegistryCooker.pm line 203\n\tModPerl::RegistryCooker::run('ModPerl::Registry=HASH(0xaa6d598)') called at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/ModPerl/RegistryCooker.pm line 169\n\tModPerl::RegistryCooker::default_handler('ModPerl::Registry=HASH(0xaa6d598)') called at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/ModPerl/Registry.pm line 30\n\tModPerl::Registry::handler('ModPerl::Registry', 'Apache2::RequestRec=SCALAR(0x9c33e3c)') called at -e line 0\n\teval {...} called at -e line 0\n
Environment
--
DickWieland - 28 Mar 2006
Answer
If you answer a question - or someone answered one of your questions - please remember to edit the page and set the status to answered. The status selector is below the edit box.
Hmmm. Curious. It looks like the error is in the
Error
module, and not in TWiki. TWiki has found the Error module OK, but then a call to the function "throw" inside the Error modulle itself is not being resolved, even though Error
defines throw
. It looks as if mod_perl is getting the namespaces mixed up (I have no idea how).
--
CrawfordCurrie - 30 Mar 2006
It is indeed
Error.pm
which is sloppy: If $@ contains
any object reference, then
Error.pm
silently, and sometimes wrongly, assumes that it is a reference to an
Error
object.
The problem can be easily reproduced by a short program:
use Error qw( :try );
try {blubber();};
sub blubber {
try {die (bless {},'Flubber');};
}
This, however, doesn't explain why mod_perl is throwing an APR::Error in the first place.
--
HaraldJoerg - 30 Mar 2006
Has anyone ever found a solution to this problem?
--
MichaelMazza - 09 Jan 2007
There is a solution:
- install all required perl modules (see INSTALL.html) especially the 'included' modules (use CPAN or if you use Linux install libperl packages)
- remove lib/CPAN from the TWiki installation directory
- restart Apache
--
DanielRohde - 24 Jan 2007
See also
HowToInstallCpanModules.
--
PeterThoeny - 24 Jan 2007
The replacement of the 'included' modules produces a new problem: The user gets a ugly error message:
Software error:
Undefined subroutine &TWiki::UI::run called at /twiki/twiki/bin/view line 31.
A page reload works after that.
--
DanielRohde - 01 Feb 2007
Just a guess: Check if absolute path is defined in
bin/LocalLib.cfg
--
PeterThoeny - 01 Feb 2007