Front page | perl.perl5.porters |
Postings from June 2012
[perl #113794] "in cleanup" warnings generated from destructor errors are no longer enabled by "use warnings"
Thread Next
From:
Jesse Luehrs
Date:
June 22, 2012 14:44
Subject:
[perl #113794] "in cleanup" warnings generated from destructor errors are no longer enabled by "use warnings"
Message ID:
rt-3.6.HEAD-5009-1340401482-1719.113794-75-0@perl.org
# New Ticket Created by Jesse Luehrs
# Please include the string: [perl #113794]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=113794 >
This is a bug report for perl from doy@tozt.net,
generated with the help of perlbug 1.39 running under perl 5.16.0.
-----------------------------------------------------------------
[Please describe your issue here]
../bisect.pl --start=v5.12.4 --end=v5.14.2 --expect-fail -e \
'BEGIN { $SIG{ __WARN__} = sub { exit 1 if $_[0] =~ /in cleanup/ }; }
use strict; use warnings;
package A;
sub new { bless {}, "A"}; sub DESTROY { warn 1; die 2; }
{ my $a = A ->new }'
returns this:
96d9b9cd40f1d98fda790eb12b5cdbeef8b48a81 is the first bad commit
commit 96d9b9cd40f1d98fda790eb12b5cdbeef8b48a81
Author: Zefram <zefram@fysh.org>
Date: Tue Apr 20 21:32:53 2010 +0100
make die reliably hand error to post-eval code
Put the exception into $@ last thing before longjmping to the op following
the eval block, where previously it went into $@ before unwinding the
stack. This change means that the exception is not liable to be lost
by $@ being clobbered by destructors, cleanup code, or restoration after
"local $@". The code running immediately after eval can now rely on $@
accurately indicating the exception status of the eval.
:100644 100644 5ca4f13aa00796d3864bcc7258510dd7de56986d 6ae162687a665f15ba1c38080a58c8cc310b65a4 M MANIFEST
:100644 100644 d62d58ada367650c283a1219cf573905d85cbecb 921688d656fcc00f7705487138e247f13d7d0127 M pp_ctl.c
:040000 040000 14e682d7e45cbebfcef4e4a0b14861aa6ad7651c facef45a345cb919ad8120eaabd0711469c9b564 M t
bisect run success
That took 1839 seconds
But this still warns:
$ perl -we 'package A; sub new { bless {}, "A" } sub DESTROY { die "foo" }
{ my $a = A->new }'
(in cleanup) foo at -e line 1.
This seems unintentional. The code seems to still be using the 'misc'
warnings category, so I'm not sure why "use warnings" no longer enables
it.
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=core
severity=low
---
Site configuration information for perl 5.16.0:
Configured by doy at Sat Jun 2 13:46:21 CDT 2012.
Summary of my perl5 (revision 5 version 16 subversion 0) configuration:
Platform:
osname=linux, osvers=3.3.5-1-arch, archname=x86_64-linux
uname='linux xtahua 3.3.5-1-arch #1 smp preempt mon may 7 19:57:51 cest 2012 x86_64 gnulinux '
config_args='-de -Dprefix=/home/doy/perl5/perlbrew/perls/perl-5.16.0'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.7.0 20120505 (prerelease)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib/../lib /usr/lib/../lib /lib /usr/lib
libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
libc=/lib/libc-2.15.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.15'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'
Locally applied patches:
---
@INC for perl 5.16.0:
/home/doy/perl5/local/
/home/doy/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/x86_64-linux
/home/doy/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0
/home/doy/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0/x86_64-linux
/home/doy/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0
.
---
Environment for perl 5.16.0:
HOME=/home/doy
LANG=en_US.UTF-8
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/doy/perl5/perlbrew/bin:/home/doy/perl5/perlbrew/perls/perl-5.16.0/bin:/home/doy/.bin/marathon:/home/doy/.bin/nethack:/home/doy/.bin/ghc:/home/doy/.bin:/usr/local/sbin:/usr/local/bin:/usr/lib/ccache/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/vendor_perl:/usr/bin/core_perl
PERL5LIB=/home/doy/perl5/local/
PERLBREW_BASHRC_VERSION=0.33
PERLBREW_HOME=/home/doy/.perlbrew
PERLBREW_MANPATH=/home/doy/perl5/perlbrew/perls/perl-5.16.0/man
PERLBREW_PATH=/home/doy/perl5/perlbrew/bin:/home/doy/perl5/perlbrew/perls/perl-5.16.0/bin
PERLBREW_PERL=perl-5.16.0
PERLBREW_ROOT=/home/doy/perl5/perlbrew
PERLBREW_VERSION=0.43
PERL_BADLANG (unset)
PERL_CPANM_OPT=-q --mirror file:///home/doy/perl5/minicpan/ --mirror http://mirrors.kernel.org/cpan/ --mirror http://search.cpan.org/CPAN --prompt
SHELL=/bin/zsh
Thread Next
-
[perl #113794] "in cleanup" warnings generated from destructor errors are no longer enabled by "use warnings"
by Jesse Luehrs