|
List Info
Thread: Memory corruption with heavy module loading in threads
|
|
| Memory corruption with heavy module
loading in threads |

|
2007-08-30 08:57:03 |
This is a bug report for perl from jdhedden cpan.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 |

|
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 jdhedden cpan.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]
|
|