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

Owner: Nobody
Requestors: jkeenan [at] pobox.com
Cc:
AdminCc:

Operating System: (no value)
PatchStatus: (no value)
Severity: low
Type: BBC
Perl Version: 5.27.3
Fixed In: (no value)



From: James E Keenan <jkeenan [...] pobox.com>
Subject: Blead breaks Sereal-Encoder-3.015
To: perlbug [...] perl.org
Date: Mon, 7 Aug 2017 09:16:08 -0400
CC: Carlos Guevara <carlos [...] carlosguevara.com>
Download (untitled) / with headers
text/plain 427b
A recent commit to Perl 5 blead has broken CPAN distribution Sereal-Encoder-3.015. This was called to my attention by Carlos Guevara; see, e.g., http://www.cpantesters.org/cpan/report/c7f78c0e-797f-11e7-82e1-3ed0897f352c. Errors have been observed at commit fde84d2e7, but the offending commit has not yet been identified. The errors are too extensive to reproduce here; see link above. Thank you very much. Jim Keenan
Download perl_V.txt
text/plain 3.1k

Message body is not shown because sender requested not to inline it.

From: demerphq <demerphq [...] gmail.com>
Subject: Re: [perl #131852] Blead breaks Sereal-Encoder-3.015
To: Perl5 Porteros <perl5-porters [...] perl.org>
Date: Mon, 7 Aug 2017 15:22:54 +0200
CC: "bugs-bitbucket [...] rt.perl.org" <bugs-bitbucket [...] rt.perl.org>
Download (untitled) / with headers
text/plain 867b
Thanks. I will investigate eventually if noone else does. Yves On 7 August 2017 at 15:16, James E Keenan <perlbug-followup@perl.org> wrote: Show quoted text
> # New Ticket Created by James E Keenan > # Please include the string: [perl #131852] > # in the subject line of all future correspondence about this issue. > # <URL: https://rt.perl.org/Ticket/Display.html?id=131852 > > > > A recent commit to Perl 5 blead has broken CPAN distribution > Sereal-Encoder-3.015. > > This was called to my attention by Carlos Guevara; see, e.g., > http://www.cpantesters.org/cpan/report/c7f78c0e-797f-11e7-82e1-3ed0897f352c. > > Errors have been observed at commit fde84d2e7, but the offending commit > has not yet been identified. The errors are too extensive to reproduce > here; see link above. > > Thank you very much. > Jim Keenan
-- perl -Mre=debug -e "/just|another|perl|hacker/"
CC: Perl5 Porteros <perl5-porters [...] perl.org>, "bugs-bitbucket [...] rt.perl.org" <bugs-bitbucket [...] rt.perl.org>
To: demerphq <demerphq [...] gmail.com>
Date: Mon, 7 Aug 2017 15:46:14 +0100
Subject: Re: [perl #131852] Blead breaks Sereal-Encoder-3.015
From: Dave Mitchell <davem [...] iabyn.com>
Download (untitled) / with headers
text/plain 2.1k
On Mon, Aug 07, 2017 at 03:22:54PM +0200, demerphq wrote: Show quoted text
> Thanks. I will investigate eventually if noone else does.
The first to fail is 010_desperate.t with the first failure being (ignore the test numbers - this is from a stripped down script): ok 1 - (plain) defined: blessed regexp with reuse not ok 2 - (plain) correct: blessed regexp with reuse # Failed test '(plain) correct: blessed regexp with reuse' # at /tmp/010_desperate.t line 68. # got: '"=\363rl\3\0B,cbar(\352(?^ix:foo))\b"' # expected: '"=\363rl\3\0B,cbar(\261cfoobix)\b"' 1..2 Which is trying to serialise this: do { my $qr= bless qr/foo/ix,"bar"; [ $qr, $qr ] }, I don't know much about the internals of Sereal::Encoder, but I would hazard a guess that the change is due to the fact that REGEXP SVs now have the POK flag set again after a recent commit of mine. (They used to up until 5.18, then didn't due to an issue with PVLV-as-REGEXPs, and now do again). This code: my $qr= bless qr/foo/ix,"bar"; use Devel::Peek; Dump $qr; shows the following main difference: - FLAGS = (OBJECT,FAKE) + FLAGS = (OBJECT,POK,FAKE,pPOK) REGEXPs have also changed, with various parts the SV stored as: Previously: if SVt_REGEXP: sv_any: the 'struct regexp*' pointer sv_u: the 'struct regexp*' pointer sv_any->xpv_len_u.xpvlenu_pv: the string "(?^ix:foo))" if SVt_PVLV: sv_any: the XPVLV* pointer sv_u: the 'struct regexp*' pointer sv_any->xpv_len_u.xpvlenu_pv: the string "(?^ix:foo))" Now: if SVt_REGEXP: sv_any: the 'struct regexp*' pointer sv_u: the string "(?^ix:foo))" if SVt_PVLV: sv_any: the XPVLV* pointer sv_any->xpv_len_u.xpvlenu_rx: the 'struct regexp*' pointer sv_u: the string "(?^ix:foo))" Now the ReANY() macro includes a test of sv->sv_type == SVt_PVLV and returns sv_any or sv_any->xpv_len_u.xpvlenu_rx accordingly. -- "Procrastination grows to fill the available time" -- Mitchell's corollary to Parkinson's Law
RT-Send-CC: perl5-porters [...] perl.org
On Mon, 07 Aug 2017 13:23:07 GMT, demerphq wrote: Show quoted text
> Thanks. I will investigate eventually if noone else does. > > Yves > > On 7 August 2017 at 15:16, James E Keenan <perlbug-followup@perl.org> > wrote:
> > # New Ticket Created by James E Keenan > > # Please include the string: [perl #131852] > > # in the subject line of all future correspondence about this issue. > > # <URL: https://rt.perl.org/Ticket/Display.html?id=131852 > > > > > > > A recent commit to Perl 5 blead has broken CPAN distribution > > Sereal-Encoder-3.015. > > > > This was called to my attention by Carlos Guevara; see, e.g., > > http://www.cpantesters.org/cpan/report/c7f78c0e-797f-11e7-82e1- > > 3ed0897f352c. > > > > Errors have been observed at commit fde84d2e7, but the offending > > commit > > has not yet been identified. The errors are too extensive to > > reproduce > > here; see link above. > > > > Thank you very much. > > Jim Keenan
Still present in perl 5 blead as of today (125cf574559a697ab2dd31760c79d7c98f3479c4) -- James E Keenan (jkeenan@cpan.org)
From: demerphq <demerphq [...] gmail.com>
To: Perl RT Bug Tracker <perlbug-followup [...] perl.org>
CC: Perl5 Porteros <perl5-porters [...] perl.org>
Subject: Re: [perl #131852] Blead breaks Sereal-Encoder-3.015
Date: Sat, 11 Nov 2017 10:36:29 +0100
Download (untitled) / with headers
text/plain 1.1k
On 1 November 2017 at 17:50, James E Keenan via RT <perlbug-followup@perl.org> wrote: Show quoted text
> Still present in perl 5 blead as of today (125cf574559a697ab2dd31760c79d7c98f3479c4)
fixed in Sereal 4.002 We now have this logic: # if ( PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION >= 3) ) /* Commit df6b4bd56551f2d39f7c0019c23f27181d8c39c4 * changed the behavior mentioned below, so that the POK flag is on again. Sigh. * So this branch is a deliberate NO-OP, it just makes the conditions easier to read.*/ # elif ( PERL_VERSION > 17 || (PERL_VERSION == 17 && PERL_SUBVERSION >= 6) ) /* With commit 8d919b0a35f2b57a6bed2f8355b25b19ac5ad0c5 (perl.git) and * release 5.17.6, regular expression are no longer SvPOK (IOW are no longer * considered to be containing a string). * This breaks some of the REGEXP detection logic in srl_dump_sv, so * we need yet another CPP define. */ # define REGEXP_NO_LONGER_POK # endif The amount of macro goo to write backwards portable Regexp code is pretty high, that is part of a larger block of checks that amounts to about 40 lines. :-) Yves -- perl -Mre=debug -e "/just|another|perl|hacker/"
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1.3k
On Sat, 11 Nov 2017 09:36:41 GMT, demerphq wrote: Show quoted text
> On 1 November 2017 at 17:50, James E Keenan via RT > <perlbug-followup@perl.org> wrote:
> > Still present in perl 5 blead as of today > > (125cf574559a697ab2dd31760c79d7c98f3479c4)
> > fixed in Sereal 4.002 > > We now have this logic: > > # if ( PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION
> >= 3) )
> /* Commit df6b4bd56551f2d39f7c0019c23f27181d8c39c4 > * changed the behavior mentioned below, so that the POK flag is > on again. Sigh. > * So this branch is a deliberate NO-OP, it just makes the > conditions easier to read.*/ > # elif ( PERL_VERSION > 17 || (PERL_VERSION == 17 && > PERL_SUBVERSION >= 6) ) > /* With commit 8d919b0a35f2b57a6bed2f8355b25b19ac5ad0c5 > (perl.git) and > * release 5.17.6, regular expression are no longer SvPOK (IOW > are no longer > * considered to be containing a string). > * This breaks some of the REGEXP detection logic in srl_dump_sv, > so > * we need yet another CPP define. */ > # define REGEXP_NO_LONGER_POK > # endif > > > The amount of macro goo to write backwards portable Regexp code is > pretty high, that is part of a larger > block of checks that amounts to about 40 lines. :-) > > Yves
Confirmed as of blead commit 3d2ba98. Marking ticket Resolved. Thank you very much. -- James E Keenan (jkeenan@cpan.org)


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