Tags:
create new tag
, view all tags

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

TWiki version: TWikiRelease04x00x00
TWiki plugins: DefaultPlugin, EmptyPlugin, InterwikiPlugin
Server OS:  
Web server:  
Perl version:  
Client OS:  
Web Browser:  
Categories: System logs

-- DickWieland - 28 Mar 2006

Answer

ALERT! 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:

  1. install all required perl modules (see INSTALL.html) especially the 'included' modules (use CPAN or if you use Linux install libperl packages)
  2. remove lib/CPAN from the TWiki installation directory
  3. 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

Edit | Attach | Watch | Print version | History: r10 < r9 < r8 < r7 < r6 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r10 - 2007-02-01 - PeterThoeny
 
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by Perl Hosted by OICcam.com Ideas, requests, problems regarding TWiki? Send feedback. Ask community in the support forum.
Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.