You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "Beau E. Cox" <be...@beaucox.com> on 2004/01/31 04:45:30 UTC
[mp2] Attempt to free unreferenced scalar: ...
-------------8<---------- Start Bug Report ------------8<----------
1. Problem Description:
I am trying to port Mason to mod_perl2 w/libapreq2. It seems I have munged it
up. When 'stressing' the site (downloading a Mason-enabled uri with
wget in a looping shell script), I get lots of
Attempt to free unreferenced scalar: SV 0x405e6e78 at
/usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
Attempt to free unreferenced scalar: SV 0x405e6e78 at
/usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
Attempt to free unreferenced scalar: SV 0x405e6e78 at
/usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
...
Not just in DBI.pm; Lots of others: HTML::Parser, HTML::Mason::Requesr,
etc. The lines in quesion always show:
$somevar = delete $some_hash_passed_as_an_arg{somekey};
Now, the REALLY crazy part: the address shown is ALWAYS
SV 0x405e6e78 - this must be someting other than the scalar's
address, right? The address of the execption routine catching
the problem?
Stressing a non-Mason-enabled uri does NOT fail.
Are there any tools I can use to pinpoint my bug?
2. Used Components and their Configuration:
*** mod_perl version 1.9913
*** using lib/Apache/BuildConfig.pm
*** Makefile.PL options:
MP_APXS => /usr/apache2/sbin/apxs
MP_COMPAT_1X =>
MP_GENERATE_XS => 1
MP_LIBNAME => mod_perl
MP_USE_DSO => 1
MP_USE_STATIC => 1
*** /usr/apache2/sbin/httpd -V
Server version: Apache/2.0.48
Server built: Jan 26 2004 06:20:30
Server's Module Magic Number: 20020903:4
Architecture: 32-bit
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/worker"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D HTTPD_ROOT="/usr/apache2"
-D SUEXEC_BIN="/usr/apache2/bin/suexec"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/httpd/mime.types"
-D SERVER_CONFIG_FILE="/etc/httpd/httpd.conf"
*** /usr/bin/perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 2) configuration:
Platform:
osname=linux, osvers=2.4.24-pre1.lm, archname=i686-linux-thread-multi
uname='linux cathy.beaucox.com 2.4.24-pre1.lm #1 thu dec 11 02:58:17 hst
2003 i686 unknown unknown gnulinux '
config_args='-Dprefix=/usr -d -e -Dusethreads'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
optimize='-O3',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='3.3.2', 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='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.3.2.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.3.2'
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: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT
Built under linux
Compiled at Dec 20 2003 03:01:43
%ENV:
PERL_LWP_USE_HTTP_10="1"
@INC:
/usr/lib/perl5/5.8.2/i686-linux-thread-multi
/usr/lib/perl5/5.8.2
/usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.2
/usr/lib/perl5/site_perl/5.8.1/i686-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.1
/usr/lib/perl5/site_perl
.
*** Packages of interest status:
Apache::Request: 2.02-dev
CGI : 3.04
LWP : 5.69
mod_perl : 1.9913
3. This is the core dump trace: (if you get a core dump):
[CORE TRACE COMES HERE]
This report was generated by t/REPORT on Thu Jan 29 10:32:23 2004 GMT.
-------------8<---------- End Bug Report --------------8<----------
Note: Complete the rest of the details and post this bug report to
dev <at> perl.apache.org. To subscribe to the list send an empty
email to dev-subscribe@perl.apache.org.
Aloha => Beau;
--
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: [mp2] Attempt to free unreferenced scalar: ...
Posted by "Beau E. Cox" <be...@beaucox.com>.
On Friday 30 January 2004 07:03 pm, Stas Bekman wrote:
> Beau E. Cox wrote:
> > -------------8<---------- Start Bug Report ------------8<----------
> > 1. Problem Description:
> >
> > I am trying to port Mason to mod_perl2 w/libapreq2. It seems I have
> > munged it up. When 'stressing' the site (downloading a Mason-enabled uri
> > with wget in a looping shell script), I get lots of
> >
> > Attempt to free unreferenced scalar: SV 0x405e6e78 at
> > /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
> > Attempt to free unreferenced scalar: SV 0x405e6e78 at
> > /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
> > Attempt to free unreferenced scalar: SV 0x405e6e78 at
> > /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
> > ...
[snipped]
> I bet you won't see any of these under prefork. It's most likely the issue
> of perl_clone(), when a cloned variable is attempted to be destroyed more
> than once or may be it's the the interpreter scoping bug that yours truly
> has introduced in perl 5.8.2 (later removed in 5.8.3) trying to fix some
> other hairy problem. So first try upgrading to DBI (which is now should
> work just fine with 5.8.2). Or even better upgrade to 5.8.3.
[snipped]
OK!
Moved to perl 5.8.3, recompiled ALL my site-perl CPAN modules,
and rebuild mod_perl. The problem went away!
Many thanks.
Aloha => Beau;
--
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: [mp2] Attempt to free unreferenced scalar: ...
Posted by Stas Bekman <st...@stason.org>.
Beau E. Cox wrote:
> -------------8<---------- Start Bug Report ------------8<----------
> 1. Problem Description:
>
> I am trying to port Mason to mod_perl2 w/libapreq2. It seems I have munged it
> up. When 'stressing' the site (downloading a Mason-enabled uri with
> wget in a looping shell script), I get lots of
>
> Attempt to free unreferenced scalar: SV 0x405e6e78 at
> /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
> Attempt to free unreferenced scalar: SV 0x405e6e78 at
> /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
> Attempt to free unreferenced scalar: SV 0x405e6e78 at
> /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/DBI.pm line 626.
> ...
>
> Not just in DBI.pm; Lots of others: HTML::Parser, HTML::Mason::Requesr,
> etc. The lines in quesion always show:
> $somevar = delete $some_hash_passed_as_an_arg{somekey};
>
> Now, the REALLY crazy part: the address shown is ALWAYS
> SV 0x405e6e78 - this must be someting other than the scalar's
> address, right? The address of the execption routine catching
> the problem?
>
> Stressing a non-Mason-enabled uri does NOT fail.
>
> Are there any tools I can use to pinpoint my bug?
[...]
> -D APACHE_MPM_DIR="server/mpm/worker"
I bet you won't see any of these under prefork. It's most likely the issue of
perl_clone(), when a cloned variable is attempted to be destroyed more than
once or may be it's the the interpreter scoping bug that yours truly has
introduced in perl 5.8.2 (later removed in 5.8.3) trying to fix some other
hairy problem. So first try upgrading to DBI (which is now should work just
fine with 5.8.2). Or even better upgrade to 5.8.3.
You should be able to reproduce it with standalone perl when using perl
threads. see p5p archives for the discussion on this issue.
Please see this thread:
http://marc.theaimsgroup.com/?t=107425078400004&r=1&w=2
I've cc'ed Kurt and Steve (Who had the same problem), may be they have some
news regarding it.
In any case please report back the outcoming. Thanks.
__________________________________________________________________
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