Front page | perl.perl5.porters |
Postings from February 2003
[perl #20920] Segmentation fault ("Safe Signal" queue problem?)
Thread Next
From:
perlbug-followup
Date:
February 13, 2003 06:25
Subject:
[perl #20920] Segmentation fault ("Safe Signal" queue problem?)
Message ID:
rt-20920-51135.12.2167540851929@bugs6.perl.org
# New Ticket Created by powerman@sky.net.ua
# Please include the string: [perl #20920]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=20920 >
This is a bug report for perl from powerman@sky.net.ua,
generated with the help of perlbug 1.34 running under perl v5.8.0.
-----------------------------------------------------------------
[Please enter your report here]
powerman:~$ time perl -e '
use Time::HiRes qw(alarm);
$SIG{ALRM} = sub { 1 for 1..100000 };
alarm(0.01, 0.01);
sleep(1);
'
Segmentation fault
real 0m33.523s
user 0m33.520s
sys 0m0.000s
Hardcoded constant 100000 should be large enough: loop 1..100000 should take
more than 0.01 sec, so new signal arrives before old signal processed.
The workaround is to reinstall alarm after previous signal handler finished:
powerman:~$ time perl -e '
use Time::HiRes qw(alarm);
$SIG{ALRM} = sub { 1 for 1..100000; alarm(0.01) };
alarm(0.01);
sleep(1) for 1..100;
'
real 0m2.041s
user 0m1.020s
sys 0m0.000s
This bug seems to be related to "Safe Signals" introduced in 5.8.0 because
5.6.1 don't die with 'Segmentation fault', it just hang (and it should hang!).
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=core
severity=critical
---
Site configuration information for perl v5.8.0:
Configured by root at Tue Feb 11 17:22:15 EET 2003.
Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
Platform:
osname=linux, osvers=2.4.19, archname=i686-linux-thread-multi
uname='linux home.power 2.4.19 #1 ×ÓË Á×Ç 18 00:22:21 eest 2002 i686 unknown '
config_args='-Dprefix=/usr -Doptimize= -O3 -march=athlon -mcpu=athlon -d -e -s -Dinstallprefix=/usr -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 -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize=' -O3 -march=athlon -mcpu=athlon ',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing'
ccversion='', gccversion='3.0', 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 -lndbm -ldbm -ldb -ldl -lm -lpthread -lc -lcrypt -lutil
perllibs=-lnsl -ldl -lm -lpthread -lc -lcrypt -lutil
libc=/lib/libc-2.2.5.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.2.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Locally applied patches:
---
@INC for perl v5.8.0:
/usr/lib/perl5/5.8.0/i686-linux-thread-multi
/usr/lib/perl5/5.8.0
/usr/lib/perl5/site_perl/5.8.0/i686-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.0
/usr/lib/perl5/site_perl
.
---
Environment for perl v5.8.0:
HOME=/home/powerman
LANG=ru_RU.koi8r
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/powerman/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
PERL_BADLANG (unset)
SHELL=/bin/bash
Thread Next
-
[perl #20920] Segmentation fault ("Safe Signal" queue problem?)
by perlbug-followup