-
Notifications
You must be signed in to change notification settings - Fork 540
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
segfault in caller() #15248
Comments
From @maukeCreated by @mauke$ perl -e 'END { caller 1 } eval("sub { die }")->()' A threaded/debugging 5.22.1 segfaults at pp_ctl.c:1797: assert(CopSTASH(cx->blk_oldcop)); This seems to be fixed in blead (probably due to the context stack overhaul?). If I used bisect.pl right, the crash was introduced with commit It seems to consistently crash 5.20 and 5.22. ... Taking a closer look, it also crashes 5.16.3 (with threads) and 5.8.9. 5.10.1, 5.12.5, 5.14.4, 5.18.2, and 5.16.3 (debugging, no threads) seem to be OK. Perl Info
|
From @jkeenanOn Wed Mar 23 17:25:11 2016, mauke- wrote:
Segfaults in plain vanilla 5.22.0 as well (no threads, no debugging). Same error output as above. -- |
The RT System itself - Status changed from 'new' to 'open' |
From @jkeenanOn Wed Mar 23 17:25:11 2016, mauke- wrote:
Confirmed that blead looks okay on non-threaded, non-debugging builds. ##### $ ./perl -e 'END { caller 1 } eval("sub { die }")->()'
Ditto for me (unthreaded, non-debugging)
-- |
From @iabynOn Wed, Mar 23, 2016 at 05:25:11PM -0700, l.mai@web.de wrote:
Well it bisects to this, but it's not immediately obvious to me why that commit b042e32 do PL_tmps_floor restore in POPBLOCK -- |
From @iabynOn Thu, Mar 24, 2016 at 01:04:52PM +0000, Dave Mitchell wrote:
Having now looked this in more depth, that commit fixed it by a chance commit fc6e609 dounwind(): do a POPBLOCK for final cx frame. The issue was that when code dies without being trapped by an eval, END { caller 1 } eval("sub { die }")->() the temporary anon sub was getting freed while PL_curcop still pointed Later, caller() is called and it expects PL_curcop to be non-null. -- |
@iabyn - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#127774 (status was 'resolved')
Searchable as RT127774$
The text was updated successfully, but these errors were encountered: