On Mon Oct 17 06:31:55 2005, t-ikegami@aist.go.jp wrote:
This is a bug report for perl from ikegami@fsvc001.asc.hpcc.jp,
generated with the help of perlbug 1.35 running under perl v5.8.7.
-----------------------------------------------------------------
[Please enter your report here]
With perl 5.8.7 running under Linux 2.4, the following code ends up
with segmentation fault.
#!/usr/bin/perl
use strict;
use warnings;
use threads;
use threads::shared;
while(1) {
my @t;
for (1..20) {
push @t, async {
system("ls -l /etc > /dev/null");
return;
};
}
$_->join for @t;
print ".";
}
The symptom is highly stochastic; the number of "." printed before the
segmentation fault indicates the stability. The instability is most
prominent on dual Xeon (3 GHz) machine with Linux 2.4.24 + libc 2.3.2,
but it can be noticed on Pentium III (800 MHz) + Linux 2.4.18-3 + libc
2.2.5 and Dual Opteron (2 GHz) + Linux 2.4.21-251-smp + libc 2.2.5.
The symptom seems not to be observed on Linux 2.6 machine (Dual
Opteron (2 GHz) + Linux 2.6.5-7.191-smp + libc 2.3.3, for example),
but instead, the following code blocks.
#!/usr/bin/perl
use strict;
use warnings;
use threads;
use threads::shared;
use FileHandle;
my $str = "x" x 8192;
while(1) {
my @t;
for (1..20) {
push @t, async {
my $H = new FileHandle "| cat > /dev/null" or die;
print $H $str;
close $H;
return;
};
}
$_->join for @t;
print ".";
}
It occurs far less frequent, but some threads happens to be blocked at
"new FileHandle" line. Note that the above code, when running on
Linux 2.4, sometimes causes segmentation fault, and sometimes blocks.
It is not certain, but with perl 5.8.6, the symptom is not observed so
far.
Stack trace after the segmentation fault with the first code goes like
this:
Program received signal SIGSEGV, Segmentation fault.
0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
(gdb) where
#0 0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
#1 0x4009bf2c in pthread_mutex_unlock () from
/lib/i686/libpthread.so.0
#2 0x42078788 in posix_memalign () from /lib/i686/libc.so.6
#3 0x42075b85 in free () from /lib/i686/libc.so.6
#4 0x080d3df9 in Perl_ptr_table_free ()
#5 0x4001759f in Perl_ithread_create ()
from /work/ikegami/perl/lib/5.8.7/i686-linux-thread-
multi/auto/threads/threads.so
#6 0x40017de5 in XS_threads_new ()
from /work/ikegami/perl/lib/5.8.7/i686-linux-thread-
multi/auto/threads/threads.so
#7 0x080ef5be in Perl_pp_goto ()
#8 0x080bc359 in Perl_runops_standard ()
#9 0x08063948 in S_run_body ()
#10 0x08063755 in perl_run ()
#11 0x0805fddd in main ()
and in another run:
Program received signal SIGSEGV, Segmentation fault.
0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
(gdb) where
#0 0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
#1 0x4009bf2c in pthread_mutex_unlock () from
/lib/i686/libpthread.so.0
#2 0x42078788 in posix_memalign () from /lib/i686/libc.so.6
#3 0x42075b85 in free () from /lib/i686/libc.so.6
#4 0x080cc3e0 in Perl_sv_clear ()
#5 0x080cc7e0 in Perl_sv_free ()
#6 0x080e7051 in Perl_free_tmps ()
#7 0x080bc8ba in Perl_pp_unstack ()
#8 0x080bc359 in Perl_runops_standard ()
#9 0x08063948 in S_run_body ()
#10 0x08063755 in perl_run ()
#11 0x0805fddd in main ()
And in other cases, stack seems to be corrupted.
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=core
severity=medium
---
Site configuration information for perl v5.8.7:
Configured by ikegami at Thu Jun 16 15:10:02 JST 2005.
Summary of my perl5 (revision 5 version 8 subversion 7) configuration:
Platform:
osname=linux, osvers=2.4.24-bluesmoke-dvd, archname=i686-linux-
thread-multi
uname='linux fsvc001 2.4.24-bluesmoke-dvd #5 smp thu mar 11
12:28:01 jst 2004 i686 i686 i386 gnulinux '
config_args='-ds -e -Dprefix=/work/ikegami/perl -Dusethreads'
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=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -pipe -I/usr/local/include
-I/usr/include/gdbm'
ccversion='', gccversion='3.3.3', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -lgdbm -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.3.2.so, so=so, useshrplib=false,
libperl=libperl.a
gnulibc_version='2.3.2'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Locally applied patches:
---
@INC for perl v5.8.7:
/work/ikegami/perl/lib/5.8.7/i686-linux-thread-multi
/work/ikegami/perl/lib/5.8.7
/work/ikegami/perl/lib/site_perl/5.8.7/i686-linux-thread-multi
/work/ikegami/perl/lib/site_perl/5.8.7
/work/ikegami/perl/lib/site_perl
.
---
Environment for perl v5.8.7:
HOME=/home/ikegami
LANG=ja_JP.eucJP
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/local/SGE/sge-6_0u1/bin/lx24-
x86:/usr/pgi/linux86/5.2/bin:/usr/local/ngv2/bin:/opt/intel_fc_80/bin:/opt/intel_idb_73/bin:/opt/intel_cc_80/bin:/usr/local/gt/bin:/usr/local/gt/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
PERL_BADLANG (unset)
SHELL=/bin/bash
This is a bug report for perl from ikegami@fsvc001.asc.hpcc.jp,
generated with the help of perlbug 1.35 running under perl v5.8.7.
-----------------------------------------------------------------
[Please enter your report here]
With perl 5.8.7 running under Linux 2.4, the following code ends up
with segmentation fault.
#!/usr/bin/perl
use strict;
use warnings;
use threads;
use threads::shared;
while(1) {
my @t;
for (1..20) {
push @t, async {
system("ls -l /etc > /dev/null");
return;
};
}
$_->join for @t;
print ".";
}
The symptom is highly stochastic; the number of "." printed before the
segmentation fault indicates the stability. The instability is most
prominent on dual Xeon (3 GHz) machine with Linux 2.4.24 + libc 2.3.2,
but it can be noticed on Pentium III (800 MHz) + Linux 2.4.18-3 + libc
2.2.5 and Dual Opteron (2 GHz) + Linux 2.4.21-251-smp + libc 2.2.5.
The symptom seems not to be observed on Linux 2.6 machine (Dual
Opteron (2 GHz) + Linux 2.6.5-7.191-smp + libc 2.3.3, for example),
but instead, the following code blocks.
#!/usr/bin/perl
use strict;
use warnings;
use threads;
use threads::shared;
use FileHandle;
my $str = "x" x 8192;
while(1) {
my @t;
for (1..20) {
push @t, async {
my $H = new FileHandle "| cat > /dev/null" or die;
print $H $str;
close $H;
return;
};
}
$_->join for @t;
print ".";
}
It occurs far less frequent, but some threads happens to be blocked at
"new FileHandle" line. Note that the above code, when running on
Linux 2.4, sometimes causes segmentation fault, and sometimes blocks.
It is not certain, but with perl 5.8.6, the symptom is not observed so
far.
Stack trace after the segmentation fault with the first code goes like
this:
Program received signal SIGSEGV, Segmentation fault.
0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
(gdb) where
#0 0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
#1 0x4009bf2c in pthread_mutex_unlock () from
/lib/i686/libpthread.so.0
#2 0x42078788 in posix_memalign () from /lib/i686/libc.so.6
#3 0x42075b85 in free () from /lib/i686/libc.so.6
#4 0x080d3df9 in Perl_ptr_table_free ()
#5 0x4001759f in Perl_ithread_create ()
from /work/ikegami/perl/lib/5.8.7/i686-linux-thread-
multi/auto/threads/threads.so
#6 0x40017de5 in XS_threads_new ()
from /work/ikegami/perl/lib/5.8.7/i686-linux-thread-
multi/auto/threads/threads.so
#7 0x080ef5be in Perl_pp_goto ()
#8 0x080bc359 in Perl_runops_standard ()
#9 0x08063948 in S_run_body ()
#10 0x08063755 in perl_run ()
#11 0x0805fddd in main ()
and in another run:
Program received signal SIGSEGV, Segmentation fault.
0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
(gdb) where
#0 0x4009eff0 in sem_unlink () from /lib/i686/libpthread.so.0
#1 0x4009bf2c in pthread_mutex_unlock () from
/lib/i686/libpthread.so.0
#2 0x42078788 in posix_memalign () from /lib/i686/libc.so.6
#3 0x42075b85 in free () from /lib/i686/libc.so.6
#4 0x080cc3e0 in Perl_sv_clear ()
#5 0x080cc7e0 in Perl_sv_free ()
#6 0x080e7051 in Perl_free_tmps ()
#7 0x080bc8ba in Perl_pp_unstack ()
#8 0x080bc359 in Perl_runops_standard ()
#9 0x08063948 in S_run_body ()
#10 0x08063755 in perl_run ()
#11 0x0805fddd in main ()
And in other cases, stack seems to be corrupted.
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=core
severity=medium
---
Site configuration information for perl v5.8.7:
Configured by ikegami at Thu Jun 16 15:10:02 JST 2005.
Summary of my perl5 (revision 5 version 8 subversion 7) configuration:
Platform:
osname=linux, osvers=2.4.24-bluesmoke-dvd, archname=i686-linux-
thread-multi
uname='linux fsvc001 2.4.24-bluesmoke-dvd #5 smp thu mar 11
12:28:01 jst 2004 i686 i686 i386 gnulinux '
config_args='-ds -e -Dprefix=/work/ikegami/perl -Dusethreads'
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=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -pipe -I/usr/local/include
-I/usr/include/gdbm'
ccversion='', gccversion='3.3.3', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -lgdbm -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.3.2.so, so=so, useshrplib=false,
libperl=libperl.a
gnulibc_version='2.3.2'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Locally applied patches:
---
@INC for perl v5.8.7:
/work/ikegami/perl/lib/5.8.7/i686-linux-thread-multi
/work/ikegami/perl/lib/5.8.7
/work/ikegami/perl/lib/site_perl/5.8.7/i686-linux-thread-multi
/work/ikegami/perl/lib/site_perl/5.8.7
/work/ikegami/perl/lib/site_perl
.
---
Environment for perl v5.8.7:
HOME=/home/ikegami
LANG=ja_JP.eucJP
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/local/SGE/sge-6_0u1/bin/lx24-
x86:/usr/pgi/linux86/5.2/bin:/usr/local/ngv2/bin:/opt/intel_fc_80/bin:/opt/intel_idb_73/bin:/opt/intel_cc_80/bin:/usr/local/gt/bin:/usr/local/gt/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
PERL_BADLANG (unset)
SHELL=/bin/bash
architectures. Is this still an issue on recent Perls?
---
via perlbug: queue: perl5 status: new
https://rt.perl.org:443/rt3/Ticket/Display.html?id=37460