Skip Menu |
Report information
Id: 131852
Status: open
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


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