You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Adam Prime x443 <ap...@brunico.com> on 2006/03/13 17:00:15 UTC

[mp1] intermittant pnotes error

I have this problem where we get a series of errors like this:

[Sun Mar 12 16:29:23 2006] [error] Can't locate object method "pnotes" via package "StrategyV2::Careers" at /usr/lib/perl5/site_perl/5.8.5/i686-linux/Apache/Request.pm line 36.\n

but where the package changes depending on what page was being hit.  It would appear that what's happening is that somehow, something other than an a request object is getting passed into my handler sub.  The code that causes this error (in this example anyway, it has happened on practically every package) is this:

sub handler{
    my $r = shift;
    my $req = Apache::Request->instance($r);
    .....
}

When these start happening, they are fixed by a restart.  If they happen when there isn't someone around to do that they persists for a while, then stop.  I'm pretty much at a loss as to how to fix it, or even how to try to figure out what's going on.  I've never had the problem actually occur on our development box, only in production, and i haven't been able to find any event that precipitates them.

Does anyone have any ideas as to what i can do, or what i can look at to try to fix this?  It only happens about twice a week or so, but when it does we can get about 50 500's because of it.

Adam

Apache/1.3.33 (Unix) mod_perl/1.29

mp built with: perl Makefile.PL DO_HTTPD=1 USE_APACI=1 APACHE_PREFIX=/www EVERYTHING=1

perl -V
Summary of my perl5 (revision 5 version 8 subversion 5) configuration:
  Platform:
    osname=linux, osvers=2.4.28-gentoo-r8, archname=i686-linux
    uname='linux jeff2 2.4.28-gentoo-r8 #1 smp thu mar 17 14:50:11 est 2005 i686 pentium iii (coppermine) genuineintel gnulinux '
    config_args='-des -Darchname=i686-linux -Dcccdlflags=-fPIC -Dccdlflags=-rdynamic -Dcc=gcc -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr -Dlocincpth=  -Doptimize=-O2 -march=i686 -fomit-frame-pointer -Duselargefiles -Dd_semctl_semun -Dscriptdir=/usr/bin -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dinstallman1dir=/usr/share/man/man1 -Dinstallman3dir=/var/tmp/portage/perl-5.8.5-r5/image//usr/share/man/man3 -Dman1ext=1 -Dman3ext=3pm -Dinc_version_list=5.8.0 5.8.0/i686-linux 5.8.2 5.8.2/i686-linux 5.8.4 5.8.4/i686-linux  -Dcf_by=Gentoo -Ud_csh -Di_ndbm -Di_gdbm -Di_db'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -march=i686 -fomit-frame-pointer',
    cppflags='-DPERL5 -fno-strict-aliasing -pipe'
    ccversion='', gccversion='3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lpthread -lnsl -lndbm -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
    perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
    libc=/lib/libc-2.3.4.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version='2.3.4'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: USE_LARGE_FILES
  Built under linux
  Compiled at Mar 18 2005 12:50:52
  @INC:
    /etc/perl
    /usr/lib/perl5/site_perl/5.8.5/i686-linux
    /usr/lib/perl5/site_perl/5.8.5
    /usr/lib/perl5/site_perl/5.8.4
    /usr/lib/perl5/site_perl/5.8.4/i686-linux
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.5/i686-linux
    /usr/lib/perl5/vendor_perl/5.8.5
    /usr/lib/perl5/vendor_perl/5.8.4
    /usr/lib/perl5/vendor_perl/5.8.4/i686-linux
    /usr/lib/perl5/vendor_perl
    /usr/lib/perl5/5.8.5/i686-linux
    /usr/lib/perl5/5.8.5
    /usr/local/lib/site_perl
    /usr/lib/perl5/site_perl/5.8.4
    /usr/lib/perl5/site_perl/5.8.4/i686-linux
    .

Re: [mp1] intermittant pnotes error

Posted by Perrin Harkins <pe...@elem.com>.
On Mon, 2006-03-13 at 11:00 -0500, Adam Prime x443 wrote:
> The code that causes this error (in this example anyway, it has
> happened on practically every package) is this:
> 
> sub handler{
>     my $r = shift;
>     my $req = Apache::Request->instance($r);
>     .....
> }

Why don't you put some warnings in to log when $r is not an Apache
object?  Also, how do you call this handler?  Is it set up to be called
as a method sometimes?  Do you ever prototype it wit ($$)?  Show the
part of your conf where you set it up.

- Perrin


Re: [mp1] intermittant pnotes error

Posted by Ben Kim <be...@gmail.com>.
I have an odd problem and would like to have advice. I posted it to *
alt.apache.configuration<http://groups.google.com/group/alt.apache.configuration>
* but only got an advice to submit it as a bug. I'd appreciate any help.

================================
My Apache is Apache/2.0.55 (Unix) Embperl/2.1.0 mod_perl/2.0.2
Perl/v5.8.7 on Solaris.
Somehow, the errordocument shows up only once per child. I use prefork,
so, if I have 8 children at the time, after each of the 8 children
showed the error page once (on round-robin), I get raw, hard-coded
error messages from apache core. That is, until the children are
recycled. Once the children are recycled, the error page shows again,
once per the new instance of the child.

Where could this problem come from? Would it be Apache? Or mod_perl?
Or, what would be the things to check?

Thanks.
 Ben K.