develooper Front page | perl.perl5.porters | Postings from August 2008

[perl #57944] Incorrect nonnull attribution on Perl_parser_dup

Thread Next
August 15, 2008 18:03
[perl #57944] Incorrect nonnull attribution on Perl_parser_dup
Message ID:
# New Ticket Created by 
# Please include the string:  [perl #57944]
# 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.36 running under perl 5.10.0.

[Please enter your report here]
I've been trying to build perl with a compiler that implements a number of
GNU extensions.  When the tests are run from using this compiler a number
of tests fail due do a segmentation fault in Perl_parser_dup.  The reason
for this seems to be an incorrect attribute((nonnull)) annotation on the
'proto' argument to this function.  A backtrace shows that perl_clone (line 
11297) can call this routine with a NULL proto value.  The crash occurs
because the compiler has optimized away the null check at the top of the
function (since the programmer has asserted that the argument can't be null
the check must be redundant).

#0  Perl_parser_dup (my_perl=0x17c350, proto=0x0, param=0xbecbd0e0)
    at sv.c:9564
#1  0x000a4b8c in perl_clone (proto_perl=0x116008, flags=2) at sv.c:11297
11297       PL_parser           = parser_dup(proto_perl->Iparser, param);
(gdb) p proto_perl->Iparser
$2 = (yy_parser *) 0x0

[Please do not change anything below this line]
Site configuration information for perl 5.10.0:

Configured by Debian Project at Sat Jul 19 12:31:51 UTC 2008.

Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
    osname=linux, osvers=2.6.25-1-iop32x, archname=arm-linux-gnueabi-thread-multi
    uname='linux muscat 2.6.25-1-iop32x #2 wed apr 30 08:20:05 utc 2008 armv5tel gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.0 -Dsitearch=/usr/local/lib/perl/5.10.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    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 -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.3.1', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/, so=so, useshrplib=true,
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib'

Locally applied patches:

@INC for perl 5.10.0:

Environment for perl 5.10.0:
    LANGUAGE (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