Bug#663158: Plain "die;" doesn't always propagate exception

Anthony DeRobertis anthony at derobert.net
Fri Mar 9 04:48:53 UTC 2012


Well, actually, it finished. Note that to build these old versions of
Perl on Debian testing, you have to:
	git cherry-pick -n e0ef413b27cae926f967c54bbb9e7d40cc2adb2f
(the test program does this)

So, the result of bisect:

c5df3096702d4a814b3774dff243e7eb74814257 is the first bad commit
commit c5df3096702d4a814b3774dff243e7eb74814257
Author: Zefram <zefram at fysh.org>
Date:   Fri Apr 23 01:52:47 2010 +0100

    SV-based interfaces for dieing and warning
    
    New functions croak_sv(), die_sv(), mess_sv(), and warn_sv(), each act
    much like their _sv-less counterparts, but take a single SV argument
    instead of sprintf-like format and args.  They will accept RVs, passing
    them through as such.  This means there's no more need to clobber ERRSV
    in order to throw a structured exception.
    
    pp_warn() and pp_die() are rewritten to use the _sv interfaces.
    This fixes part of [perl #74538].  It also means that a structured
    warning object will be passed through to $SIG{__WARN__} instead of
    being stringified, thus bringing warn in line with die with respect to
    structured exception objects.
    
    The new functions and their existing counterparts are all fully
    documented.

:100644 100644 6ae162687a665f15ba1c38080a58c8cc310b65a4 62e558760de4cda0d6e0a96501210ae68d68d16f M      MANIFEST
:100644 100644 f93d27c2f588bc0132067341c4d4a2d2bd41eaa5 1c1bb2d75a64ca80edb7cce455bd184699c0c5d8 M      embed.fnc
:100644 100644 663cb6b8a1e018aef6d9f96deee8a75b690627e1 128cd467979b957de55a83968805af88620da531 M      embed.h
:100644 100644 77883384f3b44e3bde0da7a46cc24608105cc131 334e2c9368bb61cb39674319a6f89ecb3395f1ef M      global.sym
:100644 100644 0341f6e9d6296a96bf733b121cea1823b8fb0442 abe3e60803dd5af664548518d648529ff3594afa M      mg.c
:100644 100644 921688d656fcc00f7705487138e247f13d7d0127 f401fc7938ab58bc0707fe34bfdd6e86dbb1fa94 M      pp_ctl.c
:100644 100644 8dd8bc063567b8e733f3586f659fc6ca8d827705 f57bd1a57f2001c5c31c01645f305bb0b0df42b5 M      pp_sys.c
:100644 100644 979076f8c22dda4e1712e337d17917fdf215076a 71240e5aa88f5b1ee6838b58950dfef0def65377 M      proto.h
:040000 040000 facef45a345cb919ad8120eaabd0711469c9b564 71ea308544c7b0e1350dfc4fee0bcd08d2bf0f18 M      t
:100644 100644 89fea231a6add9630d6d46a9c01db7db5ecfafc4 99a9511aa9676e11b578fb6ae501c35b834e1b05 M      util.c
bisect run success


And the log:

$ git bisect log
# bad: [a35ef416833511da752c4b5b836b7a8915712aab] Remove RC3 marker.
# good: [6d52c880307229a35c23215c596700e716bd7c32] Removing the RC marker from patchlevel.h
git bisect start 'v5.14.0' 'v5.12.0'
# bad: [44ef8c7de01654d0b33d6fd57119d1e622abb5a2] make regen; make regen_perly
git bisect bad 44ef8c7de01654d0b33d6fd57119d1e622abb5a2
# skip: [b3364d989906ac4625608c0ff3bcfdad7e989cb7] perldelta up to be34c38
git bisect skip b3364d989906ac4625608c0ff3bcfdad7e989cb7
# bad: [3bc9c68be9b73fccbaf3154e7c08c09e241a3be6] Disable regeneration of regcharclass.h on win32
git bisect bad 3bc9c68be9b73fccbaf3154e7c08c09e241a3be6
# bad: [1db4d19556a36b5a8e8604c1e7656999ebc7732b] RT 75902: Add prototypes for tie() and untie() to allow overloading
git bisect bad 1db4d19556a36b5a8e8604c1e7656999ebc7732b
# bad: [9e5bbba0de25c01ae9355c7a97e237602a37e9f3] perlunifaq, uniintro: fix for 80 col display
git bisect bad 9e5bbba0de25c01ae9355c7a97e237602a37e9f3
# good: [83aa740ef4e0ec94b144304b034baf00e5d12723] consting in lex_stuff_pvn
git bisect good 83aa740ef4e0ec94b144304b034baf00e5d12723
# good: [992b236353d3493be5063165567838e96570135a] Don't use a C++ keyword as a variable name ("new").
git bisect good 992b236353d3493be5063165567838e96570135a
# bad: [99782e35be86d92df5daa0659d4cb2351d4a36b9] Merge remote branch 'zefram/zefram/reliable_exception' into blead
git bisect bad 99782e35be86d92df5daa0659d4cb2351d4a36b9
# good: [4f0556e9541e0e65f0abc5f4f6caf1f16ddf2dcd] Permit array assignment to steal temps and copy shared hash key scalars.
git bisect good 4f0556e9541e0e65f0abc5f4f6caf1f16ddf2dcd
# good: [6550424581c83583e72aa799a12d2a2e68d9e5f1] For SAVEt_BOOL, save the value with the type.
git bisect good 6550424581c83583e72aa799a12d2a2e68d9e5f1
# good: [3297d27d658a6691c429e496bd2a05fe04eda9d7] Silence a couple of false positive "may be used uninitialized" gcc warnings
git bisect good 3297d27d658a6691c429e496bd2a05fe04eda9d7
# bad: [7ce092845b50544ac127e66e60d73a2f7b707464] bring G_KEEPERR back to the realm of sanity
git bisect bad 7ce092845b50544ac127e66e60d73a2f7b707464
# good: [96d9b9cd40f1d98fda790eb12b5cdbeef8b48a81] make die reliably hand error to post-eval code
git bisect good 96d9b9cd40f1d98fda790eb12b5cdbeef8b48a81
# bad: [c5df3096702d4a814b3774dff243e7eb74814257] SV-based interfaces for dieing and warning
git bisect bad c5df3096702d4a814b3774dff243e7eb74814257

I'm attaching the test programs. Paths will need changing, of course.

-- 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bisect-die.sh
Type: application/x-sh
Size: 826 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/perl-maintainers/attachments/20120308/a4e672eb/attachment.sh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: die-test.pl
Type: text/x-perl
Size: 388 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/perl-maintainers/attachments/20120308/a4e672eb/attachment.pl>


More information about the Perl-maintainers mailing list