Skip Menu |
Report information
Id: 128532
Status: resolved
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: s [at] alexbyk.com
Cc:
AdminCc:

Operating System: (no value)
PatchStatus: (no value)
Severity: low
Type:
Perl Version: 5.18.0
Fixed In: 5.25.3



Subject: Crash with Symbol::delete_package and subref
Download (untitled) / with headers
text/plain 1.6k
From <577975CB.2080006@alexbyk.com>: $ perl -MSymbol -E 'Symbol::delete_package "My::Foo"; \&My::Foo::foo;' Segmentation fault Bisect: 186a5ba82d5844e9713475c494fcd6682968609f is the first bad commit commit 186a5ba82d5844e9713475c494fcd6682968609f Author: Father Chrysostomos <sprout@cpan.org> Date: Wed Jun 13 22:46:40 2012 -0700 Don’t create pads for sub stubs Two code paths, sv_2cv (for \&name) and get_cvn_flags (for &{"name"}()) were using start_subparse and newATTRSUB to create a subroutine stub, which is what usually happens for Perl subs (with op trees). This resulted in subs with unused pads attached to them, because start_subparse sets up the pad, which must be accessible dur- ing parsing. One code path, gv_init, which (among other things) reifies a GV after a sub declaration (like ‘sub foo;’, which for efficiency doesn’t create a CV), created the subroutine stub itself, without using start_subparse/newATTRSUB. This commit takes the code from gv_init, makes it more generic so it can apply to the other two cases, puts it in a new function called newSTUB, and makes all three locations call it. Now stub creation should be faster and use less memory. Additionally, this commit causes sv_2cv and get_cvn_flags to bypass bug #107370 (glob stringification not round-tripping properly). They used to stringify the GV and pass the string to newATTRSUB (wrapped in an op, of all things) for it to look up the GV again. While bug been fixed, as it was a side effect of sv_2cv triggering bug #107370. -- Father Chrysostomos
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 251b
On Sun Jul 03 18:11:32 2016, sprout wrote: Show quoted text
> From <577975CB.2080006@alexbyk.com>: > > $ perl -MSymbol -E 'Symbol::delete_package "My::Foo"; \&My::Foo::foo;' > Segmentation fault
This bug is now fixed in commit 63aab7ecaa. -- Father Chrysostomos
Download (untitled) / with headers
text/plain 313b
Thank you for filing this report. You have helped make Perl better. With the release today of Perl 5.26.0, this and 210 other issues have been resolved. Perl 5.26.0 may be downloaded via: https://metacpan.org/release/XSAWYERX/perl-5.26.0 If you find that the problem persists, feel free to reopen this ticket.


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org