I can confirm that I do see similar kind of errors when running your
test program here on MacOS.  I doubt that LWP is really to blame as
it's a pure Perl module which should not be able to do anything wrong
at the malloc level unless there is a bug in perl (or perhaps the
threads module).  The test case need further reduction in size for it
to be useful in pinpointing the real culprit.

Regards,
Gisle


On Tue, Mar 18, 2008 at 8:26 PM,  <[EMAIL PROTECTED]> wrote:
> Hi,
>
>  Whilst developing a multithreaded PERL application using the
>  SOAP::Lite and threads modules, I encountered memory allocation errors
>  such as the following resulting in PERL aborting:
>
>   *** glibc detected *** corrupted double-linked list:
>  0x0000002a99400098 ***
>   *** glibc detected *** double free or corruption (fasttop):
>  0x0000002af33af880 ***
>   *** glibc detected *** free(): invalid pointer: 0x0000002aa0e494d0
>  ***
>
>  I've been able to reproduce the problem on a number of architectures
>  running different versions of PERL:
>
>   * PERL 5.8.6
>   * PERL 5.8.8
>   * PERL 5.10.0
>   * x86_64 and i686 architectures
>   * Intel P4 with HyperThreading ('dual' core)
>   * Dual Socket, Dual Core AMD Opteron 280 (quad core)
>
>  Most recently my testing has been on PERL 5.8.8, using LWP 5.808 and
>  threads 1.69.
>
>  I've been able to reduce the problem to a simple test case that
>  doesn't use SOAP::Lite but only LWP, so SOAP::Lite is off the hook!
>
>  The resultant 30-line script that causes the failure can be downloaded
>  from http://www.olliecook.net/glibc-perl-threads-LWP.pl
>
>  It results in output such as:
>
>   # ./glibc-perl-threads-LWP.pl
>   Demonstration of glibc error using LWP version 5.808 and PERL 5.8.8
>
>   *** glibc detected *** double free or corruption (fasttop):
>  0x0000002ac1bbda40 ***
>   Aborted
>
>  Is there any further debugging I can do myself in order to determine
>  whether the cause of the problem is in PERL itself or either of the
>  LWP or threads modules?
>
>  Furthermore, if there's any further information I can provide that
>  would help please don't hesitate to ask.
>
>  Thanks,
>
>  Ollie
>
>  --->8--->8--->8 perl -V output --->8--->8--->8
>
>  # perl -V
>  Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
>   Platform:
>     osname=linux, osvers=2.6.9-42.0.3.elsmp, archname=x86_64-linux-
>  thread-multi
>     uname='linux builder6.centos.org 2.6.9-42.0.3.elsmp #1 smp fri oct
>  6 06:28:26 cdt 2006 x86_64 x86_64 x86_64 gnulinux '
>     config_args='-des -Doptimize=-O2 -g -pipe -m64 -Dversion=5.8.8 -
>  Dmyhostname=localhost [EMAIL PROTECTED] -Dcc=gcc -Dcf_by=Red
>  Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Dlibpth=/usr/local/
>  lib64 /lib64 /usr/lib64 -Dprivlib=/usr/lib/perl5/5.8.8 -Dsitelib=/usr/
>  lib/perl5/site_perl/5.8.8 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.8.8
>  -Darchlib=/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi -Dsitearch=/
>  usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi -
>  Dvendorarch=/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-
>  multi -Darchname=x86_64-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -
>  Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -
>  Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -
>  Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -
>  Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -
>  Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -
>  Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -
>  Dinc_version_list=5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 -Dscriptdir=/usr/bin'
>     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=define use64bitall=define uselongdouble=undef
>     usemymalloc=n, bincompat5005=undef
>   Compiler:
>     cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-
>  aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -
>  D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
>     optimize='-O2 -g -pipe -m64',
>     cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -
>  Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
>     ccversion='', gccversion='3.4.6 20060404 (Red Hat 3.4.6-8)',
>  gccosandvers=''
>     intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
>     d_longlong=define, longlongsize=8, d_longdbl=define,
>  longdblsize=16
>     ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
>  lseeksize=8
>     alignbytes=8, prototype=define
>   Linker and Libraries:
>     ld='gcc', ldflags =''
>     libpth=/usr/local/lib64 /lib64 /usr/lib64
>     libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -
>  lc
>     perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
>     libc=, so=so, useshrplib=true, libperl=libperl.so
>     gnulibc_version='2.3.4'
>   Dynamic Linking:
>     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -
>  Wl,-rpath,/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE'
>     cccdlflags='-fPIC', lddlflags='-shared'
>
>
>  Characteristics of this binary (from libperl):
>   Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
>                         PERL_MALLOC_WRAP USE_64_BIT_ALL USE_64_BIT_INT
>                         USE_ITHREADS USE_LARGE_FILES USE_PERLIO
>                         USE_REENTRANT_API
>   Built under linux
>   Compiled at Nov  5 2007 14:18:42
>   @INC:
>     /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi
>     /usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi
>     /usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi
>     /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi
>     /usr/lib64/perl5/site_perl/5.8.4/x86_64-linux-thread-multi
>     /usr/lib64/perl5/site_perl/5.8.3/x86_64-linux-thread-multi
>     /usr/lib/perl5/site_perl/5.8.8
>     /usr/lib/perl5/site_perl/5.8.5
>     /usr/lib/perl5/site_perl/5.8.4
>     /usr/lib/perl5/site_perl/5.8.3
>     /usr/lib/perl5/site_perl
>     /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi
>     /usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi
>     /usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi
>     /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi
>     /usr/lib64/perl5/vendor_perl/5.8.4/x86_64-linux-thread-multi
>     /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi
>     /usr/lib/perl5/vendor_perl/5.8.8
>     /usr/lib/perl5/vendor_perl/5.8.5
>     /usr/lib/perl5/vendor_perl/5.8.4
>     /usr/lib/perl5/vendor_perl/5.8.3
>     /usr/lib/perl5/vendor_perl
>     /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi
>     /usr/lib/perl5/5.8.8
>     .
>  # uname -a
>  Linux xyz 2.6.9-67.0.7.ELsmp #1 SMP Sat Mar 15 06:33:45 EDT 2008
>  x86_64 x86_64 x86_64 GNU/Linux
>
>



-- 
Gisle Aas

Reply via email to