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

Owner: Nobody
Requestors: brian.carpenter [at] gmail.com
Cc:
AdminCc:

Operating System: (no value)
PatchStatus: (no value)
Severity: low
Type: unknown
Perl Version: (no value)
Fixed In: 5.25.7



Date: Tue, 1 Nov 2016 00:25:45 -0500
From: "Brian 'geeknik' Carpenter" <brian.carpenter [...] gmail.com>
To: perlbug [...] perl.org
Subject: pp_hot.c:1167: void S_aassign_copy_common(SV **, SV **, SV **, SV **, _Bool): Assertion `!(((svl)->sv_flags & (0x08000000|0x00010000)) && ((svl)==&PL_sv_undef || (svl)==&PL_sv_yes || (svl)==&PL_sv_no || (svl)==&PL_sv_placeholder))' failed
Download (untitled) / with headers
text/plain 342b
Triggered in v5.25.7 (v5.25.6-134-g11327fa).

perl -e '($0,$_,$0)=(/()()/,0)for 0gt 0'

perl: pp_hot.c:1167: void S_aassign_copy_common(SV **, SV **, SV **, SV **, _Bool): Assertion `!(((svl)->sv_flags & (0x08000000|0x00010000)) && ((svl)==&PL_sv_undef || (svl)==&PL_sv_yes || (svl)==&PL_sv_no || (svl)==&PL_sv_placeholder))' failed.
Aborted
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 538b
On Mon, 31 Oct 2016 22:26:45 -0700, brian.carpenter@gmail.com wrote: Show quoted text
> Triggered in v5.25.7 (v5.25.6-134-g11327fa). > > perl -e '($0,$_,$0)=(/()()/,0)for 0gt 0' > > perl: pp_hot.c:1167: void S_aassign_copy_common(SV **, SV **, SV **, SV **, > _Bool): Assertion `!(((svl)->sv_flags & (0x08000000|0x00010000)) && > ((svl)==&PL_sv_undef || (svl)==&PL_sv_yes || (svl)==&PL_sv_no || > (svl)==&PL_sv_placeholder))' failed. > Aborted
Simplifies to: perl -e '($_,$0)=(1,0)for 0gt 0' I'm not sure that particular assertion is needed. Tony
CC: perl5-porters [...] perl.org
Date: Wed, 9 Nov 2016 09:34:07 +0000
To: Tony Cook via RT <perlbug-followup [...] perl.org>
Subject: Re: [perl #129991] pp_hot.c:1167: void S_aassign_copy_common(SV **, SV **, SV **, SV **, _Bool): Assertion `!(((svl)->sv_flags & (0x08000000|0x00010000)) && ((svl)==&PL_sv_undef || (svl)==&PL_sv_yes || (svl)==&PL_sv_no
From: Dave Mitchell <davem [...] iabyn.com>
Download (untitled) / with headers
text/plain 1.5k
On Mon, Nov 07, 2016 at 09:09:27PM -0800, Tony Cook via RT wrote: Show quoted text
> On Mon, 31 Oct 2016 22:26:45 -0700, brian.carpenter@gmail.com wrote:
> > Triggered in v5.25.7 (v5.25.6-134-g11327fa). > > > > perl -e '($0,$_,$0)=(/()()/,0)for 0gt 0' > > > > perl: pp_hot.c:1167: void S_aassign_copy_common(SV **, SV **, SV **, SV **, > > _Bool): Assertion `!(((svl)->sv_flags & (0x08000000|0x00010000)) && > > ((svl)==&PL_sv_undef || (svl)==&PL_sv_yes || (svl)==&PL_sv_no || > > (svl)==&PL_sv_placeholder))' failed. > > Aborted
> > Simplifies to: > > perl -e '($_,$0)=(1,0)for 0gt 0' > > I'm not sure that particular assertion is needed.
It was there to see if I could get away with only having to check for PL_sv_undef on the LHS, not PL_sv_yes etc too. Turns out I need to check for the other immortals too, which is a bit more expensive. Now fixed with v5.25.6-184-g94a5f65. While looking at that, I noticed that RO immortals on the LHS are silently skipped rather than croaking; this contrasts with scalar assign: $ ./perl -e'$_ = 1 for 0 ge 0' Modification of a read-only value attempted at -e line 1. $ ./perl -e'($_) = (1) for 0 ge 0' $ I wonder whether this is deliberate / correct. The 5.000 src does indeed have this line in pp_aassign(): if (sv != &sv_undef && sv != &sv_yes && sv != &sv_no) DIE(no_modify); So perhaps I should let sleeping dogs lie. -- More than any other time in history, mankind faces a crossroads. One path leads to despair and utter hopelessness. The other, to total extinction. Let us pray we have the wisdom to choose correctly. -- Woody Allen
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