develooper Front page | perl.perl5.porters | Postings from February 2003

[perl #20920] Segmentation fault ("Safe Signal" queue problem?)

Thread Next
February 13, 2003 06:25
[perl #20920] Segmentation fault ("Safe Signal" queue problem?)
Message ID:
# New Ticket Created by 
# Please include the string:  [perl #20920]
# in the subject line of all future correspondence about this issue. 
# <URL: >

This is a bug report for perl from,
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);
    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) };
	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]
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:
    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
    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/, so=so, useshrplib=false, libperl=libperl.a
  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:

Environment for perl v5.8.0:
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PERL_BADLANG (unset)

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About