-
Notifications
You must be signed in to change notification settings - Fork 550
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
5.20.x regression in "state" under PERL_NO_COW #14175
Comments
From @arcNiels Larson reports that Perl 5.20 compiled with -DPERL_NO_COW has a regression with state variables: they get reset to undef when accessed: sub no_PERL_NO_COW_regression { Bisection reveals that the bug was introduced in 9ffd39a (between 5.19.6 and 5.19.7), and fixed in c068384 (between 5.21.4 and 5.21.5). I'm creating this ticket so that (a) a regression test can mention it, and (b) the meta-ticket for 5.20.2 can depend on it. -- |
From [Unknown Contact. See original ticket]Commit c4a33ec contains a regression test for this bug. -- |
@arc - Status changed from 'new' to 'open' |
From @cpansproutOn Tue Oct 21 10:36:51 2014, arc wrote:
With a COW build: $ perl5.20.1 -l -E 'sub { state $s; $s = "foo"x500; my $c = $s; print $s//"undef"}->()' SvPADTMP and SvPADSTALE used to share a bit, so (sflags & (SVs_PADTMP|SVf_READONLY|SVf_PROTECT|SVf_IsCOW)) gave the wrong answer. Putting SVs_PADMY in the list of flags to check will fix the bug for 5.20. However, there is also a problem with the way CHECK_COWBUF_THRESHOLD is defined. Here we use it outside #ifdef PERL_NEW_COPY_ON_WRITE, and when COW is not enabled it is not defined properly. So we need to change the COW constants to be defined regardless of whether COW is enabled, since they are also used for targ swiping. 5.20 without COW is slower than it needs to be, because targ swiping happens far too much, resulting in many malloc calls. I’ll write a separate maint patch on a branch. -- Father Chrysostomos |
From @cpansproutOn Tue Oct 21 16:19:36 2014, sprout wrote:
Please review (and maybe even vote on backporting) the sprout/maint-5.20-123029 branch, which contains two fixes: 1) Don’t swipe short PADTMP buffers when COW is disabled. That was -- Father Chrysostomos |
From @arcThis looks well-formed to me for a maint change, though I don't claim to entirely understand that part of the core. With that caveat aside, given that it fixes this regression in 5.20, I vote +1 to backporting it to maint. Thanks, Father Chrysostomos. -- |
From [Unknown Contact. See original ticket]This looks well-formed to me for a maint change, though I don't claim to entirely understand that part of the core. With that caveat aside, given that it fixes this regression in 5.20, I vote +1 to backporting it to maint. Thanks, Father Chrysostomos. -- |
From @jkeenanOn 10/21/2014 11:28 PM, Father Chrysostomos via RT wrote:
Is it possible to smoke-test a backport?
|
From @arcJames E Keenan via RT <perlbug-followup@perl.org> wrote:
I can't think of a reason why this wouldn't work, to create a git fetch && git push camel -- |
From @cpansproutOn Wed Oct 22 05:30:41 2014, arc wrote:
I’ve already pushed a smoke-me branch. I’m just waiting for results. -- Father Chrysostomos |
From @cpansproutOn Wed Oct 22 06:03:56 2014, sprout wrote:
I’m seeing these failures on Windows on the smoke-me/maint-5.20-123029 branch, but I don’t think they are related: Failures: (common-args) none [default] -DDEBUGGING -Duseithreads -- Father Chrysostomos |
@steve-m-hay - Status changed from 'open' to 'pending release' |
From @khwilliamsonThanks for submitting this ticket The issue should be resolved with the release today of Perl v5.22. If you find that the problem persists, feel free to reopen this ticket -- |
@khwilliamson - Status changed from 'pending release' to 'resolved' |
Migrated from rt.perl.org#123029 (status was 'resolved')
Searchable as RT123029$
The text was updated successfully, but these errors were encountered: