Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bad handling of non-string exceptions during compilation #9913

Open
p5pRT opened this issue Oct 17, 2009 · 4 comments
Open

bad handling of non-string exceptions during compilation #9913

p5pRT opened this issue Oct 17, 2009 · 4 comments

Comments

@p5pRT
Copy link

p5pRT commented Oct 17, 2009

Migrated from rt.perl.org#69856 (status was 'open')

Searchable as RT69856$

@p5pRT
Copy link
Author

p5pRT commented Oct 17, 2009

From zefram@fysh.org

Created by zefram@fysh.org

$ perl -e 'BEGIN { die [] }'
ARRAY(0x8fea898)BEGIN failed--compilation aborted at -e line 1.

Also happens in string eval, where you might actually want to catch the
exception. Apparently what's going on is that the "BEGIN failed" line is
being string-appended to the original exception, without taking account of
the fact that the original exception wasn't a string. It's assuming that
every exception string ends with a newline, which it does if it's really
a string, but isn't the case if it's being coerced from a reference.

Perl Info

Flags:
    category=core
    severity=low

Site configuration information for perl 5.10.0:

Configured by Debian Project at Fri Aug 28 22:30:10 UTC 2009.

Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
  Platform:
    osname=linux, osvers=2.6.26-2-amd64, archname=i486-linux-gnu-thread-multi
    uname='linux puccini 2.6.26-2-amd64 #1 smp fri aug 14 07:12:04 utc 2009 i686 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -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 -Dlibperl=libperl.so.5.10.0 -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
  Compiler:
    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.2', 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 /usr/lib64
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.7.so, so=so, useshrplib=true, libperl=libperl.so.5.10.0
    gnulibc_version='2.7'
  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:
    /etc/perl
    /usr/local/lib/perl/5.10.0
    /usr/local/share/perl/5.10.0
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.10
    /usr/share/perl/5.10
    /usr/local/lib/site_perl
    .


Environment for perl 5.10.0:
    HOME=/home/zefram
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/home/zefram/pub/i686-pc-linux-gnu/bin:/home/zefram/pub/common/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/local/bin:/usr/games
    PERL_BADLANG (unset)
    SHELL=/usr/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented Nov 11, 2009

jarich@perltraining.com.au - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented May 23, 2014

From @jkeenan

On Sat Oct 17 06​:52​:23 2009, zefram@​fysh.org wrote​:

This is a bug report for perl from zefram@​fysh.org,
generated with the help of perlbug 1.36 running under perl 5.10.0.

-----------------------------------------------------------------
[Please enter your report here]

$ perl -e 'BEGIN { die [] }'
ARRAY(0x8fea898)BEGIN failed--compilation aborted at -e line 1.

Also happens in string eval, where you might actually want to catch
the
exception. Apparently what's going on is that the "BEGIN failed" line
is
being string-appended to the original exception, without taking
account of
the fact that the original exception wasn't a string. It's assuming
that
every exception string ends with a newline, which it does if it's
really
a string, but isn't the case if it's being coerced from a reference.

What would be the desired behavior?

@p5pRT
Copy link
Author

p5pRT commented May 23, 2014

From @ikegami

On Thu, May 22, 2014 at 8​:30 PM, James E Keenan via RT <
perlbug-followup@​perl.org> wrote​:

On Sat Oct 17 06​:52​:23 2009, zefram@​fysh.org wrote​:

This is a bug report for perl from zefram@​fysh.org,
generated with the help of perlbug 1.36 running under perl 5.10.0.

-----------------------------------------------------------------
[Please enter your report here]

$ perl -e 'BEGIN { die [] }'
ARRAY(0x8fea898)BEGIN failed--compilation aborted at -e line 1.

Also happens in string eval, where you might actually want to catch
the
exception. Apparently what's going on is that the "BEGIN failed" line
is
being string-appended to the original exception, without taking
account of
the fact that the original exception wasn't a string. It's assuming
that
every exception string ends with a newline, which it does if it's
really
a string, but isn't the case if it's being coerced from a reference.

What would be the desired behavior?

ARRAY(0x8fea898)
BEGIN failed--compilation aborted at -e line 1.

instead of

ARRAY(0x8fea898)BEGIN failed--compilation aborted at -e line 1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants