-
Notifications
You must be signed in to change notification settings - Fork 561
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
BBC: MaxMind-DB-Writer-0.300003 fails since perl 5.31.2 #17245
Comments
Bisect points to commit 7d3bb7a
|
I suspect this is a duplicate of #17114 (MaxMind::DB::Writer depends on Sereal::Decoder) which is an op parent issue, there's a PR against Sereal at Sereal/Sereal#210 |
Applying the Sereal::Decoder fix didn't fix the above. All of the tests assert in a -DDEBUGGING build:
Backtrace:
Maybe Sereal::Encoder?
A similar monkey-fix to Sereal::Encoder didn't prevent the assertion failure in MaxMind::DB::Writer |
Data-Serializer-Sereal-1.05 also fails since perl 5.31.2: http://fast-matrix.cpantesters.org/?dist=Data-Serializer-Sereal%201.05
|
This should be fixed by the more recent releases of Sereal, I will release
4.010 today based on 4.009_003
Yves
…On Tue, 4 Feb 2020, 04:48 Slaven Rezić, ***@***.***> wrote:
Data-Serializer-Sereal-1.05 also fails since perl 5.31.2:
http://fast-matrix.cpantesters.org/?dist=Data-Serializer-Sereal%201.05
The backtrace also stops at Perl_op_linklist, so it might be the same
issue:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000055da7a4b9e97 in Perl_op_linklist ()
(gdb) bt
#0 0x000055da7a4b9e97 in Perl_op_linklist ()
#1 0x000055da7a4cf6a8 in Perl_newATTRSUB_x ()
#2 0x000055da7a509e6b in Perl_yyparse ()
#3 0x000055da7a59eac1 in S_doeval_compile ()
#4 0x000055da7a59fe94 in Perl_pp_require ()
#5 0x000055da7a560893 in Perl_runops_standard ()
#6 0x000055da7a4d6107 in Perl_call_sv ()
#7 0x000055da7a4d87de in Perl_call_list ()
#8 0x000055da7a4b7cbc in S_process_special_blocks.isra.13 ()
#9 0x000055da7a4cf437 in Perl_newATTRSUB_x ()
#10 0x000055da7a4d2d61 in Perl_utilize ()
#11 0x000055da7a509815 in Perl_yyparse ()
#12 0x000055da7a59eac1 in S_doeval_compile ()
#13 0x000055da7a5a9921 in Perl_pp_entereval ()
#14 0x000055da7a560893 in Perl_runops_standard ()
#15 0x000055da7a4d6107 in Perl_call_sv ()
#16 0x000055da7a4d87de in Perl_call_list ()
#17 0x000055da7a4b7cbc in S_process_special_blocks.isra.13 ()
#18 0x000055da7a4cf437 in Perl_newATTRSUB_x ()
#19 0x000055da7a509e6b in Perl_yyparse ()
#20 0x000055da7a4dc7e9 in perl_parse ()
#21 0x000055da7a4b61f6 in main ()
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#17245?email_source=notifications&email_token=AAAZ5R543ONSJMGE6T576YTRBB7ITA5CNFSM4JIL54CKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKVK4EA#issuecomment-581611024>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAZ5R7FDDU5CG6SBVRRZ5DRBB7ITANCNFSM4JIL54CA>
.
|
Also some whitespace tweaks to Decoder.xs so that the two are the same for this piece of logic. In 041e46b I ported changed made by Dave M to the Decoder into the Encoder. Unfortunately in the process of making the ported patch backwards compatible with Perl's lacking op_sibling_splice() I mistakenly put one statement on the wrong side of a #if/#endif, which meant it did not work correctly (even though it compiled fine.) To add insult to injury we weren't testing the custom opcode implementation properly, with this result this went unnoticed until BBC (Blead Breaks CPAN) tests showed that MaxMind-DB-Writer-0.300003 was broken and also revealed that Data-Serializer-Sereal-1.05 was also broken, both pointing at issues with Sereal::Encoder via sereal_encoder_with_object which is implemented as a custom opcode. This patch fixes all of this, and adds tests 190_customop.t to both packages to ensure that this is tested properly moving forward. Thanks to Dave M, Slaven Rezić, Tony Cook, Sergey Aleynikov for playing a role in getting this identified and fixed. This patch should mean that Perl/perl5#17245 can be closed.
Dangit. I was wrong. Dave M posted a patch to Sereal::Decoder that fixed
this issue in the decoder. I then had to modify it to work on older perls
lacking op_sibling_splice(). I then ported it to the Encoder. Unfortunately
during porting I made a mistake and put a crucial line on the wrong side
of an #if/#endif.
To make things worse the tests for Sereal::Encoder and Sereal::Decoder for
the custom opcode stuff was either missing or broken so I didnt notice.
I fixed the problem and released Sereal 4.011 just now. With that version
installed Data::Serealizer::Sereal installs fine. I couldnt verify if the
new release actually fixes MaxMind-DB-Writer-0.300003 as it fails on other
dependencies, specifically Sub::Quote fails test under 5.31.2 but currently
I don't think that is related to Sereal.
FWIW, here is the test fail for Sub::Quote:
Building and testing Sub-Quote-2.006006
cp lib/Sub/Defer.pm blib/lib/Sub/Defer.pm
cp lib/Sub/Quote.pm blib/lib/Sub/Quote.pm
Manifying 2 pod documents
PERL_DL_NONLAZY=1
"/home/yorton/perl5/perlbrew/perls/perl-blead/bin/perl5.31.9"
"-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef
*Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/croak-locations.t ........... ok
t/hints.t ..................... ok
t/inline.t .................... ok
t/leaks.t ..................... ok
t/quotify-5.6.t ............... ok
# Failed test '"\e" utf8: string value maintained'
# at ./t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Failed test '"\e" utf8: string value maintained under utf8'
# at ./t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Looks like you failed 2 tests of 3041.
t/quotify-no-hex.t ............
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/3041 subtests
# Failed test '"\e" utf8: string value maintained'
# at t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Failed test '"\e" utf8: string value maintained under utf8'
# at t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Looks like you failed 2 tests of 3041.
t/quotify.t ...................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/3041 subtests
t/sub-defer-no-subname.t ...... ok
t/sub-defer-threads.t ......... skipped: your perl does not support ithreads
t/sub-defer.t ................. ok
t/sub-quote-threads.t ......... skipped: your perl does not support ithreads
t/sub-quote.t ................. ok
t/subname-none.t .............. ok
t/subname-sub-name-preload.t .. ok
t/subname-sub-name.t .......... ok
t/subname-sub-util.t .......... ok
Test Summary Report
-------------------
t/quotify-no-hex.t (Wstat: 512 Tests: 3041 Failed: 2)
Failed tests: 2350-2351
Non-zero exit status: 2
t/quotify.t (Wstat: 512 Tests: 3041 Failed: 2)
Failed tests: 2350-2351
Non-zero exit status: 2
Files=16, Tests=7726, 2 wallclock secs ( 0.62 usr 0.03 sys + 2.00 cusr
0.10 csys = 2.75 CPU)
Result: FAIL
…On Tue, 4 Feb 2020 at 02:23, demerphq ***@***.***> wrote:
This should be fixed by the more recent releases of Sereal, I will
release 4.010 today based on 4.009_003
Yves
On Tue, 4 Feb 2020, 04:48 Slaven Rezić, ***@***.***> wrote:
> Data-Serializer-Sereal-1.05 also fails since perl 5.31.2:
> http://fast-matrix.cpantesters.org/?dist=Data-Serializer-Sereal%201.05
> The backtrace also stops at Perl_op_linklist, so it might be the same
> issue:
>
> Program terminated with signal SIGSEGV, Segmentation fault.
> #0 0x000055da7a4b9e97 in Perl_op_linklist ()
> (gdb) bt
> #0 0x000055da7a4b9e97 in Perl_op_linklist ()
> #1 0x000055da7a4cf6a8 in Perl_newATTRSUB_x ()
> #2 0x000055da7a509e6b in Perl_yyparse ()
> #3 0x000055da7a59eac1 in S_doeval_compile ()
> #4 0x000055da7a59fe94 in Perl_pp_require ()
> #5 0x000055da7a560893 in Perl_runops_standard ()
> #6 0x000055da7a4d6107 in Perl_call_sv ()
> #7 0x000055da7a4d87de in Perl_call_list ()
> #8 0x000055da7a4b7cbc in S_process_special_blocks.isra.13 ()
> #9 0x000055da7a4cf437 in Perl_newATTRSUB_x ()
> #10 0x000055da7a4d2d61 in Perl_utilize ()
> #11 0x000055da7a509815 in Perl_yyparse ()
> #12 0x000055da7a59eac1 in S_doeval_compile ()
> #13 0x000055da7a5a9921 in Perl_pp_entereval ()
> #14 0x000055da7a560893 in Perl_runops_standard ()
> #15 0x000055da7a4d6107 in Perl_call_sv ()
> #16 0x000055da7a4d87de in Perl_call_list ()
> #17 0x000055da7a4b7cbc in S_process_special_blocks.isra.13 ()
> #18 0x000055da7a4cf437 in Perl_newATTRSUB_x ()
> #19 0x000055da7a509e6b in Perl_yyparse ()
> #20 0x000055da7a4dc7e9 in perl_parse ()
> #21 0x000055da7a4b61f6 in main ()
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <#17245?email_source=notifications&email_token=AAAZ5R543ONSJMGE6T576YTRBB7ITA5CNFSM4JIL54CKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKVK4EA#issuecomment-581611024>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AAAZ5R7FDDU5CG6SBVRRZ5DRBB7ITANCNFSM4JIL54CA>
> .
>
--
perl -Mre=debug -e "/just|another|perl|hacker/"
|
On Tue, 4 Feb 2020 at 06:25, demerphq ***@***.***> wrote:
Dangit. I was wrong. Dave M posted a patch to Sereal::Decoder that fixed
this issue in the decoder. I then had to modify it to work on older perls
lacking op_sibling_splice(). I then ported it to the Encoder. Unfortunately
during porting I made a mistake and put a crucial line on the wrong side
of an #if/#endif.
To make things worse the tests for Sereal::Encoder and Sereal::Decoder for
the custom opcode stuff was either missing or broken so I didnt notice.
I fixed the problem and released Sereal 4.011 just now. With that version
installed Data::Serealizer::Sereal installs fine. I couldnt verify if the
new release actually fixes MaxMind-DB-Writer-0.300003 as it fails on other
dependencies, specifically Sub::Quote fails test under 5.31.2 but currently
I don't think that is related to Sereal.
FWIW, here is the test fail for Sub::Quote:
Building and testing Sub-Quote-2.006006
cp lib/Sub/Defer.pm blib/lib/Sub/Defer.pm
cp lib/Sub/Quote.pm blib/lib/Sub/Quote.pm
Manifying 2 pod documents
PERL_DL_NONLAZY=1
"/home/yorton/perl5/perlbrew/perls/perl-blead/bin/perl5.31.9"
"-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef
*Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/croak-locations.t ........... ok
t/hints.t ..................... ok
t/inline.t .................... ok
t/leaks.t ..................... ok
t/quotify-5.6.t ............... ok
# Failed test '"\e" utf8: string value maintained'
# at ./t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Failed test '"\e" utf8: string value maintained under utf8'
# at ./t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Looks like you failed 2 tests of 3041.
t/quotify-no-hex.t ............
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/3041 subtests
# Failed test '"\e" utf8: string value maintained'
# at t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Failed test '"\e" utf8: string value maintained under utf8'
# at t/quotify.t line 245.
# got: '\e'
# expected: ' '
# Looks like you failed 2 tests of 3041.
I made an attempt to debug this, instrumented quotify() to see what
codepath it took and I got the following:
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perlbrew use 5.18.4; perl
Makefile.PL; make
Generating a Unix-style Makefile
Writing Makefile for Sub::Quote
Writing MYMETA.yml and MYMETA.json
Skip blib/lib/Sub/Quote.pm (unchanged)
Skip blib/lib/Sub/Defer.pm (unchanged)
Manifying 2 pod documents
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 0
5.018004
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\033"
SV = PV(0xd71fd0) at 0xd924b8
REFCNT = 1
FLAGS = (PADMY,POK,pPOK)
PV = 0xd93880 "\33"\0
CUR = 1
LEN = 16
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 1
5.018004
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\x{1b}"
SV = PV(0x1a01fd0) at 0x1a224b8
REFCNT = 1
FLAGS = (PADMY,POK,pPOK,UTF8)
PV = 0x1a23880 "\33"\0 [UTF8 "\x{1b}"]
CUR = 1
LEN = 16
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perlbrew use blead; perl
Makefile.PL; make
Generating a Unix-style Makefile
Writing Makefile for Sub::Quote
Writing MYMETA.yml and MYMETA.json
Skip blib/lib/Sub/Quote.pm (unchanged)
Skip blib/lib/Sub/Defer.pm (unchanged)
Manifying 2 pod documents
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 0
5.031009
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\033"
SV = PV(0x5582f6c85fd0) at 0x5582f6cc4b08
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x5582f6ed2a40 "\33"\0
CUR = 1
LEN = 10
COW_REFCNT = 1
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 1
5.031009
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\\e"
SV = PV(0x5597a9496fd0) at 0x5597a94fa4f8
REFCNT = 1
FLAGS = (POK,pPOK,UTF8)
PV = 0x5597a94c5090 "\33"\0 [UTF8 "\e"]
CUR = 1
LEN = 10
Which says to me that B::perlstring has been changed, or regressed from
what it used to do with a utf8-on "\e" character. It used to output
"\x{1b}" and now it outputs "\\e".
Yves
…--
perl -Mre=debug -e "/just|another|perl|hacker/"
|
On Tue, 4 Feb 2020 at 07:50, demerphq ***@***.***> wrote:
On Tue, 4 Feb 2020 at 06:25, demerphq ***@***.***> wrote:
> Dangit. I was wrong. Dave M posted a patch to Sereal::Decoder that fixed
> this issue in the decoder. I then had to modify it to work on older perls
> lacking op_sibling_splice(). I then ported it to the Encoder. Unfortunately
> during porting I made a mistake and put a crucial line on the wrong side
> of an #if/#endif.
>
> To make things worse the tests for Sereal::Encoder and Sereal::Decoder
> for the custom opcode stuff was either missing or broken so I didnt notice.
>
> I fixed the problem and released Sereal 4.011 just now. With that version
> installed Data::Serealizer::Sereal installs fine. I couldnt verify if the
> new release actually fixes MaxMind-DB-Writer-0.300003 as it fails on other
> dependencies, specifically Sub::Quote fails test under 5.31.2 but currently
> I don't think that is related to Sereal.
>
> FWIW, here is the test fail for Sub::Quote:
>
> Building and testing Sub-Quote-2.006006
> cp lib/Sub/Defer.pm blib/lib/Sub/Defer.pm
> cp lib/Sub/Quote.pm blib/lib/Sub/Quote.pm
> Manifying 2 pod documents
> PERL_DL_NONLAZY=1
> "/home/yorton/perl5/perlbrew/perls/perl-blead/bin/perl5.31.9"
> "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef
> *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
> t/croak-locations.t ........... ok
> t/hints.t ..................... ok
> t/inline.t .................... ok
> t/leaks.t ..................... ok
> t/quotify-5.6.t ............... ok
>
> # Failed test '"\e" utf8: string value maintained'
> # at ./t/quotify.t line 245.
> # got: '\e'
> # expected: ' '
>
> # Failed test '"\e" utf8: string value maintained under utf8'
> # at ./t/quotify.t line 245.
> # got: '\e'
> # expected: ' '
> # Looks like you failed 2 tests of 3041.
> t/quotify-no-hex.t ............
> Dubious, test returned 2 (wstat 512, 0x200)
> Failed 2/3041 subtests
>
> # Failed test '"\e" utf8: string value maintained'
> # at t/quotify.t line 245.
> # got: '\e'
> # expected: ' '
>
> # Failed test '"\e" utf8: string value maintained under utf8'
> # at t/quotify.t line 245.
> # got: '\e'
> # expected: ' '
> # Looks like you failed 2 tests of 3041.
>
I made an attempt to debug this, instrumented quotify() to see what
codepath it took and I got the following:
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perlbrew use 5.18.4;
perl Makefile.PL; make
Generating a Unix-style Makefile
Writing Makefile for Sub::Quote
Writing MYMETA.yml and MYMETA.json
Skip blib/lib/Sub/Quote.pm (unchanged)
Skip blib/lib/Sub/Defer.pm (unchanged)
Manifying 2 pod documents
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 0
5.018004
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\033"
SV = PV(0xd71fd0) at 0xd924b8
REFCNT = 1
FLAGS = (PADMY,POK,pPOK)
PV = 0xd93880 "\33"\0
CUR = 1
LEN = 16
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 1
5.018004
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\x{1b}"
SV = PV(0x1a01fd0) at 0x1a224b8
REFCNT = 1
FLAGS = (PADMY,POK,pPOK,UTF8)
PV = 0x1a23880 "\33"\0 [UTF8 "\x{1b}"]
CUR = 1
LEN = 16
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perlbrew use blead; perl
Makefile.PL; make
Generating a Unix-style Makefile
Writing Makefile for Sub::Quote
Writing MYMETA.yml and MYMETA.json
Skip blib/lib/Sub/Quote.pm (unchanged)
Skip blib/lib/Sub/Defer.pm (unchanged)
Manifying 2 pod documents
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 0
5.031009
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\033"
SV = PV(0x5582f6c85fd0) at 0x5582f6cc4b08
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x5582f6ed2a40 "\33"\0
CUR = 1
LEN = 10
COW_REFCNT = 1
~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
-MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
utf8::upgrade($s); print quotify($s); Dump($s)' 1
5.031009
using perlstring at
/home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
line 126.
"\\e"
SV = PV(0x5597a9496fd0) at 0x5597a94fa4f8
REFCNT = 1
FLAGS = (POK,pPOK,UTF8)
PV = 0x5597a94c5090 "\33"\0 [UTF8 "\e"]
CUR = 1
LEN = 10
Which says to me that B::perlstring has been changed, or regressed from
what it used to do with a utf8-on "\e" character. It used to output
"\x{1b}" and now it outputs "\\e".
This is almost certainly due to:
daf6caf
I think Sub::Quote needs a test patch.
Yves
…--
perl -Mre=debug -e "/just|another|perl|hacker/"
|
On Tue, 4 Feb 2020 at 07:54, demerphq ***@***.***> wrote:
On Tue, 4 Feb 2020 at 07:50, demerphq ***@***.***> wrote:
> On Tue, 4 Feb 2020 at 06:25, demerphq ***@***.***> wrote:
>
>> Dangit. I was wrong. Dave M posted a patch to Sereal::Decoder that
>> fixed this issue in the decoder. I then had to modify it to work on older
>> perls lacking op_sibling_splice(). I then ported it to the Encoder.
>> Unfortunately during porting I made a mistake and put a crucial line on
>> the wrong side of an #if/#endif.
>>
>> To make things worse the tests for Sereal::Encoder and Sereal::Decoder
>> for the custom opcode stuff was either missing or broken so I didnt notice.
>>
>> I fixed the problem and released Sereal 4.011 just now. With that
>> version installed Data::Serealizer::Sereal installs fine. I couldnt verify
>> if the new release actually fixes MaxMind-DB-Writer-0.300003 as it fails on
>> other dependencies, specifically Sub::Quote fails test under 5.31.2 but
>> currently I don't think that is related to Sereal.
>>
>> FWIW, here is the test fail for Sub::Quote:
>>
>> Building and testing Sub-Quote-2.006006
>> cp lib/Sub/Defer.pm blib/lib/Sub/Defer.pm
>> cp lib/Sub/Quote.pm blib/lib/Sub/Quote.pm
>> Manifying 2 pod documents
>> PERL_DL_NONLAZY=1
>> "/home/yorton/perl5/perlbrew/perls/perl-blead/bin/perl5.31.9"
>> "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef
>> *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
>> t/croak-locations.t ........... ok
>> t/hints.t ..................... ok
>> t/inline.t .................... ok
>> t/leaks.t ..................... ok
>> t/quotify-5.6.t ............... ok
>>
>> # Failed test '"\e" utf8: string value maintained'
>> # at ./t/quotify.t line 245.
>> # got: '\e'
>> # expected: ' '
>>
>> # Failed test '"\e" utf8: string value maintained under utf8'
>> # at ./t/quotify.t line 245.
>> # got: '\e'
>> # expected: ' '
>> # Looks like you failed 2 tests of 3041.
>> t/quotify-no-hex.t ............
>> Dubious, test returned 2 (wstat 512, 0x200)
>> Failed 2/3041 subtests
>>
>> # Failed test '"\e" utf8: string value maintained'
>> # at t/quotify.t line 245.
>> # got: '\e'
>> # expected: ' '
>>
>> # Failed test '"\e" utf8: string value maintained under utf8'
>> # at t/quotify.t line 245.
>> # got: '\e'
>> # expected: ' '
>> # Looks like you failed 2 tests of 3041.
>>
>
> I made an attempt to debug this, instrumented quotify() to see what
> codepath it took and I got the following:
>
> ~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perlbrew use 5.18.4;
> perl Makefile.PL; make
> Generating a Unix-style Makefile
> Writing Makefile for Sub::Quote
> Writing MYMETA.yml and MYMETA.json
> Skip blib/lib/Sub/Quote.pm (unchanged)
> Skip blib/lib/Sub/Defer.pm (unchanged)
> Manifying 2 pod documents
> ~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
> -MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
> utf8::upgrade($s); print quotify($s); Dump($s)' 0
> 5.018004
> using perlstring at
> /home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
> line 126.
> "\033"
> SV = PV(0xd71fd0) at 0xd924b8
> REFCNT = 1
> FLAGS = (PADMY,POK,pPOK)
> PV = 0xd93880 "\33"\0
> CUR = 1
> LEN = 16
> ~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
> -MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
> utf8::upgrade($s); print quotify($s); Dump($s)' 1
> 5.018004
> using perlstring at
> /home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
> line 126.
> "\x{1b}"
> SV = PV(0x1a01fd0) at 0x1a224b8
> REFCNT = 1
> FLAGS = (PADMY,POK,pPOK,UTF8)
> PV = 0x1a23880 "\33"\0 [UTF8 "\x{1b}"]
> CUR = 1
> LEN = 16
> ~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perlbrew use blead;
> perl Makefile.PL; make
> Generating a Unix-style Makefile
> Writing Makefile for Sub::Quote
> Writing MYMETA.yml and MYMETA.json
> Skip blib/lib/Sub/Quote.pm (unchanged)
> Skip blib/lib/Sub/Defer.pm (unchanged)
> Manifying 2 pod documents
> ~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
> -MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
> utf8::upgrade($s); print quotify($s); Dump($s)' 0
> 5.031009
> using perlstring at
> /home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
> line 126.
> "\033"
> SV = PV(0x5582f6c85fd0) at 0x5582f6cc4b08
> REFCNT = 1
> FLAGS = (POK,IsCOW,pPOK)
> PV = 0x5582f6ed2a40 "\33"\0
> CUR = 1
> LEN = 10
> COW_REFCNT = 1
> ~/.cpanm/work/1580795739.2461/Sub-Quote-2.006006$ perl -Mblib
> -MSub::Quote=quotify -MDevel::Peek -le'print $]; my $s= "\e"; $ARGV[0] &&
> utf8::upgrade($s); print quotify($s); Dump($s)' 1
> 5.031009
> using perlstring at
> /home/yorton/.cpanm/work/1580795739.2461/Sub-Quote-2.006006/blib/lib/Sub/Quote.pm
> line 126.
> "\\e"
> SV = PV(0x5597a9496fd0) at 0x5597a94fa4f8
> REFCNT = 1
> FLAGS = (POK,pPOK,UTF8)
> PV = 0x5597a94c5090 "\33"\0 [UTF8 "\e"]
> CUR = 1
> LEN = 10
>
> Which says to me that B::perlstring has been changed, or regressed from
> what it used to do with a utf8-on "\e" character. It used to output
> "\x{1b}" and now it outputs "\\e".
>
This is almost certainly due to:
daf6caf
I think Sub::Quote needs a test patch.
Nope, this is actually a bug in Perl. I have created a new ticket to get it
fixed.
#17526
The key part is that the backslash is escaped itself, which means it wont
round trip back to "\e".
Yves
…--
perl -Mre=debug -e "/just|another|perl|hacker/"
|
Description
Since perl 5.31.2 all tests in the MaxMind-DB-Writer-0.300003 test suite segfault (@maxmind: FYI).
Overview of test reports: http://fast-matrix.cpantesters.org/?dist=MaxMind-DB-Writer%200.300003
A gdb backtrace for
perl5.31.5 -Mblib t/MaxMind/DB/Writer/Serializer-deduplication.t
(sorry, perl was not built with -g):The text was updated successfully, but these errors were encountered: