[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:

$number = 10000000;
while (1) {
     for ($i = 1; $i <= $number;  $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).


	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:
     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 
     useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
     use64bitint=define use64bitall=define uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
     cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing 
     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', 
     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, 
   Dynamic Linking:
     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic 
     cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib64'

Characteristics of this binary (from libperl):
   Compile-time options: MULTIPLICITY USE_ITHREADS USE_64_BIT_INT 
   Built under linux
   Compiled at Mar 27 2003 16:06:33