You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Ask Solem Hoel <as...@startsiden.no> on 2004/01/21 11:40:42 UTC

[QUESTION] B::TerseSize won't run

Hi!

I'm trying to track down a memory leak, but when I try PerlModule 
B::TerseSize(0.05) with Apache::Status, apache gives me an internal 
server error with nothing but:

[Wed Jan 21 11:29:55 2004] [error] Undefined subroutine 
&Apache::Status::handler called.

in the error log. The associated configuration is:

  PerlSetVar StatusOptionsAll On
   PerlSetVar StatusTerse On
   PerlSetVar StatusTerseSize On
   PerlSetVar StatusTerseSizeMainSummary On
   PerlSetVar StatusPeek On
   PerlSetVar StatusLexInfo On
   PerlSetVar StatusDeparse On
   PerlModule B::Deparse
   PerlModule B::Terse
   # ### Server only croaks on this line.
   PerlModule B::TerseSize

Anyone fixed something like this before?

The server is running the apache-perl (1.3.26-1-1.26-0woody2) package 
on Debian GNU/Linux 3.0 Woody.

# perl -V
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
   Platform:
     osname=linux, osvers=2.4.20-7um, archname=i386-linux
     uname='linux (none) 2.4.20-7um #1 smp fri aug 8 18:30:28 edt 2003 
i686 unknown '
     config_args='-Dccflags=-DDEBIAN -Dcccdlflags=-fPIC 
-Darchname=i386-linux -Dprefix=/usr -Dprivlib=/usr/share/perl/5.6.1 
-Darchlib=/usr/lib/perl/5.6.1 -Dvendorprefix=/usr 
-Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 
-Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.6.1 
-Dsitearch=/usr/local/lib/perl/5.6.1 -Dman1dir=/usr/share/man/man1 
-Dman3dir=/usr/share/man/man3 -Dman1ext=1 -Dman3ext=3perl 
-Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Duseshrplib 
-Dlibperl=libperl.so.5.6.1 -Dd_dosuid -des'
     hint=recommended, useposix=true, d_sigaction=define
     usethreads=undef use5005threads=undef useithreads=undef 
usemultiplicity=undef
     useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
     use64bitint=undef use64bitall=undef uselongdouble=undef
   Compiler:
     cc='cc', ccflags ='-DDEBIAN -fno-strict-aliasing 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
     optimize='-O2',
     cppflags='-DDEBIAN -fno-strict-aliasing -I/usr/local/include'
     ccversion='', gccversion='2.95.4 20011002 (Debian prerelease)', 
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, usemymalloc=n, prototype=define
   Linker and Libraries:
     ld='cc', ldflags =' -L/usr/local/lib'
     libpth=/usr/local/lib /lib /usr/lib
     libs=-lgdbm -ldb -ldl -lm -lc -lcrypt
     perllibs=-ldl -lm -lc -lcrypt
     libc=/lib/libc-2.2.5.so, so=so, useshrplib=true, 
libperl=libperl.so.5.6.1
   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 Aug 10 2003 01:06:01
   @INC:
     /usr/local/lib/perl/5.6.1
     /usr/local/share/perl/5.6.1
     /usr/lib/perl5
     /usr/share/perl5
     /usr/lib/perl/5.6.1
     /usr/share/perl/5.6.1
     /usr/local/lib/site_perl/i386-linux
     /usr/local/lib/site_perl
     .



-- 
Ask Solem Hoel [22808579 | 97018582 | 41659774]
ask@startsiden.no http://www.startsiden.no


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [QUESTION] B::TerseSize won't run

Posted by Stas Bekman <st...@stason.org>.
Ask Solem Hoel wrote:
> 
> On Jan 21, 2004, at 9:55 PM, Stas Bekman wrote:
> 
>> Ask Solem Hoel wrote:
>>
>>> Hi!
>>> I'm trying to track down a memory leak, but when I try PerlModule 
>>> B::TerseSize(0.05) with Apache::Status, apache gives me an internal 
>>> server error with nothing but:
[...]
> When I access /perl-status/ on this server i get a 500 Internal Server 
> Error,
> and not much information in the error log but "Undefined subroutine 
> &Apache::Status::handler called". If I remove the PerlModule 
> B::TerseSize line from the apacheconfig, /apache-status/ works fine 
> (unless the parts that uses B::TerseSize ofcourse).

Upgrade to the latest mod_perl 1.29. this problem has been fixed in:

=item 1.28 - July 2, 2003

Apache::Status: Need to load B::Terse/TerseSize if it wasn't loaded
yet in that child before using it.  [Dan Sully <da...@electricrain.com>]

In the future please first upgrade to the latest version or at least review 
the Changes log before reporting bugs. You would have saved yourself a lot of 
time.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [QUESTION] B::TerseSize won't run

Posted by Stas Bekman <st...@stason.org>.
Matt Sergeant wrote:
> On 22 Jan 2004, at 10:02, Ask Solem Hoel wrote:
> 
>> When I access /perl-status/ on this server i get a 500 Internal Server 
>> Error,
>> and not much information in the error log but "Undefined subroutine 
>> &Apache::Status::handler called". If I remove the PerlModule 
>> B::TerseSize line from the apacheconfig, /apache-status/ works fine 
>> (unless the parts that uses B::TerseSize ofcourse).
> 
> 
> B::TerseSize doesn't work on perl 5.8+
> 
> I couldn't figure out how to make it work and eventually gave up.

I didn't delve into it, but it seems to somewhat work for me with 5.8.3. I 
haven't tested earlier ones. e.g. this
http://localhost:8002/status/perl/APR::Date?noh_b_package_size
gives:

Memory Usage for package APR::Date

Totals: 1013 bytes | 3 OPs

parse_http       254 bytes | 1 OPs
parse_rfc        253 bytes | 1 OPs
bootstrap        253 bytes | 1 OPs
*VERSION{SCALAR}  29 bytes

Though if I try to click to get the parsed tree of the XS, it goes wrong. I 
think some parts of the B:: API may have changed. e.g. it seems the 
B::Terse::compile returns some code that B:: no longer has, you can dump it 
with B::Deparse:

sub noh_b_terse {
     my $r = shift;
     require B::Deparse;
     $r->content_type("text/plain");
     return unless has($r, "terse");
     my $deparse = B::Deparse->new("-p", "-sC");
     no strict 'refs';
     my($arg, $name) = (split "/", $r->uri)[-2,-1];
     $r->print("Syntax Tree Dump ($b_terse_exp{$arg}) for $name\n\n");

     # XXX: blead perl dumps things to STDERR, though the same version
     # works fine with 1.27
     $r->print($deparse->coderef2text(B::Terse::compile()));
}

Hopefully someone will want to look at what has changed in the B:: API in the 
recent perls and make the necessary adjustments.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [QUESTION] B::TerseSize won't run

Posted by Matt Sergeant <ma...@sergeant.org>.
On 22 Jan 2004, at 10:02, Ask Solem Hoel wrote:

> When I access /perl-status/ on this server i get a 500 Internal Server 
> Error,
> and not much information in the error log but "Undefined subroutine 
> &Apache::Status::handler called". If I remove the PerlModule 
> B::TerseSize line from the apacheconfig, /apache-status/ works fine 
> (unless the parts that uses B::TerseSize ofcourse).

B::TerseSize doesn't work on perl 5.8+

I couldn't figure out how to make it work and eventually gave up.

Matt.


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [QUESTION] B::TerseSize won't run

Posted by Ask Solem Hoel <as...@startsiden.no>.
On Jan 21, 2004, at 9:55 PM, Stas Bekman wrote:

> Ask Solem Hoel wrote:
>> Hi!
>> I'm trying to track down a memory leak, but when I try PerlModule 
>> B::TerseSize(0.05) with Apache::Status, apache gives me an internal 
>> server error with nothing but:
>> [Wed Jan 21 11:29:55 2004] [error] Undefined subroutine 
>> &Apache::Status::handler called.
>> in the error log. The associated configuration is:
>>  PerlSetVar StatusOptionsAll On
>>   PerlSetVar StatusTerse On
>>   PerlSetVar StatusTerseSize On
>>   PerlSetVar StatusTerseSizeMainSummary On
>>   PerlSetVar StatusPeek On
>>   PerlSetVar StatusLexInfo On
>>   PerlSetVar StatusDeparse On
>>   PerlModule B::Deparse
>>   PerlModule B::Terse
>>   # ### Server only croaks on this line.
>>   PerlModule B::TerseSize
>
> It's not clear from your report when do you get this error. You also 
> don't show your Apache::Status configuration.
>
> What happens if you add:
>
>   PerlModule Apache::Status
>
>

I'm sorry, the Apache::Status configuration looks like this:

  <Location /perl-status>
     SetHandler perl-script
     PerlHandler Apache::Status
     order deny,allow
     deny from all
     allow from zzzzzz
   </Location>

When I access /perl-status/ on this server i get a 500 Internal Server 
Error,
and not much information in the error log but "Undefined subroutine 
&Apache::Status::handler called". If I remove the PerlModule 
B::TerseSize line from the apacheconfig, /apache-status/ works fine 
(unless the parts that uses B::TerseSize ofcourse).

-- 
Ask Solem Hoel [22808579 | 97018582 | 41659774]
ask@startsiden.no http://www.startsiden.no


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [QUESTION] B::TerseSize won't run

Posted by Stas Bekman <st...@stason.org>.
Ask Solem Hoel wrote:
> Hi!
> 
> I'm trying to track down a memory leak, but when I try PerlModule 
> B::TerseSize(0.05) with Apache::Status, apache gives me an internal 
> server error with nothing but:
> 
> [Wed Jan 21 11:29:55 2004] [error] Undefined subroutine 
> &Apache::Status::handler called.
> 
> in the error log. The associated configuration is:
> 
>  PerlSetVar StatusOptionsAll On
>   PerlSetVar StatusTerse On
>   PerlSetVar StatusTerseSize On
>   PerlSetVar StatusTerseSizeMainSummary On
>   PerlSetVar StatusPeek On
>   PerlSetVar StatusLexInfo On
>   PerlSetVar StatusDeparse On
>   PerlModule B::Deparse
>   PerlModule B::Terse
>   # ### Server only croaks on this line.
>   PerlModule B::TerseSize

It's not clear from your report when do you get this error. You also don't 
show your Apache::Status configuration.

What happens if you add:

   PerlModule Apache::Status

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html