Skip Menu |

This queue is for tickets about the MarpaX-Languages-M4 CPAN distribution.

Report information
The Basics
Id: 122641
Status: resolved
Priority: 0/
Queue: MarpaX-Languages-M4

People
Owner: Nobody in particular
Requestors: khw [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



This distribution is failing tests because of changes to Perl 5.27. Perl has deprecated use of code points that are not in the range 0..IV_MAX (which is the highest signed integer on the machine) for 2 release cycles, and 5.27 makes their use fatal. The first public release in which they will be fatal is 5.28, due in May of 2018. Debugging shows that the forbidden code points are coming from re::engine::GNU. Here's a backtrace: (gdb) bt #0 Perl_utf8n_to_uvchr_error (s=0x7fffffffc307 "", curlen=13, retlen=0x0, flags=0, errors=0x7fffffffc244) at utf8.c:1630 #1 0x000055555587f9e8 in Perl__force_out_malformed_utf8_message (p=0x7fffffffc2fa "\377\200\217\277\277\277\277\277\277\277\277\276\200", e=0x7fffffffc308 "", flags=0, die_here=true) at utf8.c:90 #2 0x000055555588476b in S_is_utf8_common_with_len (p=0x7fffffffc2fa "\377\200\217\277\277\277\277\277\277\277\277\276\200", e=0x7fffffffc308 "", swash=0x555555be0860 <PL_utf8_swash_ptrs>, swashname=0x5555559994a0 "XPosixWord", invlist=0x555555be2f50) at utf8.c:2816 #3 0x00005555558852dc in Perl__is_utf8_FOO_with_len (classnum=0 '\000', p=0x7fffffffc2fa "\377\200\217\277\277\277\277\277\277\277\277\276\200", e=0x7fffffffc308 "") at utf8.c:2975 #4 0x000055555588333d in Perl__is_uni_FOO (classnum=0 '\000', c=18446744073709551488) at utf8.c:2460 #5 0x00007fffeec0d10a in rpl_Perl_isalnum (c=18446744073709551488) at regex_internal.h:1101 #6 0x00007fffeec19fd5 in build_charclass (trans=0x0, sbcset=0x55555add9250, mbcset=0x55555aeb4fe0, char_class_alloc=0x7fffffffc3f8, class_name=0x7fffeec2aa84 "alnum", syntax=0) at regcomp.c:3576 #7 0x00007fffeec1a903 in build_charclass_op (dfa=0x55555aebe080, trans=0x0, class_name=0x7fffeec2aa84 "alnum", extra=0x7fffeec2b0c4 "_", non_match=false, err=0x7fffffffc624) at regcomp.c:3645 #8 0x00007fffeec183a8 in parse_expression (regexp=0x7fffffffc630, preg=0x55555ae5a278, token=0x7fffffffc5c0, syntax=64, nest=0, err=0x7fffffffc624) at regcomp.c:2428 #9 0x00007fffeec17be0 in parse_branch (regexp=0x7fffffffc630, preg=0x55555ae5a278, token=0x7fffffffc5c0, syntax=64, nest=0, err=0x7fffffffc624) at regcomp.c:2237 #10 0x00007fffeec179fc in parse_reg_exp (regexp=0x7fffffffc630, preg=0x55555ae5a278, token=0x7fffffffc5c0, syntax=64, nest=0, err=0x7fffffffc624) at regcomp.c:2189 #11 0x00007fffeec178da in parse (regexp=0x7fffffffc630, preg=0x55555ae5a278, syntax=64, err=0x7fffffffc624) at regcomp.c:2158 #12 0x00007fffeec14563 in re_compile_internal (preg=0x55555ae5a278, pattern=0x55555aea1e80 "\\<[a-z]\\w+", length=10, syntax=64, is_utf8=true) at regcomp.c:813 #13 0x00007fffeec2645f in GNU_comp (pattern=0x555558cf3000, flags=259) at GNU.xs:439 #14 0x0000555555674dd8 in Perl_re_op_compile (patternp=0x55555a24db30, pat_count=1, expr=0x0, eng=0x7fffeee2f340 <engine_GNU>, old_re=0x55555ac02138, is_bare_re=0x7fffffffd02a, orig_rx_flags=259, pm_flags=1073742083) at regcomp.c:7016 #15 0x00005555557de49e in Perl_pp_regcomp () at pp_ctl.c:108 #16 0x00005555556cdbdf in Perl_runops_debug () at dump.c:2465 #17 0x00005555555c8e45 in S_run_body (oldscope=1) at perl.c:2543 #18 0x00005555555c83fd in perl_run (my_perl=0x555555be1010) at perl.c:2471 #19 0x0000555555580a9e in main (argc=3, argv=0x7fffffffd418, env=0x7fffffffd438) at perlmain.c:123 Stack position #5 0x00007fffeec0d10a in rpl_Perl_isalnum (c=18446744073709551488) indicates that the re::engine function rpl_Perl_isalnum() is being called with a code point 0xFFFFFFFFFFFFFF80 that is now illegal in perl. It calls the perl function Perl__is_uni_FOO, which no longer accepts this input value. So this is the problem. Perl calls the substitute engine in frame #13, and that calls functions within itself until the call at #4. I did a quick search through the code looking for negative code points that might be sentinels, but did not find anything.
Thanks for report, this is a typecast issue in the GNU's regexp implementation, hopefully fixed with re-engine-GNU-0.022.
Subject: Re: [rt.cpan.org #122641] failing tests in 5.27
Date: Tue, 1 Aug 2017 11:49:49 -0600
To: bug-MarpaX-Languages-M4 [...] rt.cpan.org
From: Karl Williamson <khw [...] cpan.org>
On 08/01/2017 12:56 AM, Jean-Damien Durand via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=122641 > > > Thanks for report, this is a typecast issue in the GNU's regexp implementation, hopefully fixed with re-engine-GNU-0.022. >
I have confirmed that this is now fixed. Thanks for the quick turnaround.