Navigation Menu

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

Update perlobj because DESTROY no longer clobbers $@ #13780

Closed
p5pRT opened this issue Apr 29, 2014 · 15 comments
Closed

Update perlobj because DESTROY no longer clobbers $@ #13780

p5pRT opened this issue Apr 29, 2014 · 15 comments

Comments

@p5pRT
Copy link

p5pRT commented Apr 29, 2014

Migrated from rt.perl.org#121761 (status was 'resolved')

Searchable as RT121761$

@p5pRT
Copy link
Author

p5pRT commented Apr 29, 2014

From efimov@reg.ru

There is a note in perlobj http​://perldoc.perl.org/perlobj.html​:

===
Because DESTROY methods can be called at any time, you should localize
any global variables you might update in your DESTROY .
In particular, if you use eval {} you should localize $@​ , and if you
use system or backticks you should localize $? .

but seems that was silently fixes somewhere in perl 5.14 ( I did not
find note in perldelta). At leas for $@​.

===
package MyClass;

sub DESTROY {
  eval { 1; }
};

package main;

eval {
  my $obj = bless {}, 'MyClass';

  die "foo";
};
print "Result​: $@​";

prints "foo" after 5.14

Summary of my perl5 (revision 5 version 14 subversion 2) configuration​:

  Platform​:
  osname=linux, osvers=2.6.42-37-generic,
archname=x86_64-linux-gnu-thread-multi
  uname='linux panlong 2.6.42-37-generic #58-ubuntu smp thu jan 24
15​:28​:10 utc 2013 x86_64 x86_64 x86_64 gnulinux '
  config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN
-Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr
-Dprivlib=/usr/share/perl/5.14 -Darchlib=/usr/lib/perl/5.14
-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5
-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local
-Dsitelib=/usr/local/share/perl/5.14.2
-Dsitearch=/usr/local/lib/perl/5.14.2 -Dman1dir=/usr/share/man/man1
-Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1
-Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1
-Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh
-Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2
-Duseshrplib -Dlibperl=libperl.so.5.14.2 -des'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=define, usemultiplicity=define
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN
-fno-strict-aliasing -pipe -fstack-protector -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 -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.6.3', 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/x86_64-linux-gnu /lib/../lib
/usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
  libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
  perllibs=-ldl -lm -lpthread -lc -lcrypt
  libc=, so=so, useshrplib=true, libperl=libperl.so.5.14.2
  gnulibc_version='2.15'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib
-fstack-protector'

Characteristics of this binary (from libperl)​:
  Compile-time options​: MULTIPLICITY PERL_DONT_CREATE_GVSV
  PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
  PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT
  USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
  USE_REENTRANT_API
  Locally applied patches​:
  DEBPKG​:debian/arm_thread_stress_timeout -
http​://bugs.debian.org/501970 Raise the timeout of
ext/threads/shared/t/stress.t to accommodate slower build hosts
  DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS
default for modules installed from CPAN.
  DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove
overly restrictive DB_File version check.
  DEBPKG​:debian/doc_info - Replace generic man(1) instructions with
Debian-specific information.
  DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak
enc2xs to follow symlinks and ignore missing @​INC directories.
  DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove
Errno version check due to upgrade problems with long-running
processes.
  DEBPKG​:debian/libperl_embed_doc - http​://bugs.debian.org/186778
Note that libperl-dev package is required for embedded linking
  DEBPKG​:fixes/respect_umask - Respect umask during installation
  DEBPKG​:debian/writable_site_dirs - Set umask approproately for
site install directories
  DEBPKG​:debian/extutils_set_libperl_path - EU​:MM​: Set location of
libperl.a to /usr/lib
  DEBPKG​:debian/no_packlist_perllocal - Don't install .packlist or
perllocal.pod for perl or vendor
  DEBPKG​:debian/prefix_changes - Fiddle with *PREFIX and variables
written to the makefile
  DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to
the binary targets.
  DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install
.packlist files for core or vendor.
  DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH
as per Debian policy.
  DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to
/etc/perl/Net as /usr may not be writable.
  DEBPKG​:debian/m68k_thread_stress - http​://bugs.debian.org/517938
http​://bugs.debian.org/495826 Disable some threads tests on m68k for
now due to missing TLS.
  DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian
  DEBPKG​:debian/module_build_man_extensions -
http​://bugs.debian.org/479460 Adjust Module​::Build manual page
extensions for the Debian Perl policy
  DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the
list of libraries wanted to what we actually need.
  DEBPKG​:fixes/net_smtp_docs - [rt.cpan.org #36038]
http​://bugs.debian.org/100195 Document the Net​::SMTP 'Port' option
  DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp
skip include directories in /usr/local
  DEBPKG​:debian/disable-zlib-bundling - Disable zlib bundling in
Compress​::Raw​::Zlib
  DEBPKG​:debian/cpanplus_definstalldirs -
http​://bugs.debian.org/533707 Configure CPANPLUS to use the site
directories by default.
  DEBPKG​:debian/cpanplus_config_path - Save local versions of
CPANPLUS​::Config​::System into /etc/perl.
  DEBPKG​:debian/deprecate-with-apt - http​://bugs.debian.org/580034
Point users to Debian packages of deprecated core modules
  DEBPKG​:fixes/hurd-ccflags - [a190e64]
http​://bugs.debian.org/587901 [perl #92244] Make hints/gnu.sh append
to $ccflags rather than overriding them
  DEBPKG​:debian/squelch-locale-warnings -
http​://bugs.debian.org/508764 Squelch locale warnings in Debian
package maintainer scripts
  DEBPKG​:debian/skip-upstream-git-tests - Skip tests specific to the
upstream Git repository
  DEBPKG​:fixes/extutils-cbuilder-cflags - [011e8fb]
http​://bugs.debian.org/624460 [perl #89478] Append CFLAGS and LDFLAGS
to their Config.pm counterparts in EU​::CBuilder
  DEBPKG​:fixes/module-build-home-directory -
http​://bugs.debian.org/624850 [rt.cpan.org #67893] Fix failing tilde
test when run under a UID without a passwd entry
  DEBPKG​:debian/patchlevel - http​://bugs.debian.org/567489 List
packaged patches for 5.14.2-6ubuntu2.4 in patchlevel.h
  DEBPKG​:fixes/h2ph-multiarch - [e7ec705]
http​://bugs.debian.org/625808 [perl #90122] Make h2ph correctly search
gcc include directories
  DEBPKG​:fixes/index-tainting - [3b36395]
http​://bugs.debian.org/291450 [perl #64804] RT 64804​: tainting with
index() of a constant
  DEBPKG​:debian/skip-kfreebsd-crash - http​://bugs.debian.org/628493
[perl #96272] Skip a crashing test case in t/op/threads.t on
GNU/kFreeBSD
  DEBPKG​:fixes/document_makemaker_ccflags -
http​://bugs.debian.org/628522 [rt.cpan.org #68613] Document that
CCFLAGS should include $Config{ccflags}
  DEBPKG​:fixes/sys-syslog-socket-timeout-kfreebsd.patch -
http​://bugs.debian.org/627821 [rt.cpan.org #69997] Use a socket
timeout on GNU/kFreeBSD to catch ICMP port unreachable messages
  DEBPKG​:fixes/hurd-hints - http​://bugs.debian.org/636609 Improve
general GNU hints, needed for GNU/Hurd.
  DEBPKG​:fixes/pod_fixes - [7698aed] http​://bugs.debian.org/637816
Fix typos in several pod/perl*.pod files
  DEBPKG​:debian/find_html2text - http​://bugs.debian.org/640479
Configure CPAN​::Distribution with correct name of html2text
  DEBPKG​:fixes/digest_eval_hole - http​://bugs.debian.org/644108
Close the eval "require $module" security hole in
Digest->new($algorithm)
  DEBPKG​:fixes/hurd-ndbm - [f0d0a20] [perl #102680]
http​://bugs.debian.org/645989 Add GNU/Hurd hints for NDBM_File
  DEBPKG​:fixes/sysconf.t-posix - [8040185] [perl #102888]
http​://bugs.debian.org/646016 Fix hang in ext/POSIX/t/sysconf.t on
GNU/Hurd
  DEBPKG​:fixes/hurd-largefile - [1fda587] [perl #103014]
http​://bugs.debian.org/645790 enable LFS on GNU/Hurd
  DEBPKG​:debian/hurd_test_todo_syslog -
http​://bugs.debian.org/650093 Disable failing GNU/Hurd tests in
cpan/Sys-Syslog/t/syslog.t
  DEBPKG​:fixes/hurd_skip_itimer_virtual - [rt.cpan.org #72754]
http​://bugs.debian.org/650094 Skip interval timer tests in Time​::HiRes
on GNU/Hurd
  DEBPKG​:debian/hurd_test_skip_socketpair -
http​://bugs.debian.org/650186 Disable failing GNU/Hurd tests
ext/Socket/t/socketpair.t
  DEBPKG​:debian/hurd_test_skip_sigdispatch -
http​://bugs.debian.org/650188 Disable failing GNU/Hurd tests
op/sigdispatch.t
  DEBPKG​:debian/hurd_test_skip_stack - http​://bugs.debian.org/650175
Disable failing GNU/Hurd tests dist/threads/t/stack.t
  DEBPKG​:debian/hurd_test_skip_recv - http​://bugs.debian.org/650095
Disable failing GNU/Hurd tests cpan/autodie/t/recv.t
  DEBPKG​:debian/hurd_test_skip_libc - http​://bugs.debian.org/650097
Disable failing GNU/Hurd tests dist/threads/t/libc.t
  DEBPKG​:debian/hurd_test_skip_pipe - http​://bugs.debian.org/650187
Disable failing GNU/Hurd tests io/pipe.t
  DEBPKG​:debian/hurd_test_skip_io_pipe -
http​://bugs.debian.org/650096 Disable failing GNU/Hurd tests
dist/IO/t/io_pipe.t
  DEBPKG​:fixes/CVE-2012-5195 - avoid calling memset with a negative count
  DEBPKG​:fixes/CVE-2012-5526 - [PATCH 1/4] CR escaping for P3P header
  DEBPKG​:CVE-2013-1667.patch - [PATCH] Prevent premature hsplit()
calls, and only trigger REHASH after hsplit()
  DEBPKG​:CVE-2012-6329.patch -
http​://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695224 [1735f6f] fix
arbitrary command execution via _compile function in Maketext.pm
  Built under linux
  Compiled at Feb 4 2014 23​:11​:19
  %ENV​:
  PERLBREW_BASHRC_VERSION="0.67"
  PERLBREW_HOME="/home/vse/.perlbrew"
  PERLBREW_MANPATH=""
  PERLBREW_PATH="/home/perlbrew/bin"
  PERLBREW_ROOT="/home/perlbrew"
  PERLBREW_VERSION="0.67"
  @​INC​:
  /etc/perl
  /usr/local/lib/perl/5.14.2
  /usr/local/share/perl/5.14.2
  /usr/lib/perl5
  /usr/share/perl5
  /usr/lib/perl/5.14
  /usr/share/perl/5.14
  /usr/local/lib/site_perl
  .

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2014

From @steve-m-hay

This was documented in perl5140delta.pod​:

https://metacpan.org/source/RJBS/perl-5.18.2/pod/perl5140delta.pod#L350

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2014

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2014

@steve-m-hay - Status changed from 'open' to 'resolved'

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2014

From @khwilliamson

On 04/30/2014 11​:08 AM, Steve Hay via RT wrote​:

This was documented in perl5140delta.pod​:

https://metacpan.org/source/RJBS/perl-5.18.2/pod/perl5140delta.pod#L350

---
via perlbug​: queue​: perl5 status​: new
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121761

But shouldn't we update perlobj to be accurate?

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2014

From @steve-m-hay

On Wed Apr 30 10​:54​:23 2014, public@​khwilliamson.com wrote​:

On 04/30/2014 11​:08 AM, Steve Hay via RT wrote​:

This was documented in perl5140delta.pod​:

https://metacpan.org/source/RJBS/perl-5.18.2/pod/perl5140delta.pod#L350

---
via perlbug​: queue​: perl5 status​: new
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121761

But shouldn't we update perlobj to be accurate?

Ah yes, good point. Sorry, too hasty there.

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2014

@steve-m-hay - Status changed from 'resolved' to 'open'

@p5pRT
Copy link
Author

p5pRT commented May 2, 2014

From efimov@reg.ru

Ok, indeed. But perldoc perlobj is now incorrect.

2014-04-30 21​:08 GMT+04​:00 Steve Hay via RT <perlbug-followup@​perl.org>​:

This was documented in perl5140delta.pod​:

https://metacpan.org/source/RJBS/perl-5.18.2/pod/perl5140delta.pod#L350

@p5pRT
Copy link
Author

p5pRT commented May 5, 2014

From @rjbs

* Karl Williamson <public@​khwilliamson.com> [2014-04-30T13​:53​:49]

But shouldn't we update perlobj to be accurate?

Absolutely. My recollection (I apologize for not doing the research right now)
is that Zefram said that the behavior has been fixed/changed *in most cases*,
so I'm not sure whether we're better off removing the suggestion of
localization or leaving it in.

Perhaps someone can refresh my memory or clarify the situation.

--
rjbs

@p5pRT
Copy link
Author

p5pRT commented May 9, 2014

From @steve-m-hay

On 5 May 2014 15​:27, Ricardo Signes <perl.p5p@​rjbs.manxome.org> wrote​:

* Karl Williamson <public@​khwilliamson.com> [2014-04-30T13​:53​:49]

But shouldn't we update perlobj to be accurate?

Absolutely. My recollection (I apologize for not doing the research right now)
is that Zefram said that the behavior has been fixed/changed *in most cases*,
so I'm not sure whether we're better off removing the suggestion of
localization or leaving it in.

Perhaps someone can refresh my memory or clarify the situation.

Is it this thread you're thinking of?

http​://code.activestate.com/lists/perl5-porters/170135/

There are a couple of outstanding problems still mentioned there...

@p5pRT
Copy link
Author

p5pRT commented Jun 6, 2014

From @rjbs

* Steve Hay <steve.m.hay@​googlemail.com> [2014-05-09T09​:39​:16]

On 5 May 2014 15​:27, Ricardo Signes <perl.p5p@​rjbs.manxome.org> wrote​:

Absolutely. My recollection (I apologize for not doing the research right now)
is that Zefram said that the behavior has been fixed/changed *in most cases*,
so I'm not sure whether we're better off removing the suggestion of
localization or leaving it in.

Perhaps someone can refresh my memory or clarify the situation.

Is it this thread you're thinking of?

http​://code.activestate.com/lists/perl5-porters/170135/

There are a couple of outstanding problems still mentioned there...

I believe it is.

Having re-read that, I believe the clobbering problem is generally fixed, and
that the other problems are distinct.

--
rjbs

@p5pRT
Copy link
Author

p5pRT commented Dec 13, 2017

From zefram@fysh.org

Fixed in commit addf67e.

-zefram

@p5pRT
Copy link
Author

p5pRT commented Dec 17, 2017

@xsawyerx - Status changed from 'open' to 'pending release'

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @khwilliamson

Thank you for filing this report. You have helped make Perl better.

With the release yesterday of Perl 5.28.0, this and 185 other issues have been
resolved.

Perl 5.28.0 may be downloaded via​:
https://metacpan.org/release/XSAWYERX/perl-5.28.0

If you find that the problem persists, feel free to reopen this ticket.

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

@khwilliamson - Status changed from 'pending release' to 'resolved'

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

No branches or pull requests

1 participant