List Info

Thread: Memory corruption with heavy module loading in threads




Memory corruption with heavy module loading in threads
user name
2007-08-30 08:57:03
This is a bug report for perl from jdheddencpan.org,
generated with the help of perlbug 1.36 running under perl
5.9.5.

There seems to be a memory corruption problem that
manifests
itself when several threads try to load a whole bunch of
modules at the same time.

The attached script readily evokes this bug.  It uses
LWP::Simple and threads to load web pages (the Google home
page).  When run without arguments, it crashes more than
80%
of the time.  The cause revolves around what happens when
LWP::Simple's get() command is executed.

Before the get() call, the following modules are loaded (as
shown via Data:umper on
%INC):

 'Carp.pm' => '/usr/lib/perl5/5.9.5/Carp.pm',
 'Config.pm' => '/usr/lib/perl5/5.9.5/cygwin/Config.pm',
 'Data/Dumper.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Data/Dumper.pm'
 'Exporter.pm' => '/usr/lib/perl5/5.9.5/Exporter.pm',
 'Exporter/Heavy.pm' =>
'/usr/lib/perl5/5.9.5/Exporter/Heavy.pm',
 'HTTP/Status.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Status.pm',
 'LWP/Simple.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Simple.pm',
 'XSLoader.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/XSLoader.pm',
 'bytes.pm' => '/usr/lib/perl5/5.9.5/bytes.pm',
 'overload.pm' => '/usr/lib/perl5/5.9.5/overload.pm',
 'strict.pm' => '/usr/lib/perl5/5.9.5/strict.pm',
 'threads.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/threads.pm',
 'vars.pm' => '/usr/lib/perl5/5.9.5/vars.pm',
 'warnings.pm' => '/usr/lib/perl5/5.9.5/warnings.pm',
 'warnings/register.pm' =>
'/usr/lib/perl5/5.9.5/warnings/register.pm',

After the get() call, %INC contains:

 '/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Raw/Zlib/autospl
it.ix' =>
'/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Raw/Zlib/autospli
t.ix',
 '/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Zlib/autosplit.i
x' =>
'/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Zlib/autosplit.ix
',
 'AutoLoader.pm' =>
'/usr/lib/perl5/5.9.5/AutoLoader.pm',
 'Carp.pm' => '/usr/lib/perl5/5.9.5/Carp.pm',
 'Compress/Raw/Zlib.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Compress/Raw/Zlib.pm',
 'Compress/Zlib.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Compress/Zlib.pm',
 'Config.pm' => '/usr/lib/perl5/5.9.5/cygwin/Config.pm',
 'Data/Dumper.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Data/Dumper.pm',
 'Errno.pm' => '/usr/lib/perl5/5.9.5/cygwin/Errno.pm',
 'Exporter.pm' => '/usr/lib/perl5/5.9.5/Exporter.pm',
 'Exporter/Heavy.pm' =>
'/usr/lib/perl5/5.9.5/Exporter/Heavy.pm',
 'Fcntl.pm' => '/usr/lib/perl5/5.9.5/cygwin/Fcntl.pm',
 'File/Glob.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/File/Glob.pm',
 'File/GlobMapper.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/File/GlobMapper.pm',
 'File/Spec.pm' => '/usr/lib/perl5/5.9.5/File/Spec.pm',
 'File/Spec/Cygwin.pm' =>
'/usr/lib/perl5/5.9.5/File/Spec/Cygwin.pm',
 'File/Spec/Unix.pm' =>
'/usr/lib/perl5/5.9.5/File/Spec/Unix.pm',
 'HTML/Entities.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/HTML/Entities.pm',
 'HTML/HeadParser.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/HTML/HeadParser.pm',
 'HTML/Parser.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/HTML/Parser.pm',
 'HTTP/Date.pm' => '/usr/lib/perl5/5.9.5/HTTP/Date.pm',
 'HTTP/Headers.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Headers.pm',
 'HTTP/Message.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Message.pm',
 'HTTP/Request.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Request.pm',
 'HTTP/Response.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Response.pm',
 'HTTP/Status.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Status.pm',
 'IO.pm' => '/usr/lib/perl5/5.9.5/cygwin/IO.pm',
 'IO/Compress/Adapter/Deflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Adapter/Deflate.pm'
,
 'IO/Compress/Base.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Base.pm',
 'IO/Compress/Base/Common.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Base/Common.pm',
 'IO/Compress/Gzip.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Gzip.pm',
 'IO/Compress/Gzip/Constants.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Gzip/Constants.pm',

 'IO/Compress/RawDeflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/RawDeflate.pm',
 'IO/Compress/Zlib/Extra.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Zlib/Extra.pm',
 'IO/File.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/File.pm',
 'IO/Handle.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Handle.pm',
 'IO/Seekable.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Seekable.pm',
 'IO/Select.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Select.pm',
 'IO/Socket.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Socket.pm',
 'IO/Socket/INET.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Socket/INET.pm',
 'IO/Socket/UNIX.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Socket/UNIX.pm',
 'IO/Uncompress/Adapter/Inflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/Adapter/Inflate.p
m',
 'IO/Uncompress/Base.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/Base.pm',
 'IO/Uncompress/Gunzip.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/Gunzip.pm',
 'IO/Uncompress/RawInflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/RawInflate.pm',
 'LWP.pm' => '/usr/lib/perl5/5.9.5/LWP.pm',
 'LWP/Debug.pm' => '/usr/lib/perl5/5.9.5/LWP/Debug.pm',
 'LWP/MemberMixin.pm' =>
'/usr/lib/perl5/5.9.5/LWP/MemberMixin.pm',
 'LWP/Protocol.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Protocol.pm',
 'LWP/Protocol/http.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Protocol/http.pm',
 'LWP/Simple.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Simple.pm',
 'LWP/UserAgent.pm' =>
'/usr/lib/perl5/5.9.5/LWP/UserAgent.pm',
 'List/Util.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/List/Util.pm',
 'Net/HTTP.pm' => '/usr/lib/perl5/5.9.5/Net/HTTP.pm',
 'Net/HTTP/Methods.pm' =>
'/usr/lib/perl5/5.9.5/Net/HTTP/Methods.pm',
 'Scalar/Util.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Scalar/Util.pm',
 'SelectSaver.pm' =>
'/usr/lib/perl5/5.9.5/SelectSaver.pm',
 'Socket.pm' => '/usr/lib/perl5/5.9.5/cygwin/Socket.pm',
 'Symbol.pm' => '/usr/lib/perl5/5.9.5/Symbol.pm',
 'Time/Local.pm' =>
'/usr/lib/perl5/5.9.5/Time/Local.pm',
 'URI.pm' => '/usr/lib/perl5/5.9.5/URI.pm',
 'URI/Escape.pm' => '/usr/lib/perl5/5.9.5/URI/Escape.pm'
 'URI/_generic.pm' =>
'/usr/lib/perl5/5.9.5/URI/_generic.pm',
 'URI/_query.pm' =>
'/usr/lib/perl5/5.9.5/URI/_query.pm',
 'URI/_server.pm' =>
'/usr/lib/perl5/5.9.5/URI/_server.pm',
 'URI/http.pm' => '/usr/lib/perl5/5.9.5/URI/http.pm',
 'XSLoader.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/XSLoader.pm',
 'bytes.pm' => '/usr/lib/perl5/5.9.5/bytes.pm',
 'constant.pm' => '/usr/lib/perl5/5.9.5/constant.pm',
 'integer.pm' => '/usr/lib/perl5/5.9.5/integer.pm',
 'overload.pm' => '/usr/lib/perl5/5.9.5/overload.pm',
 'strict.pm' => '/usr/lib/perl5/5.9.5/strict.pm',
 'threads.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/threads.pm',
 'utf8.pm' => '/usr/lib/perl5/5.9.5/utf8.pm',
 'vars.pm' => '/usr/lib/perl5/5.9.5/vars.pm',
 'warnings.pm' => '/usr/lib/perl5/5.9.5/warnings.pm',
 'warnings/register.pm' =>
'/usr/lib/perl5/5.9.5/warnings/register.pm',

Yowza!  So when the attached script is run without args,
all
of this module loading is done inside the threads.  With 20
threads doing this at the same time, something gets fouled
up in memory and Perl crashes.

When the script is run with an argument, a get() call is
made in the main thread before any threads are launched. 
As
a consequence, the threads don't have to load anything, and
the script runs without trouble.  (I don't get any failures
in this case.)

As I stated above, the script fails for me more than 80% of
the time under blead (when loading is done in the threads).
When I tried it under 5.8.8, it only failed about 10% of
the
time.  Hopefully, someone can figure out where the
corruption is occurring and can fix it before 5.10.
---
Flags:
    category=core
    severity=high
---
Site configuration information for perl 5.9.5:

Configured by Jerry at Wed Aug 29 14:29:01 EDT 2007.

Summary of my perl5 (revision 5 version 9 subversion 5 patch
31761)
configuration:
  Platform:
    osname=cygwin, osvers=1.5.24(0.15642),
archname=cygwin-thread-multi-64int
    uname='cygwin_nt-5.1 pn100-02-2-054p 1.5.24(0.15642)
2007-01-31
10:57 i686 cygwin '
    config_args='-de -Dusedevel -Dversiononly=no
-Dinstallusrbinperl
-DPERL_OLD_COPY_ON_WRITE -Duse64bitint -Dusethreads
-Uusemymalloc
-Dnoextensions=attrs IPC/SysV Sys/Syslog DB_File NDBM_File
ODBM_File
SDBM_File Devel/DProf Devel/Peek re Text/Soundex
Math/BigInt/FastCalc
Time/Piece -A define:optimize=-O3 -pipe -funit-at-a-time
-mtune=pentium4m -march=pentium4 -mfpmath=sse -mieee-fp
-mmmx -msse
-msse2 -A append:ccflags= -DPERL_TRACK_MEMPOOL
-DNO_MATHOMS'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define,
usesocks=undef
    use64bitint=define, use64bitall=undef,
uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV
-U__STRICT_ANSI__
-DPERL_TRACK_MEMPOOL -DNO_MATHOMS -fno-strict-aliasing
-pipe',
    optimize='-O3 -pipe -funit-at-a-time -mtune=pentium4m
-march=pentium4 -mfpmath=sse -mieee-fp -mmmx -msse -msse2',
    cppflags='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__
-DPERL_TRACK_MEMPOOL -DNO_MATHOMS -fno-strict-aliasing
-pipe'
    ccversion='', gccversion='3.4.4 (cygming special, gdc
0.12, using
dmd 0.125)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8,
byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=12
    ivtype='long long', ivsize=8, nvtype='double',
nvsize=8,
Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='g++', ldflags =' -Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--stack,8388608
-Wl,--enable-auto-image-base -Wl,--enable-auto-import -s
-L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib /lib
    libs=-lgdbm -ldl -lcrypt -lgdbm_compat
    perllibs=-ldl -lcrypt -lgdbm_compat
    libc=/usr/lib/libc.a, so=dll, useshrplib=true,
libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef,
ccdlflags=' -s'
    cccdlflags=' ', lddlflags=' --shared 
-Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--stack,8388608
-Wl,--enable-auto-image-base -Wl,--enable-auto-import -s
-L/usr/local/lib'

Locally applied patches:
    DEVEL

---
INC
for perl 5.9.5:
    /usr/lib/perl5/5.9.5/cygwin
    /usr/lib/perl5/5.9.5
    .

---
Environment for perl 5.9.5:
    CYGWIN=ntsec
    HOME=/home/jhedden
    LANG=C
    LANGUAGE=C
    LC_ALL=C
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
   
PATH=/home/jhedden/bin:/usr/local/src/perl/bin:/usr/local/bi
n:/usr/bin:/bin:/usr/X11R6/bin:/c/Program
Files/WiX:/c/djgpp/bin:/c/Program
Files/apache-ant-1.7.0/bin:/c/Program
Files/nant-0.85/bin:/c/j2sdk1.4.2_14/bin:/c/dev-cpp/bin/:/c/
WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/system32/WBEM:/c/blp/
API/dde:/c/blp/API:/c/oracle/ora92/bin:/c/Program
Files/Oracle/jre/1.3.1/bin:/c/Program
Files/Oracle/jre/1.1.8/bin:/c/Program
Files/Hummingbird/Connectivity/7.10/Accessories/:.
    PERLIO=perlio
    PERL_BADLANG (unset)
    SHELL (unset)

  
Memory corruption with heavy module loading in threads
user name
2007-08-30 08:58:05
# New Ticket Created by  "Jerry D. Hedden" 
# Please include the string:  [perl #45053]
# in the subject line of all future correspondence about
this issue. 
# <URL: h
ttp://rt.perl.org/rt3/Ticket/Display.html?id=45053 >


This is a bug report for perl from jdheddencpan.org,
generated with the help of perlbug 1.36 running under perl
5.9.5.

There seems to be a memory corruption problem that
manifests
itself when several threads try to load a whole bunch of
modules at the same time.

The attached script readily evokes this bug.  It uses
LWP::Simple and threads to load web pages (the Google home
page).  When run without arguments, it crashes more than
80%
of the time.  The cause revolves around what happens when
LWP::Simple's get() command is executed.

Before the get() call, the following modules are loaded (as
shown via Data:umper on
%INC):

 'Carp.pm' => '/usr/lib/perl5/5.9.5/Carp.pm',
 'Config.pm' => '/usr/lib/perl5/5.9.5/cygwin/Config.pm',
 'Data/Dumper.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Data/Dumper.pm'
 'Exporter.pm' => '/usr/lib/perl5/5.9.5/Exporter.pm',
 'Exporter/Heavy.pm' =>
'/usr/lib/perl5/5.9.5/Exporter/Heavy.pm',
 'HTTP/Status.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Status.pm',
 'LWP/Simple.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Simple.pm',
 'XSLoader.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/XSLoader.pm',
 'bytes.pm' => '/usr/lib/perl5/5.9.5/bytes.pm',
 'overload.pm' => '/usr/lib/perl5/5.9.5/overload.pm',
 'strict.pm' => '/usr/lib/perl5/5.9.5/strict.pm',
 'threads.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/threads.pm',
 'vars.pm' => '/usr/lib/perl5/5.9.5/vars.pm',
 'warnings.pm' => '/usr/lib/perl5/5.9.5/warnings.pm',
 'warnings/register.pm' =>
'/usr/lib/perl5/5.9.5/warnings/register.pm',

After the get() call, %INC contains:

 '/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Raw/Zlib/autospl
it.ix' =>
'/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Raw/Zlib/autospli
t.ix',
 '/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Zlib/autosplit.i
x' =>
'/usr/lib/perl5/5.9.5/cygwin/auto/Compress/Zlib/autosplit.ix
',
 'AutoLoader.pm' =>
'/usr/lib/perl5/5.9.5/AutoLoader.pm',
 'Carp.pm' => '/usr/lib/perl5/5.9.5/Carp.pm',
 'Compress/Raw/Zlib.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Compress/Raw/Zlib.pm',
 'Compress/Zlib.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Compress/Zlib.pm',
 'Config.pm' => '/usr/lib/perl5/5.9.5/cygwin/Config.pm',
 'Data/Dumper.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Data/Dumper.pm',
 'Errno.pm' => '/usr/lib/perl5/5.9.5/cygwin/Errno.pm',
 'Exporter.pm' => '/usr/lib/perl5/5.9.5/Exporter.pm',
 'Exporter/Heavy.pm' =>
'/usr/lib/perl5/5.9.5/Exporter/Heavy.pm',
 'Fcntl.pm' => '/usr/lib/perl5/5.9.5/cygwin/Fcntl.pm',
 'File/Glob.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/File/Glob.pm',
 'File/GlobMapper.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/File/GlobMapper.pm',
 'File/Spec.pm' => '/usr/lib/perl5/5.9.5/File/Spec.pm',
 'File/Spec/Cygwin.pm' =>
'/usr/lib/perl5/5.9.5/File/Spec/Cygwin.pm',
 'File/Spec/Unix.pm' =>
'/usr/lib/perl5/5.9.5/File/Spec/Unix.pm',
 'HTML/Entities.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/HTML/Entities.pm',
 'HTML/HeadParser.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/HTML/HeadParser.pm',
 'HTML/Parser.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/HTML/Parser.pm',
 'HTTP/Date.pm' => '/usr/lib/perl5/5.9.5/HTTP/Date.pm',
 'HTTP/Headers.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Headers.pm',
 'HTTP/Message.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Message.pm',
 'HTTP/Request.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Request.pm',
 'HTTP/Response.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Response.pm',
 'HTTP/Status.pm' =>
'/usr/lib/perl5/5.9.5/HTTP/Status.pm',
 'IO.pm' => '/usr/lib/perl5/5.9.5/cygwin/IO.pm',
 'IO/Compress/Adapter/Deflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Adapter/Deflate.pm'
,
 'IO/Compress/Base.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Base.pm',
 'IO/Compress/Base/Common.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Base/Common.pm',
 'IO/Compress/Gzip.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Gzip.pm',
 'IO/Compress/Gzip/Constants.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Gzip/Constants.pm',

 'IO/Compress/RawDeflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/RawDeflate.pm',
 'IO/Compress/Zlib/Extra.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Compress/Zlib/Extra.pm',
 'IO/File.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/File.pm',
 'IO/Handle.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Handle.pm',
 'IO/Seekable.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Seekable.pm',
 'IO/Select.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Select.pm',
 'IO/Socket.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Socket.pm',
 'IO/Socket/INET.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Socket/INET.pm',
 'IO/Socket/UNIX.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Socket/UNIX.pm',
 'IO/Uncompress/Adapter/Inflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/Adapter/Inflate.p
m',
 'IO/Uncompress/Base.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/Base.pm',
 'IO/Uncompress/Gunzip.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/Gunzip.pm',
 'IO/Uncompress/RawInflate.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/IO/Uncompress/RawInflate.pm',
 'LWP.pm' => '/usr/lib/perl5/5.9.5/LWP.pm',
 'LWP/Debug.pm' => '/usr/lib/perl5/5.9.5/LWP/Debug.pm',
 'LWP/MemberMixin.pm' =>
'/usr/lib/perl5/5.9.5/LWP/MemberMixin.pm',
 'LWP/Protocol.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Protocol.pm',
 'LWP/Protocol/http.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Protocol/http.pm',
 'LWP/Simple.pm' =>
'/usr/lib/perl5/5.9.5/LWP/Simple.pm',
 'LWP/UserAgent.pm' =>
'/usr/lib/perl5/5.9.5/LWP/UserAgent.pm',
 'List/Util.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/List/Util.pm',
 'Net/HTTP.pm' => '/usr/lib/perl5/5.9.5/Net/HTTP.pm',
 'Net/HTTP/Methods.pm' =>
'/usr/lib/perl5/5.9.5/Net/HTTP/Methods.pm',
 'Scalar/Util.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/Scalar/Util.pm',
 'SelectSaver.pm' =>
'/usr/lib/perl5/5.9.5/SelectSaver.pm',
 'Socket.pm' => '/usr/lib/perl5/5.9.5/cygwin/Socket.pm',
 'Symbol.pm' => '/usr/lib/perl5/5.9.5/Symbol.pm',
 'Time/Local.pm' =>
'/usr/lib/perl5/5.9.5/Time/Local.pm',
 'URI.pm' => '/usr/lib/perl5/5.9.5/URI.pm',
 'URI/Escape.pm' => '/usr/lib/perl5/5.9.5/URI/Escape.pm'
 'URI/_generic.pm' =>
'/usr/lib/perl5/5.9.5/URI/_generic.pm',
 'URI/_query.pm' =>
'/usr/lib/perl5/5.9.5/URI/_query.pm',
 'URI/_server.pm' =>
'/usr/lib/perl5/5.9.5/URI/_server.pm',
 'URI/http.pm' => '/usr/lib/perl5/5.9.5/URI/http.pm',
 'XSLoader.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/XSLoader.pm',
 'bytes.pm' => '/usr/lib/perl5/5.9.5/bytes.pm',
 'constant.pm' => '/usr/lib/perl5/5.9.5/constant.pm',
 'integer.pm' => '/usr/lib/perl5/5.9.5/integer.pm',
 'overload.pm' => '/usr/lib/perl5/5.9.5/overload.pm',
 'strict.pm' => '/usr/lib/perl5/5.9.5/strict.pm',
 'threads.pm' =>
'/usr/lib/perl5/5.9.5/cygwin/threads.pm',
 'utf8.pm' => '/usr/lib/perl5/5.9.5/utf8.pm',
 'vars.pm' => '/usr/lib/perl5/5.9.5/vars.pm',
 'warnings.pm' => '/usr/lib/perl5/5.9.5/warnings.pm',
 'warnings/register.pm' =>
'/usr/lib/perl5/5.9.5/warnings/register.pm',

Yowza!  So when the attached script is run without args,
all
of this module loading is done inside the threads.  With 20
threads doing this at the same time, something gets fouled
up in memory and Perl crashes.

When the script is run with an argument, a get() call is
made in the main thread before any threads are launched. 
As
a consequence, the threads don't have to load anything, and
the script runs without trouble.  (I don't get any failures
in this case.)

As I stated above, the script fails for me more than 80% of
the time under blead (when loading is done in the threads).
When I tried it under 5.8.8, it only failed about 10% of
the
time.  Hopefully, someone can figure out where the
corruption is occurring and can fix it before 5.10.
---
Flags:
    category=core
    severity=high
---
Site configuration information for perl 5.9.5:

Configured by Jerry at Wed Aug 29 14:29:01 EDT 2007.

Summary of my perl5 (revision 5 version 9 subversion 5 patch
31761)
configuration:
  Platform:
    osname=cygwin, osvers=1.5.24(0.15642),
archname=cygwin-thread-multi-64int
    uname='cygwin_nt-5.1 pn100-02-2-054p 1.5.24(0.15642)
2007-01-31
10:57 i686 cygwin '
    config_args='-de -Dusedevel -Dversiononly=no
-Dinstallusrbinperl
-DPERL_OLD_COPY_ON_WRITE -Duse64bitint -Dusethreads
-Uusemymalloc
-Dnoextensions=attrs IPC/SysV Sys/Syslog DB_File NDBM_File
ODBM_File
SDBM_File Devel/DProf Devel/Peek re Text/Soundex
Math/BigInt/FastCalc
Time/Piece -A define:optimize=-O3 -pipe -funit-at-a-time
-mtune=pentium4m -march=pentium4 -mfpmath=sse -mieee-fp
-mmmx -msse
-msse2 -A append:ccflags= -DPERL_TRACK_MEMPOOL
-DNO_MATHOMS'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define,
usesocks=undef
    use64bitint=define, use64bitall=undef,
uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV
-U__STRICT_ANSI__
-DPERL_TRACK_MEMPOOL -DNO_MATHOMS -fno-strict-aliasing
-pipe',
    optimize='-O3 -pipe -funit-at-a-time -mtune=pentium4m
-march=pentium4 -mfpmath=sse -mieee-fp -mmmx -msse -msse2',
    cppflags='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__
-DPERL_TRACK_MEMPOOL -DNO_MATHOMS -fno-strict-aliasing
-pipe'
    ccversion='', gccversion='3.4.4 (cygming special, gdc
0.12, using
dmd 0.125)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8,
byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=12
    ivtype='long long', ivsize=8, nvtype='double',
nvsize=8,
Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='g++', ldflags =' -Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--stack,8388608
-Wl,--enable-auto-image-base -Wl,--enable-auto-import -s
-L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib /lib
    libs=-lgdbm -ldl -lcrypt -lgdbm_compat
    perllibs=-ldl -lcrypt -lgdbm_compat
    libc=/usr/lib/libc.a, so=dll, useshrplib=true,
libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef,
ccdlflags=' -s'
    cccdlflags=' ', lddlflags=' --shared 
-Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--stack,8388608
-Wl,--enable-auto-image-base -Wl,--enable-auto-import -s
-L/usr/local/lib'

Locally applied patches:
    DEVEL

---
INC
for perl 5.9.5:
    /usr/lib/perl5/5.9.5/cygwin
    /usr/lib/perl5/5.9.5
    .

---
Environment for perl 5.9.5:
    CYGWIN=ntsec
    HOME=/home/jhedden
    LANG=C
    LANGUAGE=C
    LC_ALL=C
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
   
PATH=/home/jhedden/bin:/usr/local/src/perl/bin:/usr/local/bi
n:/usr/bin:/bin:/usr/X11R6/bin:/c/Program
Files/WiX:/c/djgpp/bin:/c/Program
Files/apache-ant-1.7.0/bin:/c/Program
Files/nant-0.85/bin:/c/j2sdk1.4.2_14/bin:/c/dev-cpp/bin/:/c/
WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/system32/WBEM:/c/blp/
API/dde:/c/blp/API:/c/oracle/ora92/bin:/c/Program
Files/Oracle/jre/1.3.1/bin:/c/Program
Files/Oracle/jre/1.1.8/bin:/c/Program
Files/Hummingbird/Connectivity/7.10/Accessories/:.
    PERLIO=perlio
    PERL_BADLANG (unset)
    SHELL (unset)

  
[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )