Skip to content
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

t/porting/bench.t: Failures on Fedora Linux 38 / gcc and g++ builds #21105

Closed
jkeenan opened this issue May 19, 2023 · 10 comments · Fixed by #21121
Closed

t/porting/bench.t: Failures on Fedora Linux 38 / gcc and g++ builds #21105

jkeenan opened this issue May 19, 2023 · 10 comments · Fixed by #21121

Comments

@jkeenan
Copy link
Contributor

jkeenan commented May 19, 2023

One of our steady smoke-testers has recently begun testing on Fedora Linux 38 (Server Edition). t/porting/bench.t is now failing on both gcc and g++ builds. Here is the list of failed runs:

https://perl5.test-smoke.org/submatrix?test=../t/porting/bench.t&pversion=5.37.12

Sample g++ failure: https://perl5.test-smoke.org/report/5034442

This test was passing on the previous version of this OS, where the build was done with g++-12. So I don't know whether this is a Fedora-specific problem or a problem with version 13 of g++ and gcc.

I don't have access to version 13 of gcc or g++, so if anyone else has those compilers, please build blead with them and run t/porting/bench.t.

@cjg-cguevara

Thank you very much.
Jim Keenan

@jkeenan
Copy link
Contributor Author

jkeenan commented May 19, 2023

Failures with using gcc-13 for build:
https://perl5.test-smoke.org/report/5034471

If the test were passing, this is what the output of the failing unit tests would look like:

ok 52 - --write should produce no output (1 perl)
ok 53 - --write should create a non-empty results file (1 perl)
ok 54 - --write should produce no output (2 perls)
ok 55 - --write should create a non-empty results file (2 perls)
ok 56 - basic cachegrind raw format; 1 perl
ok 57 - basic cachegrind raw compact format; 1 perl
ok 58 - basic cachegrind raw average format; 1 perl
ok 59 - basic cachegrind --fields; 1 perl
ok 60 - basic cachegrind percent format; 2 perls
ok 61 - basic cachegrind percent format, norm; 2 perls
ok 62 - basic cachegrind percent format, norm -2; 2 perls
ok 63 - basic cachegrind percent format, sort; 2 perls
ok 64 - basic cachegrind percent format, sort, norm; 2 perls
ok 65 - basic cachegrind raw format; 2 perls
ok 66 - basic cachegrind raw format, norm; 2 perls
ok 67 - basic cachegrind raw format, sort, norm; 2 perls
ok 68 - basic cachegrind raw format, sort, norm; 2 perls
ok 69 - basic cachegrind compact format; 2 perls
ok 70 - basic cachegrind average format; 2 perls
ok 71 - basic cachegrind --fields; 2 perls
ok 72 - basic cachegrind compact, fields; 2 perls
ok 73 - basic cachegrind 1 field; 2 perls

@Leont
Copy link
Contributor

Leont commented May 19, 2023

I can reproduce the issue on arch with gcc 13 (but I don't know if it failed previously)

ok 1 - Porting/bench.pl exists and is executable
ok 2 - croak: basic unknown option
ok 3 - croak: unknown --field
ok 4 - croak: unknown --action
ok 5 - croak: invalid --sort
ok 6 - croak: unknown --sort field
ok 7 - croak: --action-selftest with executable
ok 8 - croak: invalid --tests regex
ok 9 - croak: unknown test in --tests
ok 10 - croak: unknown test in --tests --verbose
ok 11 - croak: no --tests to run 
ok 12 - croak: non-existent --benchfile 
ok 13 - croak: --benchfile with syntax error
ok 14 - croak: --benchfile which returns 0
ok 15 - croak: --benchfile with odd number of entries
ok 16 - croak: --benchfile with invalid test name
ok 17 - croak: --benchfile with invalid test hash key
ok 18 - croak: select-a-perl out of range
ok 19 - croak: select-a-perl out of range
ok 20 - croak: select-a-perl out of range
ok 21 - croak: select-a-perl unrecognised
ok 22 - croak: select-a-perl ambiguous
ok 23 - croak: ./perl --foo
ok 24 - croak: --args without perl
ok 25 - croak: --env without perl
ok 26 - croak: --args without value
ok 27 - croak: --env without value
ok 28 - croak: --env without =value
ok 29 - croak: duplicate label ./perl ./perl
ok 30 - croak: duplicate label =A =A
ok 31 - croak: duplicate label --read=... --read=...
ok 32 - croak: duplicate label --read=... ./perl
ok 33 - croak:  no such perl
ok 34 - croak: cachegrind output format 
ok 35 - croak: --bisect=Ir
ok 36 - croak: --bisect=Ir,1
ok 37 - croak: --bisect=Ir,1,2,3
ok 38 - croak: --bisect=Ir,1,x
ok 39 - croak: --bisect=Ir,x,2
ok 40 - croak: --bisect=boz,1,2
ok 41 - croak: --bisect=boz,2,1
ok 42 - croak: non-existent --read file 
ok 43 - croak: --read version
ok 44 - croak: benchfile with read
ok 45 - croak: no input
ok 46 - croak: need 2 perls
ok 47 - croak: --bisect, need 1 perls
ok 48 - croak: --bisect one test only
ok 49 - croak: --write open error
ok 50 - croak: --read callsub, callsub2
ok 51 - croak: --read callsub, callsub2 --verbose
# running cachegrind for 1st perl; may be slow...
not ok 52 - --write should produce no output (1 perl)
# Failed test 52 - --write should produce no output (1 perl) at t/porting/bench.t line 408
#      got "Error: can\'t parse \'Ir_mm\' field from cachegrind output:\n==708421== Cachegrind, a cache and branch-prediction profiler\n==708421== Copyright (C) 2002-2017, and GNU GPL\'d, by Nicholas Nethercote et al.\n==708421== Using Valgrind-3.21.0 and LibVEX; rerun with -h for copyright info\n==708421== Command: /home/leont/Code/perl/perl - 20\n==708421== \n==708421== \n==708421== I refs:        1,344,629\n==708421== \n==708421== Branches:        274,990  (267,676 cond + 7,314 ind)\n==708421== Mispredicts:      17,718  ( 15,587 cond + 2,131 ind)\n==708421== Mispred rate:        6.4% (    5.8%     +  29.1%   )\n"
# expected ""
#  diff at 0
#    after "Error: can\'t parse \'Ir_mm\' field from ca"
#     have "Error: can\'t parse \'Ir_mm\' field from ca"
#     want ""
not ok 53 - --write should create a non-empty results file (1 perl)
# Failed test 53 - --write should create a non-empty results file (1 perl) at t/porting/bench.t line 409
# running cachegrind for 2nd perl; may be slow...
not ok 54 - --write should produce no output (2 perls)
# Failed test 54 - --write should produce no output (2 perls) at t/porting/bench.t line 416
#      got "Error: can\'t open \'t/tmp_ANGTM_B\' for reading: No such file or directory\n"
# expected ""
#  diff at 0
#    after "Error: can\'t open \'t/tmp_ANGTM_B\' for re"
#     have "Error: can\'t open \'t/tmp_ANGTM_B\' for re"
#     want ""
# got: Error: can't open 't/tmp_ANGTM_B' for reading: No such file or directory
not ok 55 - --write should create a non-empty results file (2 perls)
# Failed test 55 - --write should create a non-empty results file (2 perls) at t/porting/bench.t line 418
not ok 56 - basic cachegrind raw format; 1 perl
# Failed test 56 - basic cachegrind raw format; 1 perl at t/porting/bench.t line 425
#      got 'Error: can\'t open \'t/tmp_ANGTM_B\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0\
#  *-+\
#  *Ir +(\s*-?\d+\.\d|\s*-)\
#  *Dr +(\s*-?\d+\.\d|\s*-)\
#  *Dw +(\s*-?\d+\.\d|\s*-)\
#  *COND +(\s*-?\d+\.\d|\s*-)\
#  *IND +(\s*-?\d+\.\d|\s*-)\
# \
# COND_m +(\s*-?\d+\.\d|\s*-)\
#  *IND_m +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_m1 +(\s*-?\d+\.\d|\s*-)\
#  *Dr_m1 +(\s*-?\d+\.\d|\s*-)\
#  *Dw_m1 +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_mm +(\s*-?\d+\.\d|\s*-)\
#  *Dr_mm +(\s*-?\d+\.\d|\s*-)\
#  *Dw_mm +(\s*-?\d+\.\d|\s*-)\
# \z)/
not ok 57 - basic cachegrind raw compact format; 1 perl
# Failed test 57 - basic cachegrind raw compact format; 1 perl at t/porting/bench.t line 430
#      got 'Error: can\'t open \'t/tmp_ANGTM_B\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# Results +for +p0\
# \
#  *Ir +Dr +Dw +COND +IND +COND_m +IND_m +Ir_m1 +Dr_m1 +Dw_m1 +Ir_mm +Dr_mm +Dw_mm\
#  *-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+\
#  *(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-) +call\:\:sub\:\:empty +function +call +with +no +args +or +body\
# \z)/
not ok 58 - basic cachegrind raw average format; 1 perl
# Failed test 58 - basic cachegrind raw average format; 1 perl at t/porting/bench.t line 435
#      got 'Error: can\'t open \'t/tmp_ANGTM_B\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# AVERAGE\
# \
#  *p0\
#  *-+\
#  *Ir +(\s*-?\d+\.\d|\s*-)\
#  *Dr +(\s*-?\d+\.\d|\s*-)\
#  *Dw +(\s*-?\d+\.\d|\s*-)\
#  *COND +(\s*-?\d+\.\d|\s*-)\
#  *IND +(\s*-?\d+\.\d|\s*-)\
# \
# COND_m +(\s*-?\d+\.\d|\s*-)\
#  *IND_m +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_m1 +(\s*-?\d+\.\d|\s*-)\
#  *Dr_m1 +(\s*-?\d+\.\d|\s*-)\
#  *Dw_m1 +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_mm +(\s*-?\d+\.\d|\s*-)\
#  *Dr_mm +(\s*-?\d+\.\d|\s*-)\
#  *Dw_mm +(\s*-?\d+\.\d|\s*-)\
# \z)/
not ok 59 - basic cachegrind --fields; 1 perl
# Failed test 59 - basic cachegrind --fields; 1 perl at t/porting/bench.t line 440
#      got 'Error: can\'t open \'t/tmp_ANGTM_B\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0\
#  *-+\
#  *Ir +(\s*-?\d+\.\d|\s*-)\
#  *Dr +(\s*-?\d+\.\d|\s*-)\
# \z)/
not ok 60 - basic cachegrind percent format; 2 perls
# Failed test 60 - basic cachegrind percent format; 2 perls at t/porting/bench.t line 447
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
not ok 61 - basic cachegrind percent format, norm; 2 perls
# Failed test 61 - basic cachegrind percent format, norm; 2 perls at t/porting/bench.t line 452
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
not ok 62 - basic cachegrind percent format, norm -2; 2 perls
# Failed test 62 - basic cachegrind percent format, norm -2; 2 perls at t/porting/bench.t line 457
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
not ok 63 - basic cachegrind percent format, sort; 2 perls
# Failed test 63 - basic cachegrind percent format, sort; 2 perls at t/porting/bench.t line 462
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
not ok 64 - basic cachegrind percent format, sort, norm; 2 perls
# Failed test 64 - basic cachegrind percent format, sort, norm; 2 perls at t/porting/bench.t line 467
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
not ok 65 - basic cachegrind raw format; 2 perls
# Failed test 65 - basic cachegrind raw format; 2 perls at t/porting/bench.t line 472
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *COND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
# COND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \z)/
not ok 66 - basic cachegrind raw format, norm; 2 perls
# Failed test 66 - basic cachegrind raw format, norm; 2 perls at t/porting/bench.t line 477
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *COND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
# COND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \z)/
not ok 67 - basic cachegrind raw format, sort, norm; 2 perls
# Failed test 67 - basic cachegrind raw format, sort, norm; 2 perls at t/porting/bench.t line 482
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *COND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
# COND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \z)/
not ok 68 - basic cachegrind raw format, sort, norm; 2 perls
# Failed test 68 - basic cachegrind raw format, sort, norm; 2 perls at t/porting/bench.t line 487
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +raw +counts +per +loop +iteration\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *COND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
# COND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *IND_m +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_m1 +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \
#  *Ir_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dr_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
#  *Dw_mm +(\s*-?\d+\.\d|\s*-) +(\s*-?\d+\.\d|\s*-)\
# \z)/
not ok 69 - basic cachegrind compact format; 2 perls
# Failed test 69 - basic cachegrind compact format; 2 perls at t/porting/bench.t line 492
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# Results +for +p1\
# \
#  *Ir +Dr +Dw +COND +IND +COND_m +IND_m +Ir_m1 +Dr_m1 +Dw_m1 +Ir_mm +Dr_mm +Dw_mm\
#  *-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+\
#  *(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +call\:\:sub\:\:empty +function +call +with +no +args +or +body\
# \z)/
not ok 70 - basic cachegrind average format; 2 perls
# Failed test 70 - basic cachegrind average format; 2 perls at t/porting/bench.t line 497
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# AVERAGE\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
not ok 71 - basic cachegrind --fields; 2 perls
# Failed test 71 - basic cachegrind --fields; 2 perls at t/porting/bench.t line 502
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
not ok 72 - basic cachegrind compact, fields; 2 perls
# Failed test 72 - basic cachegrind compact, fields; 2 perls at t/porting/bench.t line 507
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# Results +for +p1\
# \
#  *Ir +Dr\
#  *-+ +-+\
#  *(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +call\:\:sub\:\:empty +function +call +with +no +args +or +body\
# \z)/
not ok 73 - basic cachegrind 1 field; 2 perls
# Failed test 73 - basic cachegrind 1 field; 2 perls at t/porting/bench.t line 512
#      got 'Error: can\'t open \'t/tmp_ANGTM_C\' for reading: No such file or directory\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# Results +for +field +Ir\
# \
#  *p0 +p1\
#  *-+ +-+\
# call\:\:sub\:\:empty +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
ok 74 - --bisect: exit result: should not match
ok 75 - --bisect: got expected output
ok 76 - 2 reads; overlapping test sets
# running cachegrind on 1 perl; may be slow...
not ok 77 - 1 read; 1 generate
# Failed test 77 - 1 read; 1 generate at t/porting/bench.t line 537
#      got 'Error: can\'t parse \'Dw_mm\' field from cachegrind output:\n==708467== Cachegrind, a cache and branch-prediction profiler\n==708467== Copyright (C) 2002-2017, and GNU GPL\'d, by Nicholas Nethercote et al.\n==708467== Using Valgrind-3.21.0 and LibVEX; rerun with -h for copyright info\n==708467== Command: /home/leont/Code/perl/perl - 10\n==708467== \n==708467== \n==708467== I refs:        1,342,958\n==708467== \n==708467== Branches:        274,720  (267,446 cond + 7,274 ind)\n==708467== Mispredicts:      17,687  ( 15,586 cond + 2,101 ind)\n==708467== Mispred rate:        6.4% (    5.8%     +  28.9%   )\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1\
#  *-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
# running cachegrind on 2 perls; may be slow...
not ok 78 - 4 perls with autolabel and args and env
# Failed test 78 - 4 perls with autolabel and args and env at t/porting/bench.t line 563
#      got 'Error: can\'t parse \'Dr_m1\' field from cachegrind output:\n==708508== Cachegrind, a cache and branch-prediction profiler\n==708508== Copyright (C) 2002-2017, and GNU GPL\'d, by Nicholas Nethercote et al.\n==708508== Using Valgrind-3.21.0 and LibVEX; rerun with -h for copyright info\n==708508== Command: /home/leont/Code/perl/perl -Ilib -Ifoo/bar -Mstrict - 10\n==708508== \n==708508== \n==708508== I refs:        2,071,781\n==708508== \n==708508== Branches:        408,597  (395,434 cond + 13,163 ind)\n==708508== Mispredicts:      37,293  ( 32,388 cond +  4,905 ind)\n==708508== Mispred rate:        9.1% (    8.2%     +   37.3%   )\n'
# expected /(?^:\AKey\:\
#  *Ir +Instruction +read\
#  *Dr +Data +read\
#  *Dw +Data +write\
#  *COND +conditional +branches\
#  *IND +indirect +branches\
#  *_m +branch +predict +miss\
#  *_m1 +level +1 +cache +miss\
#  *_mm +last +cache +\(e\.g\. +L3\) +miss\
#  *\- +indeterminate +percentage +\(e\.g\. +1\/0\)\
# \
# The +numbers +represent +relative +counts +per +loop +iteration\, +compared +to\
# p0 +at +100\.0\%\.\
# Higher +is +better\: +for +example\, +using +half +as +many +instructions +gives +200\%\,\
# while +using +twice +as +many +gives +50\%\.\
# \
# call\:\:sub\:\:empty\
# function +call +with +no +args +or +body\
# \
#  *p0 +p1 +p2 +p3\
#  *-+ +-+ +-+ +-+\
#  *Ir +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *COND +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *IND +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
# \
# COND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *IND_m +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_m1 +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
# \
#  *Ir_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *Dr_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
#  *Dw_mm +100\.00 +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-) +(\s*-?\d+\.\d\d|\s*-)\
# \z)/
1..78

@jkeenan
Copy link
Contributor Author

jkeenan commented May 19, 2023 via email

@Leont
Copy link
Contributor

Leont commented May 19, 2023

Could you try with gcc-13 and g++-13 with the 5.37.11 release (or tag
v5.37.11)?

Also fails. As does 5.36.

I doubt any smoke tester even attempted version 13 until very recently.

The test is skipped if one doesn't have valgrind installed or if it isn't a git checkout, I bet that combination is uncommon.

@jkeenan
Copy link
Contributor Author

jkeenan commented May 19, 2023

I guess this problem begs the question: At what point in the release cycle of major C-compilers to we begin assuring that the Perl core distribution builds and tests properly with that compiler version?

I note that GNU has had two major update releases within the past month.

GCC 12.3 released [2023-05-08]
GCC 13.1 released [2023-04-26]

The release notes for GCC13 state: "The GCC developers are pleased to announce the release of GCC 13.1. This release is a major release, containing new features (as well as many other improvements) relative to GCC 12.x."

Moreover, in my experience C-compiler upgrades tend not to break the core distribution test suite. They're more likely to generate new build-time warnings, for which we create issues, label them as such, address them and move on. Here, however, it appears that we've been bitten by a very recent release of a major C-compiler.

There's obviously a policy discussion immanent here, and policy discussions are supposed to take place on the P5P list. But what do we do to clear away an obstacle to 5.38.0's release?

@rjbs @book @leonerd : Is this a release blocker?

@iabyn
Copy link
Contributor

iabyn commented May 19, 2023 via email

@Leont
Copy link
Contributor

Leont commented May 19, 2023

I wouldn't be surprised if the real culprit was a valgrind upgrade instead of a gcc update. Given that it's failing to parse cachegrind output.

This issue may need someone who actually understands valgrind.

@Leont
Copy link
Contributor

Leont commented May 19, 2023

Is this a release blocker?

It's only really useful for core hackers, but I can imagine the test failing for distributors. It might already help a lot if we extend that -d "./.git" to -d "./.git" && -e '.mailmap' (and we may need a better solution for this once blead is open again)

@iabyn
Copy link
Contributor

iabyn commented May 19, 2023 via email

@Leont
Copy link
Contributor

Leont commented May 19, 2023

Perhaps the whole test file should skip if its not a devel (odd-numbered)

Probably. Though having an explicit opt-out may also be useful as I currently can't successfully test perl until I uninstall valgrind.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants