[Bioclusters] Opteron Perl64 segfault issues
Nathan O. Siemers
bioclusters@bioinformatics.org
Tue, 05 Aug 2003 09:42:00 -0400
Hello All:
We are anticipating the purchase of an AMD opteron linux cluster to
replace our old IA-32 systems. We have purchased a test box (Penguin)
running SUSE Linux and perl 5.8.0. The summary of the software
configuration is included at the end of this message.
We have encountered an issue with the perl implementation on the
machine: I can reproducibly segfault perl with this code:
____________________________________________________________
#!/usr/bin/perl
$number = 10000000;
while (1) {
for ($i = 1; $i <= $number; $i++) {
$hash{$i}++;
}
undef %hash;
}
_____________________________________________________________
One needs about 2g of ram on the machine to run the code, and it will
never terminate. On our opteron system, this code will produce a
segmentation violation after a day or two of running. The code simply
produces a large perl hash data structure and interacts with it in very
simple ways....
Instability in perl is a show stopper for us. We currently do not know
if this behavior is related to:
the 5.8.0 release of perl (our other systems are running 5.6.x), or
the way in which SUSE compiled it (I notice that threads are built into
their version).
bug in the AMD CPU or motherboard, etc.
problems with the AMD opteron Linux shared libraries or other
aspects of the linux port.
Can anyone test this on their boxen (let it run for 4 days to be a
fair test) or shed some insight on where the problem may be? (Yes we
*do* often keep such big hashes active in perl for long periods of time
for word-based seq identity searches).
Thanks,
Nathan Siemers
uname -a:
Linux opt 2.4.19-SMP #1 SMP Mon Mar 31 23:48:08 UTC 2003 x86_64 unknown
and perl:
perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
Platform:
osname=linux, osvers=2.4.19, archname=x86_64-linux-thread-multi
uname='linux jarre 2.4.19 #1 smp mon mar 24 16:17:59 utc 2003
x86_64 unknown
'
config_args='-ds -e -Dprefix=/usr -Dusethreads -Di_db -Di_dbm
-Di_ndbm -Di_g
dbm -Duseshrplib=true'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=de
fine
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=define uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing
-D_LARGEF
ILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2 --pipe',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing'
ccversion='', gccversion='3.2.2 (SuSE Linux)', 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='cc', ldflags =' -L/usr/local/lib64'
libpth=/lib64 /usr/lib64 /usr/local/lib64
libs=-lm -ldl -lcrypt -lpthread
perllibs=-lm -ldl -lcrypt -lpthread
libc=/lib64//lib64/libc.so.6, so=so, useshrplib=true,
libperl=libperl.so
gnulibc_version='2.2.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic
-Wl,-rpa
th,/usr/lib/perl5/5.8.0/x86_64-linux-thread-multi/CORE'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib64'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_64_BIT_INT
USE_64_BIT_ALL
USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
Built under linux
Compiled at Mar 27 2003 16:06:33
@INC:
/usr/lib/perl5/5.8.0/x86_64-linux-thread-multi
/usr/lib/perl5/5.8.0
/usr/lib/perl5/site_perl/5.8.0/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.0
/usr/lib/perl5/site_perl
.