atoomic / perl

a repo to show what could be p7
Other
18 stars 8 forks source link

smoke-test failure: linux asan #257

Closed jkeenan closed 4 years ago

jkeenan commented 4 years ago

Smoke-test report: http://perl5.test-smoke.org/report/117909 Log file: http://m-l.org/~perl/smoke/perl/x86_64-linux-thread-multi/smoke-me_clang_quick_sanitize=address/James%20E%20Keenan/log005643c4ee4b5d0cd729c01372d3b3fc59752d3a.log.gz

Grep the above file to show each Configuration and what FAILED within each.

$ zgrep -n -E '(Configuration:|FAILED)' log005643c4ee4b5d0cd729c01372d3b3fc59752d3a.log.gz

7287:[2020-08-31 15:55:55-0400] Configuration: -Dusedevel -Dcc="ccache clang" 
-Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  
-fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address"
7564:[2020-08-31 18:34:03-0400] ../t/re/pat.t...............................................FAILED
7573:[2020-08-31 18:34:04-0400] Configuration: -Dusedevel -Dcc="ccache clang" 
-Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  
-fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" -DDEBUGGING
8084:[2020-08-31 22:24:46-0400] ../t/re/pat.t...............................................FAILED
8093:[2020-08-31 22:24:48-0400] Configuration: -Dusedevel -Dcc="ccache clang" 
-Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  
-fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" -Duseithreads
8460:[2020-09-01 01:06:10-0400] ../t/re/pat.t...............................................FAILED
8462:[2020-09-01 01:06:10-0400] ../t/re/pat_thr.t...........................................FAILED
8475:[2020-09-01 01:06:11-0400] Configuration: -Dusedevel -Dcc="ccache clang" 
-Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  
-fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" -Duseithreads -DDEBUGGING
9074:[2020-09-01 03:18:42-0400] ../t/re/pat.t...............................................FAILED
9076:[2020-09-01 03:18:42-0400] ../t/re/pat_thr.t...........................................FAILED

A gzipped file containing the relevant part of the log for the threaded, non-debugging configuration can be found here.

@atoomic @toddr Can you take a look? Suggest comparing with last previous smoke-test on this host with this configuration on branch.

atoomic commented 4 years ago

A quick scan of the log file, show multiple warnings and many Direct leak or Indirect leak my first question is, can we compile 5.32.0 with such a configuration? Are the errors unique to our branch?

I'm going to try to reproduce it, but I'm not sure I got the correct environment for it.

atoomic commented 4 years ago

Configure options seems to be:

-Dcc="ccache clang" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" (*1)

and

-Dcc="ccache clang" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" -Duseithreads (*1)
jkeenan commented 4 years ago

Configure options seems to be:

-Dcc="ccache clang" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" (*1)

and

-Dcc="ccache clang" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" -Duseithreads (*1)

This tester uses this configuration on Perl 5 blead and all branches and has done so for a long time.

I myself have never successfully compiled with asan.

atoomic commented 4 years ago

After testing on a fresh Fedora 32 install with the same configuration option I can notice this error

git clean -dxf; ./Configure -des -Dcc="ccache clang" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address"
t/re/pat .......................................................
=================================================================
==69530==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 51328 byte(s) in 16 object(s) allocated from:
    #0 0x4d9ed8  (/home/atoomic/workspace/perl/perl+0x4d9ed8)
    #1 0x72c32a  (/home/atoomic/workspace/perl/perl+0x72c32a)
    #2 0x6e12ae  (/home/atoomic/workspace/perl/perl+0x6e12ae)
    #3 0x6d4f12  (/home/atoomic/workspace/perl/perl+0x6d4f12)
    #4 0x67e511  (/home/atoomic/workspace/perl/perl+0x67e511)
    #5 0x6723d1  (/home/atoomic/workspace/perl/perl+0x6723d1)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a3fc  (/home/atoomic/workspace/perl/perl+0x65a3fc)
    #8 0x872f16  (/home/atoomic/workspace/perl/perl+0x872f16)
    #9 0x871570  (/home/atoomic/workspace/perl/perl+0x871570)
    #10 0x789a49  (/home/atoomic/workspace/perl/perl+0x789a49)
    #11 0x589d9e  (/home/atoomic/workspace/perl/perl+0x589d9e)
    #12 0x5891a0  (/home/atoomic/workspace/perl/perl+0x5891a0)
    #13 0x50eefc  (/home/atoomic/workspace/perl/perl+0x50eefc)
    #14 0x7f81a7964041  (/lib64/libc.so.6+0x27041)

Direct leak of 6416 byte(s) in 16 object(s) allocated from:
    #0 0x4d9ed8  (/home/atoomic/workspace/perl/perl+0x4d9ed8)
    #1 0x72c32a  (/home/atoomic/workspace/perl/perl+0x72c32a)
    #2 0x6e1278  (/home/atoomic/workspace/perl/perl+0x6e1278)
    #3 0x6d4f12  (/home/atoomic/workspace/perl/perl+0x6d4f12)
    #4 0x67e511  (/home/atoomic/workspace/perl/perl+0x67e511)
    #5 0x6723d1  (/home/atoomic/workspace/perl/perl+0x6723d1)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a3fc  (/home/atoomic/workspace/perl/perl+0x65a3fc)
    #8 0x872f16  (/home/atoomic/workspace/perl/perl+0x872f16)
    #9 0x871570  (/home/atoomic/workspace/perl/perl+0x871570)
    #10 0x789a49  (/home/atoomic/workspace/perl/perl+0x789a49)
    #11 0x589d9e  (/home/atoomic/workspace/perl/perl+0x589d9e)
    #12 0x5891a0  (/home/atoomic/workspace/perl/perl+0x5891a0)
    #13 0x50eefc  (/home/atoomic/workspace/perl/perl+0x50eefc)
    #14 0x7f81a7964041  (/lib64/libc.so.6+0x27041)

Direct leak of 4720 byte(s) in 2 object(s) allocated from:
    #0 0x4d9d17  (/home/atoomic/workspace/perl/perl+0x4d9d17)
    #1 0x72c454  (/home/atoomic/workspace/perl/perl+0x72c454)
    #2 0x6e0f5b  (/home/atoomic/workspace/perl/perl+0x6e0f5b)
    #3 0x6d4f12  (/home/atoomic/workspace/perl/perl+0x6d4f12)
    #4 0x67e511  (/home/atoomic/workspace/perl/perl+0x67e511)
    #5 0x6723d1  (/home/atoomic/workspace/perl/perl+0x6723d1)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a3fc  (/home/atoomic/workspace/perl/perl+0x65a3fc)
    #8 0x586442  (/home/atoomic/workspace/perl/perl+0x586442)
    #9 0x50eeec  (/home/atoomic/workspace/perl/perl+0x50eeec)
    #10 0x7f81a7964041  (/lib64/libc.so.6+0x27041)

Direct leak of 590 byte(s) in 2 object(s) allocated from:
    #0 0x4d9d17  (/home/atoomic/workspace/perl/perl+0x4d9d17)
    #1 0x72c454  (/home/atoomic/workspace/perl/perl+0x72c454)
    #2 0x6e0f47  (/home/atoomic/workspace/perl/perl+0x6e0f47)
    #3 0x6d4f12  (/home/atoomic/workspace/perl/perl+0x6d4f12)
    #4 0x67e511  (/home/atoomic/workspace/perl/perl+0x67e511)
    #5 0x6723d1  (/home/atoomic/workspace/perl/perl+0x6723d1)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a3fc  (/home/atoomic/workspace/perl/perl+0x65a3fc)
    #8 0x586442  (/home/atoomic/workspace/perl/perl+0x586442)
    #9 0x50eeec  (/home/atoomic/workspace/perl/perl+0x50eeec)
    #10 0x7f81a7964041  (/lib64/libc.so.6+0x27041)

SUMMARY: AddressSanitizer: 63054 byte(s) leaked in 36 allocation(s).
FAILED--non-zero wait status: 256

Failed 1 test out of 2466, 99.96% okay.
    re/pat.t
atoomic commented 4 years ago

I can see the exact same issue building v5.32.0 we can close this case, issues noticed here also exist on v5.32.0

this seems to be ok with blead@eb992c6f going to perform a bisect

> ( cd t; ./perl harness -v re/pat.t; cd - )

ok 1 - "abc\ndef\n" =~ /^abc/
ok 2 - "abc\ndef\n" !~ /^def/
ok 3 - "abc\ndef\n" =~ /^def/m
ok 4 - "abc\ndef\n" =~ /^xxx/
ok 5 - "abc\ndef\n" !~ /^abc/
ok 6 - "abc\ndef\n" =~ /def/
ok 7 - "abc\ndef\n" !~ /def/
ok 8 - "abc\ndef\n" !~ /.def/
ok 9 - "abc\ndef\n" =~ /.def/
ok 10 - "abc\ndef\n" =~ /\ndef/
ok 11 - "abc\ndef\n" !~ /\ndef/
ok 12 - $_ = '123'; /^([0-9][0-9]*)/
ok 13 - $_ = 'aaabbbccc'; /(a*b*)(c*)/
ok 14 - $_ = 'aaabbbccc'; /(a+b+c+)/
ok 15 - $_ = 'aaabbbccc'; /a+b?c+/
ok 16 - $_ = 'aaabccc'; /a+b?c+/
ok 17 - $_ = 'aaabccc'; /a*b?c*/
ok 18 - $_ = 'aaaccc'; /a*b?c*/
ok 19 - $_ = 'aaaccc'; /a*b+c*/
ok 20 - $_ = 'abcdef'; /bcd|xyz/
ok 21 - $_ = 'abcdef'; /xyz|bcd/
ok 22 - $_ = 'abcdef'; m|bc/*d|
ok 23 - $_ = 'abcdef'; /^$_$/
ok 24 - "ab\ncd\n" =~ /^cd/m
ok 25 - ?(.*)?
ok 26 - ?(.*)?
ok 27 - ?(.*)?
ok 28 - ?(.*)?
ok 29 - %XXX is empty
ok 30 - Test empty pattern
ok 31 - Test empty pattern
ok 32 - Test empty pattern
ok 33 - Test empty pattern
ok 34 - xy matches //
ok 35 - on x
ok 36 - xy matches //o (or not)
ok 37 - yz matches /y/
ok 38 - on y
ok 39 - yz matches /y/o (or not)
ok 40 - Check $`, $&, $'
ok 41 - Check $`, $&, $'
ok 42 - Check $`, $&, $'
ok 43 - Match braces
ok 44 - {N,M} quantifier
ok 45 - {N,M} quantifier
ok 46 - {N,M} quantifier
ok 47 - {N,M} quantifier
ok 48 - {N,M} quantifier
ok 49 - {N,M} quantifier
ok 50 - {N,M} quantifier
ok 51 - {N,M} quantifier
ok 52 - {N,M} quantifier
ok 53 - Test /g
ok 54 - Test /g
ok 55 - Test /g
ok 56 - Test /g
ok 57 - Test /o
ok 58 - | after $
ok 59 - $ inside ()
ok 60 - $ inside ()
ok 61 - Scalar /g
ok 62 - Scalar /g
ok 63 - Scalar /g
ok 64 - Scalar /gi
ok 65 - Scalar /gi
ok 66 - Scalar /gi
ok 67 - Scalar /g
ok 68 - Scalar /g
ok 69 - /g reset after assignment
ok 70 - /g, \G and pos
ok 71 - /g, \G and pos
ok 72 - (?{ })
ok 73 - (?{ })
ok 74 - Negative lookbehind
ok 75 - REG_INFTY tests
ok 76 - REG_INFTY tests
ok 77 - REG_INFTY tests
ok 78 - REG_INFTY tests
ok 79 - REG_INFTY tests
ok 80 - REG_INFTY tests
ok 81 - REG_INFTY tests
ok 82 - REG_INFTY tests
ok 83 - {1,} matches more times than REG_INFTY
ok 84 - Lookbehind limit
ok 85 - Long monster, length = 125
ok 86 - Long monster, length = 125
ok 87 - Long monster, length = 125
ok 88 - Long monster, length = 125
ok 89 - Long monster, length = 140
ok 90 - Long monster, length = 140
ok 91 - Long monster, length = 140
ok 92 - Long monster, length = 140
ok 93 - Long monster, length = 250
ok 94 - Long monster, length = 250
ok 95 - Long monster, length = 250
ok 96 - Long monster, length = 250
ok 97 - Long monster, length = 270
ok 98 - Long monster, length = 270
ok 99 - Long monster, length = 270
ok 100 - Long monster, length = 270
ok 101 - Long monster, length = 300000
ok 102 - Long monster, length = 300000
ok 103 - Long monster, length = 300000
ok 104 - Long monster, length = 300000
ok 105 - Long monster, length = 30
ok 106 - Long monster, length = 30
ok 107 - Long monster, length = 30
ok 108 - Long monster, length = 30
ok 109 - 20000 nodes, const-len 'ax13876y25677mcb'
ok 110 - 20000 nodes, var-len 'ax13876y25677mcb'
ok 111 - 20000 nodes, const-len 'ax13876y25677y21378y21378y21378kbc'
ok 112 - 20000 nodes, var-len 'ax13876y25677y21378y21378y21378kbc'
ok 113 - 20000 nodes, const-len 'ax13876y25677y21378y21378kbc'
ok 114 - 20000 nodes, var-len 'ax13876y25677y21378y21378kbc'
ok 115 - 20000 nodes, const-len 'ax13876y25677y21378y21378kcb'
ok 116 - 20000 nodes, var-len 'ax13876y25677y21378y21378kcb'
ok 117 - 20000 nodes, const-len 'ax13876y25677lbc'
ok 118 - 20000 nodes, var-len 'ax13876y25677lbc'
ok 119 - 20000 nodes, const-len 'ax13876y25677y21378zbc'
ok 120 - 20000 nodes, var-len 'ax13876y25677y21378zbc'
ok 121 - 20000 nodes, const-len 'ax13876y35677nbc'
ok 122 - 20000 nodes, var-len 'ax13876y35677nbc'
ok 123 - 20000 nodes, const-len 'ax13876y25677y21378obc'
ok 124 - 20000 nodes, var-len 'ax13876y25677y21378obc'
ok 125 - Complicated backtracking
ok 126 - Complicated backtracking
ok 127 - Recursion with (??{ })
ok 128 - Recursion with (??{ })
ok 129 - Recursion with (??{ })
ok 130 - "abc" =~ /^(??{"a"})b/
ok 131 - Stack may be bad
ok 132 - Eval-group not allowed at runtime
ok 133 - Eval-group not allowed at runtime 'Eval-group not allowed at runtime, use re 'eval' in regex m/(?{$blah = 45})/ at re/pat.t line 478.', '', '12'
ok 134 - Eval-group not allowed at runtime '', '1', '12'
ok 135 - Eval-group not allowed at runtime
ok 136 - Eval-group not allowed at runtime
ok 137 - Pos checks
ok 138 - Pos checks
ok 139 - Pos checks
ok 140 - Checking $^R
ok 141 - Checking $^R
ok 142 - Checking $^R
ok 143 - qr/\b\v$/i
ok 144 - qr/\b\v$/s
ok 145 - qr/\b\v$/m
ok 146 - qr/\b\v$/x
ok 147 - qr/\b\v$/xism
ok 148 - qr/\b\v$/
ok 149 - Verify no locale, no unicode_strings gives default modifier
ok 150 - Verify infix l modifier compiles
ok 151 - Verify infix u modifier compiles
ok 152 - Verify (?l) compiles
ok 153 - Verify (?u) compiles
ok 154 - Verify has l modifier when compiled under use locale
ok 155 - Verify has u modifier when compiled under unicode_strings
ok 156 - Verify retains d meaning when interpolated under locale
ok 157 - Verify retains l when interpolated under unicode_strings
ok 158 - Verify retains l when interpolated outside locale and unicode strings
ok 159 - Verify retains u when interpolated outside locale and unicode strings
ok 160 - Verify retains d meaning when interpolated under locale
ok 161 - Verify retains u when interpolated under locale
ok 162 - Look around
ok 163 - Look around
ok 164 - Look around
ok 165 - Look around
ok 166 - Empty clause
ok 167 - Empty clause
ok 168 - Empty clause
ok 169 - Empty clause
ok 170 - Empty clause
ok 171 - Empty clause
ok 172 - Prefixify
ok 173 - Prefixify
ok 174 - Prefixify
ok 175 - Prefixify
ok 176 - Capture a quote
ok 177 - (?{ $var } refers to package vars
ok 178 - (?{ $var } refers to package vars
ok 179
ok 180 - POSIX class [: :] must have valid name
ok 181
ok 182 - POSIX syntax [[= =]] is an error
ok 183
ok 184 - POSIX syntax [[. .]] is an error
ok 185 - Failed pattern returns empty list
ok 186 - Failed pattern returns empty list
ok 187 - Failed pattern returns empty list
ok 188 - Failed pattern returns empty list
ok 189 - @- and @+ and @{^CAPTURE} tests
ok 190 - @- and @+ and @{^CAPTURE} tests
ok 191 - @- and @+ and @{^CAPTURE} tests
ok 192 - @- and @+ and @{^CAPTURE} tests
ok 193 - @- and @+ and @{^CAPTURE} tests
ok 194 - @- and @+ and @{^CAPTURE} tests
ok 195 - @- and @+ and @{^CAPTURE} tests
ok 196 - @- and @+ and @{^CAPTURE} tests
ok 197 - @- and @+ and @{^CAPTURE} tests
ok 198 - @- and @+ and @{^CAPTURE} tests
ok 199 - @- and @+ and @{^CAPTURE} tests
ok 200 - @- and @+ and @{^CAPTURE} tests
ok 201 - @- and @+ and @{^CAPTURE} tests
ok 202 - @- and @+ and @{^CAPTURE} tests
ok 203 - @- and @+ and @{^CAPTURE} tests
ok 204 - @- and @+ and @{^CAPTURE} tests
ok 205 - @- and @+ and @{^CAPTURE} tests
ok 206 - @- and @+ and @{^CAPTURE} tests
ok 207 - @- and @+ and @{^CAPTURE} tests
ok 208 - @- and @+ and @{^CAPTURE} tests
ok 209 - @- and @+ and @{^CAPTURE} tests
ok 210 - @- and @+ and @{^CAPTURE} tests
ok 211 - @- and @+ and @{^CAPTURE} tests
ok 212 - @- and @+ and @{^CAPTURE} tests
ok 213 - @- and @+ and @{^CAPTURE} tests
ok 214 - @- and @+ and @{^CAPTURE} tests
ok 215 - @- and @+ and @{^CAPTURE} tests
ok 216 - @- and @+ and @{^CAPTURE} tests
ok 217 - @- and @+ and @{^CAPTURE} tests
ok 218 - @- and @+ and @{^CAPTURE} tests
ok 219 - @- and @+ and @{^CAPTURE} tests
ok 220 - @- and @+ and @{^CAPTURE} tests
ok 221 - @- and @+ and @{^CAPTURE} tests
ok 222 - @- and @+ and @{^CAPTURE} tests
ok 223 - @- and @+ and @{^CAPTURE} tests
ok 224 - @- and @+ and @{^CAPTURE} tests
ok 225 - @- and @+ and @{^CAPTURE} tests
ok 226 - @- and @+ and @{^CAPTURE} tests
ok 227 - @- and @+ and @{^CAPTURE} tests
ok 228 - @- and @+ and @{^CAPTURE} tests
ok 229 - @- and @+ and @{^CAPTURE} tests[c e]
ok 230 - @- and @+ and @{^CAPTURE} tests
ok 231 - @- and @+ and @{^CAPTURE} tests
ok 232 - @- and @+ and @{^CAPTURE} tests
ok 233 - @- and @+ and @{^CAPTURE} tests
ok 234 - @- and @+ and @{^CAPTURE} tests
ok 235 - @- and @+ and @{^CAPTURE} tests
ok 236 - @- and @+ and @{^CAPTURE} tests
ok 237 - @- and @+ and @{^CAPTURE} tests
ok 238 - @- and @+ and @{^CAPTURE} tests
ok 239 - @- and @+ and @{^CAPTURE} tests
ok 240 - @- and @+ and @{^CAPTURE} tests
ok 241 - @- and @+ and @{^CAPTURE} tests
ok 242 - @- and @+ and @{^CAPTURE} tests
ok 243 - @- and @+ and @{^CAPTURE} tests
ok 244 - @- and @+ and @{^CAPTURE} tests
ok 245 - @- and @+ and @{^CAPTURE} tests
ok 246 - @- and @+ and @{^CAPTURE} tests
ok 247 - values do not stick to @- elements
ok 248 - values do not stick to @+ elements
ok 249 - values do not stick to @{^CAPTURE} elements
ok 250
ok 251 - $^N, @- and @+ are read-only
ok 252
ok 253 - $^N, @- and @+ are read-only
ok 254
ok 255 - $^N, @- and @+ are read-only
ok 256
ok 257 - $^N, @- and @+ are read-only
ok 258
ok 259 - $^N, @- and @+ are read-only
ok 260
ok 261 - $^N, @- and @+ are read-only
ok 262 - \G testing
ok 263 - \G testing
ok 264 - \G testing
ok 265 - \G testing
ok 266 - \G testing
ok 267 - \G testing
ok 268 - \G testing
ok 269 - \G and intuit and anchoring
ok 270 - \G and intuit and anchoring
ok 271 - \G and intuit and anchoring
ok 272 - \G and intuit and anchoring
ok 273 - \G and intuit and anchoring
ok 274 - \G and intuit and anchoring
ok 275 - \G and intuit and anchoring
ok 276 - \G and intuit and anchoring
ok 277 - \G looping
ok 278 - pos inside (?{ })
ok 279 - pos inside (?{ })
ok 280 - pos inside (?{ })
ok 281 - pos inside (?{ })
ok 282 - pos inside (?{ })
ok 283 - pos inside (?{ })
ok 284 - pos inside (?{ })
ok 285 - pos inside (?{ })
ok 286 - pos inside (?{ })
ok 287 - pos inside (?{ })
ok 288 - pos inside (?{ })
ok 289 - pos inside (?{ })
ok 290 - pos inside (?{ })
ok 291 - pos inside (?{ })
ok 292 - pos inside (?{ })
ok 293 - pos inside (?{ })
ok 294 - pos inside (?{ })
ok 295 - pos inside (?{ })
ok 296 - pos inside (?{ })
ok 297 - pos inside (?{ })
ok 298 - pos inside (?{ })
ok 299 - pos inside (?{ })
ok 300 - pos inside (?{ })
ok 301 - pos inside (?{ })
ok 302 - \G anchor checks
ok 303 - \G anchor checks
ok 304 - \G anchor checks
ok 305 - \G anchor checks
ok 306 - \G anchor checks
ok 307 - \G anchor checks
ok 308 - \G anchor checks
ok 309 - \G anchor checks
ok 310 - \G anchor checks
ok 311 - \G anchor checks
ok 312 - \G anchor checks
ok 313 - \G anchor checks
ok 314 - \G anchor checks
ok 315 - basic \G floating checks: a+\G
ok 316 - basic \G floating checks: ab
ok 317 - basic \G floating checks: b+\G
ok 318 - basic \G floating checks: cc
ok 319 - basic \G floating checks: d+\G
ok 320 - basic \G floating checks: de
ok 321 - basic \G floating checks: \Gef
ok 322 - basic \G floating checks: (?a+\G)
ok 323 - basic \G floating checks: aa
ok 324 - basic \G floating checks: a(?=a+\G)
ok 325 - basic \G floating checks: ab
ok 326 - 0 match in alternation
ok 327 - Match against temporaries (created via pp_helem()) is safe
ok 328 - Match against temporaries (created via pp_helem()) is safe
ok 329 - package $i inside (?{ }), saved substrings and changing $_
ok 330 - package $i inside (?{ }), saved substrings and changing $_
ok 331 - lexical $i inside (?{ }), saved substrings and changing $_
ok 332 - lexical $i inside (?{ }), saved substrings and changing $_
ok 333 - Brackets
ok 334 - Brackets
ok 335 - Brackets
ok 336 - Brackets
ok 337 - Brackets
ok 338 - Brackets
ok 339 - $_ = "a-a\nxbb"; m/^-.*bb/mg
ok 340 - \G anchor checks
ok 341 - $_ = "xA\n" x 500; /^\s*A/m"
ok 342 - \b is not special
ok 343 - \S, [\S], \s, [\s]
ok 344 - \S, [\S], \s, [\s]
ok 345 - \S, [\S], \s, [\s]
ok 346 - \S, [\S], \s, [\s]
ok 347 - Verify ' ' !~ /[^\S ]/
ok 348 - Verify '\t =~ /[^\S ]/
ok 349 - Verify non-utf8-NBSP !~ /[^\S ]/
ok 350 - Verify utf8-NBSP =~ /[^\S ]/
ok 351 - Verify non-utf8-inverted-bang !~ /[^\S ]/
ok 352 - Verify utf8-inverted-bang !~ /[^\S ]/
ok 353 - \D, [\D], \d, [\d]
ok 354 - \D, [\D], \d, [\d]
ok 355 - \D, [\D], \d, [\d]
ok 356 - \D, [\D], \d, [\d]
ok 357 - \W, [\W], \w, [\w]
ok 358 - \W, [\W], \w, [\w]
ok 359 - \W, [\W], \w, [\w]
ok 360 - \W, [\W], \w, [\w]
ok 361 - Backtrack optimization
ok 362 - Backtrack optimization
ok 363 - Backtrack optimization
ok 364 - Backtrack optimization
ok 365 - Backtrack optimization
ok 366 - Backtrack optimization
ok 367 - Backtrack optimization
ok 368 - Backtrack optimization
ok 369 - Backtrack optimization
ok 370 - Backtrack optimization
ok 371 - Scalar ref stringification
ok 372 - Ref ref stringification
ok 373 - Array ref stringification
ok 374 - Hash ref stringification
ok 375 - Object stringification
ok 376 - Test result of match used as match
ok 377 - Test result of match used as match
ok 378 - Test result of match used as match
ok 379 - Test result of match used as match
ok 380 - "1" is not \s
ok 381 - "1" is not \s (did not warn)
ok 382 - \s, [[:space:]] and [[:blank:]]
ok 383 - \s, [[:space:]] and [[:blank:]]
ok 384 - \s, [[:space:]] and [[:blank:]]
ok 385 - implicit MBOL check string disable does not break things length=0
ok 386 - implicit MBOL check string disable does not break things length=1
ok 387 - implicit MBOL check string disable does not break things length=2
ok 388 - implicit MBOL check string disable does not break things length=3
ok 389 - implicit MBOL check string disable does not break things length=4
ok 390 - implicit MBOL check string disable does not break things length=5
ok 391 - implicit MBOL check string disable does not break things length=6
ok 392 - implicit MBOL check string disable does not break things length=7
ok 393 - implicit MBOL check string disable does not break things length=8
ok 394 - implicit MBOL check string disable does not break things length=9
ok 395 - implicit MBOL check string disable does not break things length=10
ok 396 - implicit MBOL check string disable does not break things length=11
ok 397 - implicit MBOL check string disable does not break things length=12
ok 398 - implicit MBOL check string disable does not break things length=13
ok 399 - implicit MBOL check string disable does not break things length=14
ok 400 - implicit MBOL check string disable does not break things length=15
ok 401 - implicit MBOL check string disable does not break things length=16
ok 402 - implicit MBOL check string disable does not break things length=17
ok 403 - implicit MBOL check string disable does not break things length=18
ok 404 - implicit MBOL check string disable does not break things length=19
ok 405 - implicit MBOL check string disable does not break things length=20
ok 406 - implicit MBOL check string disable does not break things length=21
ok 407 - implicit MBOL check string disable does not break things length=22
ok 408 - implicit MBOL check string disable does not break things length=23
ok 409 - implicit MBOL check string disable does not break things length=24
ok 410 - implicit MBOL check string disable does not break things length=25
ok 411 - implicit MBOL check string disable does not break things length=26
ok 412 - implicit MBOL check string disable does not break things length=27
ok 413 - implicit MBOL check string disable does not break things length=28
ok 414 - implicit MBOL check string disable does not break things length=29
ok 415 - implicit MBOL check string disable does not break things length=30
ok 416 - implicit MBOL check string disable does not break things length=31
ok 417 - implicit MBOL check string disable does not break things length=32
ok 418 - implicit MBOL check string disable does not break things length=33
ok 419 - implicit MBOL check string disable does not break things length=34
ok 420 - implicit MBOL check string disable does not break things length=35
ok 421 - implicit MBOL check string disable does not break things length=36
ok 422 - implicit MBOL check string disable does not break things length=37
ok 423 - implicit MBOL check string disable does not break things length=38
ok 424 - implicit MBOL check string disable does not break things length=39
ok 425 - implicit MBOL check string disable does not break things length=40
ok 426 - implicit MBOL check string disable does not break things length=41
ok 427 - implicit MBOL check string disable does not break things length=42
ok 428 - implicit MBOL check string disable does not break things length=43
ok 429 - implicit MBOL check string disable does not break things length=44
ok 430 - implicit MBOL check string disable does not break things length=45
ok 431 - implicit MBOL check string disable does not break things length=46
ok 432 - implicit MBOL check string disable does not break things length=47
ok 433 - implicit MBOL check string disable does not break things length=48
ok 434 - implicit MBOL check string disable does not break things length=49
ok 435 - implicit MBOL check string disable does not break things length=50
ok 436 - got a unicode string - rt75680
ok 437 - unicode string against /.*?[x]$/ - rt75680
ok 438 - unicode string against /.*?\p{space}$/i - rt75680
ok 439 - unicode string against /.*?[xyz]$/ - rt75680
ok 440 - unicode string against big pattern - rt75680
ok 441 - got a latin string - rt75680
ok 442 - latin string against /.*?[x]$/ - rt75680
ok 443 - latin string against /.*?\p{space}$/i - rt75680
ok 444 - latin string against /.*?[xyz]$/ - rt75680
ok 445 - latin string against big pattern - rt75680
ok 446 - \p property after empty * match
ok 447 - \p property after empty * match
ok 448 - \p property after empty * match
ok 449 - \p property after empty * match
ok 450 - \p property after empty * match
ok 451 - \p property after empty * match
ok 452 - \xc0 =~ (?^:((�)+,?)); Neither pattern nor target utf8
ok 453 - \xc0 =~ /(?^:((�)+,?))/i; Neither pattern nor target utf8
ok 454 - \xc0 =~ (?^:((�)+,?)); pattern utf8, target not
ok 455 - \xc0 =~ /(?^:((�)+,?))/i; pattern utf8, target not
ok 456 - \xc0 =~ (?^:((�)+,?)); target utf8, pattern not
ok 457 - \xc0 =~ /(?^:((�)+,?))/i; target utf8, pattern not
ok 458 - \xc0 =~ (?^:((�)+,?)); Both target and pattern utf8
ok 459 - \xc0 =~ /(?^:((�)+,?))/i; Both target and pattern utf8
ok 460 - Under unicode_strings: "\xc0" =~ /\w/
ok 461 - Under unicode_strings: "\xc0" !~ /(?d:\w)/
ok 462 - Empty pattern qr// stringifies to (?^:) with unicode flag enabled - Bug \#80212
ok 463 - Empty pattern qr// stringifies to (?^:) with unicode flag disabled - Bug \#80212
not ok 464 # TODO [perl #38133]
ok 465 - RT \#3516 A
ok 466 - RT \#3516 B
ok 467 - RT \#3516 C
ok 468 - RT \#84294: Pattern should match
ok 469 - RT \#84294: check that "ab" =~ /((\w+)(?{ push @got, $2 })){2}/ leaves @got in the correct state
ok 470 - Non-Unicode doesn't match \p{AHEX=True}
ok 471 - Non-Unicode matches \p{AHEX=False}
ok 472 - Non-Unicode matches \P{AHEX=True}
ok 473 - Non-Unicode matches \P{AHEX=FALSE}
ok 474 - 'a' is legal IDStart
ok 475 - '_' is legal IDStart
ok 476 - U+00DF is legal IDStart
ok 477 - U+2115' is legal IDStart
ok 478 - 'U+0025 not legal IDFirst'
ok 479 - 'U+00D7 not legal IDFirst'
ok 480 - 'U+2118 not legal IDFirst'
ok 481 - 'U+212E not legal IDFirst'
ok 482 - /i: utf8 pattern, non-utf8 string, latin1-char preceding matching char in string
ok 483 - no crash for @a =~ // warning
ok 484 - /$o$qr/ passes qr ref to cat overload meth
ok 485 - test that ANCH_MBOL works properly. We should get 2 from $count++ while "\n"=~/.*/g
ok 486 - while "\n"=~/.*/g and while "\n"=~/[^\n]*/g should behave the same
ok 487 - while "\n"=~/^.*/mg should match only once
ok 488 - (?i: shouldn't lose the passed in /u
ok 489 - (?i: shouldn't lose the passed in /a
ok 490 - (?i: shouldn't lose the passed in /aa
ok 491 - (?i: shouldn't lose the passed in /aa
ok 492 - re-compile check is UTF8-aware
ok 493 - re-compile check is UTF8-aware
ok 494 - Qr0
ok 495 - Qr0 bare
ok 496 - Qr1
ok 497 - Qr1 bare
ok 498 - Qr2
ok 499 - Qr2 bare
ok 500 - Qr2 - with use re eval
ok 501 - Qr2 bare - with use re eval
ok 502 - Qr3
ok 503 - Qr3 bare
ok 504 - Qr3 - with use re eval
ok 505 - Qr3 bare - with use re eval
ok 506 - Qr_indirect
ok 507 - Qr_indirect bare
ok 508 - [] to EXACTish optimization
ok 509 - (?iu), utf8=0, locale=C, char=46
ok 510 - extra a, (?iu), utf8=0, locale=C, char=46
ok 511 # skip test skipped for non-C locales
ok 512 # skip test skipped for non-C locales
ok 513 - (?iu), utf8=1, locale=C, char=46
ok 514 - extra a, (?iu), utf8=1, locale=C, char=46
ok 515 # skip test skipped for non-C locales
ok 516 # skip test skipped for non-C locales
ok 517 - (?id), utf8=0, locale=C, char=46
ok 518 - extra a, (?id), utf8=0, locale=C, char=46
ok 519 # skip test skipped for non-C locales
ok 520 # skip test skipped for non-C locales
ok 521 - (?id), utf8=1, locale=C, char=46
ok 522 - extra a, (?id), utf8=1, locale=C, char=46
ok 523 # skip test skipped for non-C locales
ok 524 # skip test skipped for non-C locales
ok 525 - (?il), utf8=0, locale=C, char=46
ok 526 - extra a, (?il), utf8=0, locale=C, char=46
ok 527 - (?il), utf8=0, locale=C.UTF-8, char=46
ok 528 - extra a, (?il), utf8=0, locale=C.UTF-8, char=46
ok 529 - (?il), utf8=1, locale=C, char=46
ok 530 - extra a, (?il), utf8=1, locale=C, char=46
ok 531 - (?il), utf8=1, locale=C.UTF-8, char=46
ok 532 - extra a, (?il), utf8=1, locale=C.UTF-8, char=46
ok 533 - (?iaa), utf8=0, locale=C, char=46
ok 534 - extra a, (?iaa), utf8=0, locale=C, char=46
ok 535 # skip test skipped for non-C locales
ok 536 # skip test skipped for non-C locales
ok 537 - (?iaa), utf8=1, locale=C, char=46
ok 538 - extra a, (?iaa), utf8=1, locale=C, char=46
ok 539 # skip test skipped for non-C locales
ok 540 # skip test skipped for non-C locales
ok 541 - (?iu), utf8=0, locale=C, char=df
ok 542 - extra a, (?iu), utf8=0, locale=C, char=df
ok 543 # skip test skipped for non-C locales
ok 544 # skip test skipped for non-C locales
ok 545 - (?iu), utf8=1, locale=C, char=df
ok 546 - extra a, (?iu), utf8=1, locale=C, char=df
ok 547 # skip test skipped for non-C locales
ok 548 # skip test skipped for non-C locales
ok 549 - (?id), utf8=0, locale=C, char=df
ok 550 - extra a, (?id), utf8=0, locale=C, char=df
ok 551 # skip test skipped for non-C locales
ok 552 # skip test skipped for non-C locales
ok 553 - (?id), utf8=1, locale=C, char=df
ok 554 - extra a, (?id), utf8=1, locale=C, char=df
ok 555 # skip test skipped for non-C locales
ok 556 # skip test skipped for non-C locales
ok 557 - (?il), utf8=0, locale=C, char=df
ok 558 - extra a, (?il), utf8=0, locale=C, char=df
ok 559 - (?il), utf8=0, locale=C.UTF-8, char=df
ok 560 - extra a, (?il), utf8=0, locale=C.UTF-8, char=df
ok 561 - (?il), utf8=1, locale=C, char=df
ok 562 - extra a, (?il), utf8=1, locale=C, char=df
ok 563 - (?il), utf8=1, locale=C.UTF-8, char=df
ok 564 - extra a, (?il), utf8=1, locale=C.UTF-8, char=df
ok 565 - (?iaa), utf8=0, locale=C, char=df
ok 566 - extra a, (?iaa), utf8=0, locale=C, char=df
ok 567 # skip test skipped for non-C locales
ok 568 # skip test skipped for non-C locales
ok 569 - (?iaa), utf8=1, locale=C, char=df
ok 570 - extra a, (?iaa), utf8=1, locale=C, char=df
ok 571 # skip test skipped for non-C locales
ok 572 # skip test skipped for non-C locales
ok 573 - (?iu), utf8=0, locale=C, char=1f0
ok 574 - extra a, (?iu), utf8=0, locale=C, char=1f0
ok 575 # skip test skipped for non-C locales
ok 576 # skip test skipped for non-C locales
ok 577 - (?iu), utf8=1, locale=C, char=1f0
ok 578 - extra a, (?iu), utf8=1, locale=C, char=1f0
ok 579 # skip test skipped for non-C locales
ok 580 # skip test skipped for non-C locales
ok 581 - (?id), utf8=0, locale=C, char=1f0
ok 582 - extra a, (?id), utf8=0, locale=C, char=1f0
ok 583 # skip test skipped for non-C locales
ok 584 # skip test skipped for non-C locales
ok 585 - (?id), utf8=1, locale=C, char=1f0
ok 586 - extra a, (?id), utf8=1, locale=C, char=1f0
ok 587 # skip test skipped for non-C locales
ok 588 # skip test skipped for non-C locales
ok 589 - (?il), utf8=0, locale=C, char=1f0
ok 590 - extra a, (?il), utf8=0, locale=C, char=1f0
ok 591 - (?il), utf8=0, locale=C.UTF-8, char=1f0
ok 592 - extra a, (?il), utf8=0, locale=C.UTF-8, char=1f0
ok 593 - (?il), utf8=1, locale=C, char=1f0
ok 594 - extra a, (?il), utf8=1, locale=C, char=1f0
ok 595 - (?il), utf8=1, locale=C.UTF-8, char=1f0
ok 596 - extra a, (?il), utf8=1, locale=C.UTF-8, char=1f0
ok 597 - (?iaa), utf8=0, locale=C, char=1f0
ok 598 - extra a, (?iaa), utf8=0, locale=C, char=1f0
ok 599 # skip test skipped for non-C locales
ok 600 # skip test skipped for non-C locales
ok 601 - (?iaa), utf8=1, locale=C, char=1f0
ok 602 - extra a, (?iaa), utf8=1, locale=C, char=1f0
ok 603 # skip test skipped for non-C locales
ok 604 # skip test skipped for non-C locales
ok 605 - (?iu), utf8=0, locale=C, char=fb00
ok 606 - extra a, (?iu), utf8=0, locale=C, char=fb00
ok 607 # skip test skipped for non-C locales
ok 608 # skip test skipped for non-C locales
ok 609 - (?iu), utf8=1, locale=C, char=fb00
ok 610 - extra a, (?iu), utf8=1, locale=C, char=fb00
ok 611 # skip test skipped for non-C locales
ok 612 # skip test skipped for non-C locales
ok 613 - (?id), utf8=0, locale=C, char=fb00
ok 614 - extra a, (?id), utf8=0, locale=C, char=fb00
ok 615 # skip test skipped for non-C locales
ok 616 # skip test skipped for non-C locales
ok 617 - (?id), utf8=1, locale=C, char=fb00
ok 618 - extra a, (?id), utf8=1, locale=C, char=fb00
ok 619 # skip test skipped for non-C locales
ok 620 # skip test skipped for non-C locales
ok 621 - (?il), utf8=0, locale=C, char=fb00
ok 622 - extra a, (?il), utf8=0, locale=C, char=fb00
ok 623 - (?il), utf8=0, locale=C.UTF-8, char=fb00
ok 624 - extra a, (?il), utf8=0, locale=C.UTF-8, char=fb00
ok 625 - (?il), utf8=1, locale=C, char=fb00
ok 626 - extra a, (?il), utf8=1, locale=C, char=fb00
ok 627 - (?il), utf8=1, locale=C.UTF-8, char=fb00
ok 628 - extra a, (?il), utf8=1, locale=C.UTF-8, char=fb00
ok 629 - (?iaa), utf8=0, locale=C, char=fb00
ok 630 - extra a, (?iaa), utf8=0, locale=C, char=fb00
ok 631 # skip test skipped for non-C locales
ok 632 # skip test skipped for non-C locales
ok 633 - (?iaa), utf8=1, locale=C, char=fb00
ok 634 - extra a, (?iaa), utf8=1, locale=C, char=fb00
ok 635 # skip test skipped for non-C locales
ok 636 # skip test skipped for non-C locales
ok 637 - Check that LEXACT nodes are generated
ok 638 - Check that LEXACT nodes match
ok 639 - Previous test preceded by an 'a'
ok 640 - Check that an LEXACT_ONLY node is generated with a \x{100}
ok 641 - Check that LEXACT_REQ8 nodes match
ok 642 - ":" =~ /^:?$/
ok 643 - my $p = ":"; utf8::upgrade($p); ":" =~ /^$p?$/
ok 644 - my $c = ":"; utf8::upgrade($c); "$c" =~ /^:?$/
ok 645 - my $c = ":"; utf8::upgrade($c); my $p = ":"; utf8::upgrade($p); "$c" =~ /^$p?$/
ok 646 - "�" =~ /^�?$/
ok 647 - my $p = "�"; utf8::upgrade($p); "�" =~ /^$p?$/
ok 648 - my $c = "�"; utf8::upgrade($c); "$c" =~ /^�?$/
ok 649 - my $c = "�"; utf8::upgrade($c); my $p = "�"; utf8::upgrade($p); "$c" =~ /^$p?$/
ok 650 - "\x{2010}" =~ /^\x{2010}?$/
ok 651 - my $p = "\x{2010}"; utf8::upgrade($p); "\x{2010}" =~ /^$p?$/
ok 652 - my $c = "\x{2010}"; utf8::upgrade($c); "$c" =~ /^\x{2010}?$/
ok 653 - my $c = "\x{2010}"; utf8::upgrade($c); my $p = "\x{2010}"; utf8::upgrade($p); "$c" =~ /^$p?$/
ok 654 - \#116148
ok 655 - no warnings when interpolating mixed up-/downgraded strings in pattern
ok 656 - mixed up-/downgraded pattern matches downgraded string
ok 657 - mixed up-/downgraded pattern matches upgraded string
ok 658 - \1 works with 1 buffers 'aa'=~/...\1/
ok 659 - \1 works with 1 buffers 'aba'=~/...b\1/
ok 660 - \2 works with 2 buffers 'aa'=~/...\2/
ok 661 - \2 works with 2 buffers 'aba'=~/...b\2/
ok 662 - \3 works with 3 buffers 'aa'=~/...\3/
ok 663 - \3 works with 3 buffers 'aba'=~/...b\3/
ok 664 - \4 works with 4 buffers 'aa'=~/...\4/
ok 665 - \4 works with 4 buffers 'aba'=~/...b\4/
ok 666 - \5 works with 5 buffers 'aa'=~/...\5/
ok 667 - \5 works with 5 buffers 'aba'=~/...b\5/
ok 668 - \6 works with 6 buffers 'aa'=~/...\6/
ok 669 - \6 works with 6 buffers 'aba'=~/...b\6/
ok 670 - \7 works with 7 buffers 'aa'=~/...\7/
ok 671 - \7 works with 7 buffers 'aba'=~/...b\7/
ok 672 - \8 works with 8 buffers 'aa'=~/...\8/
ok 673 - \8 works with 8 buffers 'aba'=~/...b\8/
ok 674 - \9 works with 9 buffers 'aa'=~/...\9/
ok 675 - \9 works with 9 buffers 'aba'=~/...b\9/
ok 676 - \10 works with 10 buffers 'aa'=~/...\10/
ok 677 - \10 works with 10 buffers 'aba'=~/...b\10/
ok 678 - \11 works with 11 buffers 'aa'=~/...\11/
ok 679 - \11 works with 11 buffers 'aba'=~/...b\11/
ok 680 - \12 works with 12 buffers 'aa'=~/...\12/
ok 681 - \12 works with 12 buffers 'aba'=~/...b\12/
ok 682 - \13 works with 13 buffers 'aa'=~/...\13/
ok 683 - \13 works with 13 buffers 'aba'=~/...b\13/
ok 684 - \14 works with 14 buffers 'aa'=~/...\14/
ok 685 - \14 works with 14 buffers 'aba'=~/...b\14/
ok 686 - \15 works with 15 buffers 'aa'=~/...\15/
ok 687 - \15 works with 15 buffers 'aba'=~/...b\15/
ok 688 - \16 works with 16 buffers 'aa'=~/...\16/
ok 689 - \16 works with 16 buffers 'aba'=~/...b\16/
ok 690 - \17 works with 17 buffers 'aa'=~/...\17/
ok 691 - \17 works with 17 buffers 'aba'=~/...b\17/
ok 692 - \18 works with 18 buffers 'aa'=~/...\18/
ok 693 - \18 works with 18 buffers 'aba'=~/...b\18/
ok 694 - \19 works with 19 buffers 'aa'=~/...\19/
ok 695 - \19 works with 19 buffers 'aba'=~/...b\19/
ok 696 - \20 works with 20 buffers 'aa'=~/...\20/
ok 697 - \20 works with 20 buffers 'aba'=~/...b\20/
ok 698 - skipping 21 buffers under ASan aa
ok 699 - skipping 21 buffers under ASan aba
ok 700 - skipping 22 buffers under ASan aa
ok 701 - skipping 22 buffers under ASan aba
ok 702 - skipping 23 buffers under ASan aa
ok 703 - skipping 23 buffers under ASan aba
ok 704 - skipping 24 buffers under ASan aa
ok 705 - skipping 24 buffers under ASan aba
ok 706 - skipping 25 buffers under ASan aa
ok 707 - skipping 25 buffers under ASan aba
ok 708 - skipping 26 buffers under ASan aa
ok 709 - skipping 26 buffers under ASan aba
ok 710 - skipping 27 buffers under ASan aa
ok 711 - skipping 27 buffers under ASan aba
ok 712 - skipping 28 buffers under ASan aa
ok 713 - skipping 28 buffers under ASan aba
ok 714 - skipping 29 buffers under ASan aa
ok 715 - skipping 29 buffers under ASan aba
ok 716 - skipping 30 buffers under ASan aa
ok 717 - skipping 30 buffers under ASan aba
ok 718 - skipping 31 buffers under ASan aa
ok 719 - skipping 31 buffers under ASan aba
ok 720 - skipping 32 buffers under ASan aa
ok 721 - skipping 32 buffers under ASan aba
ok 722 - skipping 33 buffers under ASan aa
ok 723 - skipping 33 buffers under ASan aba
ok 724 - skipping 34 buffers under ASan aa
ok 725 - skipping 34 buffers under ASan aba
ok 726 - skipping 35 buffers under ASan aa
ok 727 - skipping 35 buffers under ASan aba
ok 728 - skipping 36 buffers under ASan aa
ok 729 - skipping 36 buffers under ASan aba
ok 730 - skipping 37 buffers under ASan aa
ok 731 - skipping 37 buffers under ASan aba
ok 732 - skipping 38 buffers under ASan aa
ok 733 - skipping 38 buffers under ASan aba
ok 734 - skipping 39 buffers under ASan aa
ok 735 - skipping 39 buffers under ASan aba
ok 736 - skipping 40 buffers under ASan aa
ok 737 - skipping 40 buffers under ASan aba
ok 738 - skipping 41 buffers under ASan aa
ok 739 - skipping 41 buffers under ASan aba
ok 740 - skipping 42 buffers under ASan aa
ok 741 - skipping 42 buffers under ASan aba
ok 742 - skipping 43 buffers under ASan aa
ok 743 - skipping 43 buffers under ASan aba
ok 744 - skipping 44 buffers under ASan aa
ok 745 - skipping 44 buffers under ASan aba
ok 746 - skipping 45 buffers under ASan aa
ok 747 - skipping 45 buffers under ASan aba
ok 748 - skipping 46 buffers under ASan aa
ok 749 - skipping 46 buffers under ASan aba
ok 750 - skipping 47 buffers under ASan aa
ok 751 - skipping 47 buffers under ASan aba
ok 752 - skipping 48 buffers under ASan aa
ok 753 - skipping 48 buffers under ASan aba
ok 754 - skipping 49 buffers under ASan aa
ok 755 - skipping 49 buffers under ASan aba
ok 756 - skipping 50 buffers under ASan aa
ok 757 - skipping 50 buffers under ASan aba
ok 758 - skipping 51 buffers under ASan aa
ok 759 - skipping 51 buffers under ASan aba
ok 760 - skipping 52 buffers under ASan aa
ok 761 - skipping 52 buffers under ASan aba
ok 762 - skipping 53 buffers under ASan aa
ok 763 - skipping 53 buffers under ASan aba
ok 764 - skipping 54 buffers under ASan aa
ok 765 - skipping 54 buffers under ASan aba
ok 766 - skipping 55 buffers under ASan aa
ok 767 - skipping 55 buffers under ASan aba
ok 768 - skipping 56 buffers under ASan aa
ok 769 - skipping 56 buffers under ASan aba
ok 770 - skipping 57 buffers under ASan aa
ok 771 - skipping 57 buffers under ASan aba
ok 772 - skipping 58 buffers under ASan aa
ok 773 - skipping 58 buffers under ASan aba
ok 774 - skipping 59 buffers under ASan aa
ok 775 - skipping 59 buffers under ASan aba
ok 776 - skipping 60 buffers under ASan aa
ok 777 - skipping 60 buffers under ASan aba
ok 778 - skipping 61 buffers under ASan aa
ok 779 - skipping 61 buffers under ASan aba
ok 780 - skipping 62 buffers under ASan aa
ok 781 - skipping 62 buffers under ASan aba
ok 782 - skipping 63 buffers under ASan aa
ok 783 - skipping 63 buffers under ASan aba
ok 784 - skipping 64 buffers under ASan aa
ok 785 - skipping 64 buffers under ASan aba
ok 786 - skipping 65 buffers under ASan aa
ok 787 - skipping 65 buffers under ASan aba
ok 788 - skipping 66 buffers under ASan aa
ok 789 - skipping 66 buffers under ASan aba
ok 790 - skipping 67 buffers under ASan aa
ok 791 - skipping 67 buffers under ASan aba
ok 792 - skipping 68 buffers under ASan aa
ok 793 - skipping 68 buffers under ASan aba
ok 794 - skipping 69 buffers under ASan aa
ok 795 - skipping 69 buffers under ASan aba
ok 796 - skipping 70 buffers under ASan aa
ok 797 - skipping 70 buffers under ASan aba
ok 798 - skipping 71 buffers under ASan aa
ok 799 - skipping 71 buffers under ASan aba
ok 800 - skipping 72 buffers under ASan aa
ok 801 - skipping 72 buffers under ASan aba
ok 802 - skipping 73 buffers under ASan aa
ok 803 - skipping 73 buffers under ASan aba
ok 804 - skipping 74 buffers under ASan aa
ok 805 - skipping 74 buffers under ASan aba
ok 806 - skipping 75 buffers under ASan aa
ok 807 - skipping 75 buffers under ASan aba
ok 808 - skipping 76 buffers under ASan aa
ok 809 - skipping 76 buffers under ASan aba
ok 810 - skipping 77 buffers under ASan aa
ok 811 - skipping 77 buffers under ASan aba
ok 812 - skipping 78 buffers under ASan aa
ok 813 - skipping 78 buffers under ASan aba
ok 814 - skipping 79 buffers under ASan aa
ok 815 - skipping 79 buffers under ASan aba
ok 816 - skipping 80 buffers under ASan aa
ok 817 - skipping 80 buffers under ASan aba
ok 818 - skipping 81 buffers under ASan aa
ok 819 - skipping 81 buffers under ASan aba
ok 820 - skipping 82 buffers under ASan aa
ok 821 - skipping 82 buffers under ASan aba
ok 822 - skipping 83 buffers under ASan aa
ok 823 - skipping 83 buffers under ASan aba
ok 824 - skipping 84 buffers under ASan aa
ok 825 - skipping 84 buffers under ASan aba
ok 826 - skipping 85 buffers under ASan aa
ok 827 - skipping 85 buffers under ASan aba
ok 828 - skipping 86 buffers under ASan aa
ok 829 - skipping 86 buffers under ASan aba
ok 830 - skipping 87 buffers under ASan aa
ok 831 - skipping 87 buffers under ASan aba
ok 832 - skipping 88 buffers under ASan aa
ok 833 - skipping 88 buffers under ASan aba
ok 834 - skipping 89 buffers under ASan aa
ok 835 - skipping 89 buffers under ASan aba
ok 836 - skipping 90 buffers under ASan aa
ok 837 - skipping 90 buffers under ASan aba
ok 838 - skipping 91 buffers under ASan aa
ok 839 - skipping 91 buffers under ASan aba
ok 840 - skipping 92 buffers under ASan aa
ok 841 - skipping 92 buffers under ASan aba
ok 842 - skipping 93 buffers under ASan aa
ok 843 - skipping 93 buffers under ASan aba
ok 844 - skipping 94 buffers under ASan aa
ok 845 - skipping 94 buffers under ASan aba
ok 846 - skipping 95 buffers under ASan aa
ok 847 - skipping 95 buffers under ASan aba
ok 848 - skipping 96 buffers under ASan aa
ok 849 - skipping 96 buffers under ASan aba
ok 850 - skipping 97 buffers under ASan aa
ok 851 - skipping 97 buffers under ASan aba
ok 852 - skipping 98 buffers under ASan aa
ok 853 - skipping 98 buffers under ASan aba
ok 854 - skipping 99 buffers under ASan aa
ok 855 - skipping 99 buffers under ASan aba
ok 856 - skipping 100 buffers under ASan aa
ok 857 - skipping 100 buffers under ASan aba
ok 858 - COWable match
ok 859 - COWable match
ok 860 - COWable match
ok 861 - COWable match
ok 862
ok 863 - RT \#45667 without /x
ok 864 - RT \#45667 with /x
ok 865 - no crash with /@a/ when array has nonexistent elems
ok 866 - deleting *^R does not result in crashes
ok 867 - assigning to *^R does not result in a crash
ok 868 - undefining *^R within (??{}) does not result in a crash
ok 869 # skip Valid only for EBCDIC
ok 870 # skip Valid only for EBCDIC
ok 871 # skip Valid only for EBCDIC
ok 872 # skip Valid only for EBCDIC
ok 873 # skip Valid only for EBCDIC
ok 874 # skip Valid only for EBCDIC
ok 875 # skip Valid only for EBCDIC
ok 876 # skip Valid only for EBCDIC
ok 877 # skip Valid only for EBCDIC
ok 878 # skip Valid only for EBCDIC
ok 879 # skip Valid only for EBCDIC
ok 880 # skip Valid only for EBCDIC
ok 881 # skip Valid only for EBCDIC
ok 882 # skip Valid only for EBCDIC
ok 883 # skip Valid only for EBCDIC
ok 884 # skip Valid only for EBCDIC
ok 885 # skip Valid only for EBCDIC
ok 886 # skip Valid only for EBCDIC
ok 887 # skip Valid only for EBCDIC
ok 888 # skip Valid only for EBCDIC
ok 889 # skip Valid only for EBCDIC
ok 890 # skip Valid only for EBCDIC
ok 891 # skip Valid only for EBCDIC
ok 892 # skip Valid only for EBCDIC
ok 893 - qr/a?c/ generates a synthetic start class
ok 894 - qr/a?c/i generates a synthetic start class
ok 895 - qr/[ab]?c/ generates a synthetic start class
ok 896 - qr/\R?c/ generates a synthetic start class
ok 897 - qr/\d?c/d generates a synthetic start class
ok 898 - qr/\w?c/l generates a synthetic start class
ok 899 - qr/\s?c/a generates a synthetic start class
ok 900 - qr/[[:lower:]]?c/u generates a synthetic start class
ok 901 - \W with /d synthetic start class works
ok 902 - Y WITH DIAERESIS l =~ l
ok 903 - Y WITH DIAERESIS l =~ u
ok 904 - Y WITH DIAERESIS u =~ l
ok 905 - Y WITH DIAERESIS u =~ u
ok 906 - Y WITH DIAERESIS l =~ l
ok 907 - Y WITH DIAERESIS l =~ u
ok 908 - Y WITH DIAERESIS u =~ l
ok 909 - Y WITH DIAERESIS u =~ u
ok 910 - A WITH MACRON u =~ u
ok 911 - A WITH MACRON u =~ l
ok 912 - A WITH MACRON l =~ u
ok 913 - A WITH MACRON l =~ l
ok 914 - NEL is white-space under /x
ok 915 - '\(' is a literal in qr(...)
ok 916 - '\[' is a literal in qr[...]
ok 917 - '\{' is a literal in qr{...}, where it could be a quantifier
ok 918 - '\<' is a literal in qr<...>)
ok 919 - UTF-8 of /[x]/i matches upper case
ok 920 - "�" should match [�-�]
ok 921
ok 922
ok 923 - did not crash
ok 924 - [bbb...] resolved as character class, not subscript
ok 925 - qr/(??/ did not crash
ok 926 - qr/(??x/ shows x in error even if it's a wide character
ok 927 - qr/(?P/ did not crash
ok 928 - qr/(?Px/ shows x in error even if it's a wide character
ok 929 - qr/(?i-/ did not crash
ok 930 - qr/(?i-x/ shows x in error even if it's a wide character
ok 931 - big backref qr/(?3221225472)/ did not crash
ok 932 - big backref qr/(?-3221225472)/ did not crash
ok 933 - big backref qr/(?13835058055282163712)/ did not crash
ok 934 - big backref qr/(?-13835058055282163712)/ did not crash
ok 935 - test that we handle things like m/\888888888/ without infinite loops
ok 936 - test that we handle some UTF-8 malformations without looping
ok 937 - compiled GOSUB in CURLYM ok
ok 938 - matched GOSUB in CURLYM
ok 939 - qr{()(?1)}n didn't crash
ok 940 - gave appropriate error for qr{()(?1)}n
ok 941 - perl [\#126406] panic
ok 942 - [perl \#126182] - look ahead left recursion fails fast
ok 943 - [perl \#126182] - left-recursion fails fast
ok 944 - [perl \#126182] - inter-cyclic optional left recursion dies
ok 945 - [perl \#126182] - optional left recursion dies
ok 946 - [perl \#126182] - min mod left recursion dies
ok 947 - [perl \#126182] - * left recursion dies
ok 948 - [perl \#126182] - + left recursion dies
ok 949 - [perl \#126182] - {0,3} left recursion fails fast
ok 950 - [perl \#126182] - optional self recursion works
ok 951 - [perl \#126182] - recursion and possessive captures
ok 952 - [perl \#126182] - recursion and possessive captures
ok 953 - [perl \#126182] - recursion and possessive captures
ok 954 - [perl \#126182] - recursion and possessive captures
ok 955 - Test Perl 73464
ok 956 - /[\xE6\s]/i doesn't match \xC6 when not in UTF-8
ok 957 - /[\xE6\s]/i matches \xC6 when in UTF-8
ok 958 - m'\n' should interpolate escapes
ok 959 - fix [perl \#129950] - latin1 case
ok 960 - fix [perl \#129950] - utf8 case
ok 961 - empty pattern in regex codeblock: got expected start string
ok 962 - empty pattern in regex codeblock: first subst with no last-match worked right
ok 963 - empty pattern in regex codeblock: second subst worked right
ok 964 - empty pattern in regex codeblock: third subst worked right
ok 965 - empty pattern in regex codeblock: died as expected
ok 966 - empty pattern in regex codeblock: produced the right exception message
ok 967 - call to current regex doesn't leak
ok 968 - [perl \#130495] utf-8 character at end of /x comment should not misparse
ok 969 - [perl \#130522] with target '<undef>'
ok 970 - [perl \#130522] with target ''
ok 971 - [perl \#130522] with target '\0'
ok 972 - [perl \#130522] with target '\0z'
ok 973 - [perl \#130522] with target '\0z\0'
ok 974 - [perl \#130522] with target '\0z\n'
ok 975 - Offsets in debug output are not negative
ok 976 - buffer overflow for regexp component
ok 977 - don't bump whilem_c too much
ok 978 - integer overflow during compilation
ok 979 - RT \#131575
ok 980 - handle OPFAIL insert properly
ok 981 - dont throw assert errors trying to fbm past end of string
ok 982 - Use of sharp s under /di that changes to /ui
ok 983 - Use of sharp s under /di that changes to /ui
ok 984 - Undefined behavior in address sanitizer
ok 985 - Was getting 'Double free'
ok 986 - Bad length magic was left on $^R
ok 987 - [perl \#133871]
ok 988 - GH \#17367
ok 989 - GH \#17370
ok 990 - GH \#17371
ok 991 - GH \#17384
ok 992 - [perl \#133921]
ok 993 - [perl \#133921]
ok 994 - [perl \#133921]
ok 995 - [perl \#133921]
ok 996 - [perl \#133933]
ok 997 - /[\S\s]/l works
ok 998 - [^0] doesnt crash on UTF-8 target string
ok 999 - foo
ok 1000
ok 1001 - Assertion failure with /l exact string longer than a single node
ok 1002 - Assertion failure matching /il on single char folding to multi
ok 1003 - 4000000 isn't in pattern
ok 1004 - 4000001 is in pattern
ok 1005 - 4000002 isn't in pattern
ok 1006 - 4000003 is in pattern
ok 1007 - 4000004 isn't in pattern
ok 1008 - 4000005 is in pattern
ok 1009 - 4000006 isn't in pattern
ok 1010 - 1FFF isn't in pattern
ok 1011 - 2000 is in pattern
ok 1012 - 2001 isn't in pattern
ok 1013 - 200C isn't in pattern
ok 1014 - 200 is in pattern
ok 1015 - 200E isn't in pattern
ok 1016 - many evals did not die
ok 1017 - regexp correctly matched
ok 1018 - gh16947: test regexp corruption (GOSUB)
ok 1019 - gh16947: test fix doesn't break SUSPEND
ok 1020 - gh17730: should not crash
ok 1021 - gh17743: test regexp corruption (1)
ok 1022 - gh17743: test regexp corruption (2)

=================================================================
==112814==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 51328 byte(s) in 16 object(s) allocated from:
    #0 0x4d9ed8  (/home/atoomic/workspace/perl/perl+0x4d9ed8)
    #1 0x72c0da  (/home/atoomic/workspace/perl/perl+0x72c0da)
    #2 0x6e105e  (/home/atoomic/workspace/perl/perl+0x6e105e)
    #3 0x6d4cc2  (/home/atoomic/workspace/perl/perl+0x6d4cc2)
    #4 0x67e2c1  (/home/atoomic/workspace/perl/perl+0x67e2c1)
    #5 0x672181  (/home/atoomic/workspace/perl/perl+0x672181)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a1ac  (/home/atoomic/workspace/perl/perl+0x65a1ac)
    #8 0x872b76  (/home/atoomic/workspace/perl/perl+0x872b76)
    #9 0x8711d0  (/home/atoomic/workspace/perl/perl+0x8711d0)
    #10 0x7897f9  (/home/atoomic/workspace/perl/perl+0x7897f9)
    #11 0x589c0e  (/home/atoomic/workspace/perl/perl+0x589c0e)
    #12 0x589010  (/home/atoomic/workspace/perl/perl+0x589010)
    #13 0x50eefc  (/home/atoomic/workspace/perl/perl+0x50eefc)
    #14 0x7f9fcb27b041  (/lib64/libc.so.6+0x27041)

Direct leak of 6416 byte(s) in 16 object(s) allocated from:
    #0 0x4d9ed8  (/home/atoomic/workspace/perl/perl+0x4d9ed8)
    #1 0x72c0da  (/home/atoomic/workspace/perl/perl+0x72c0da)
    #2 0x6e1028  (/home/atoomic/workspace/perl/perl+0x6e1028)
    #3 0x6d4cc2  (/home/atoomic/workspace/perl/perl+0x6d4cc2)
    #4 0x67e2c1  (/home/atoomic/workspace/perl/perl+0x67e2c1)
    #5 0x672181  (/home/atoomic/workspace/perl/perl+0x672181)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a1ac  (/home/atoomic/workspace/perl/perl+0x65a1ac)
    #8 0x872b76  (/home/atoomic/workspace/perl/perl+0x872b76)
    #9 0x8711d0  (/home/atoomic/workspace/perl/perl+0x8711d0)
    #10 0x7897f9  (/home/atoomic/workspace/perl/perl+0x7897f9)
    #11 0x589c0e  (/home/atoomic/workspace/perl/perl+0x589c0e)
    #12 0x589010  (/home/atoomic/workspace/perl/perl+0x589010)
    #13 0x50eefc  (/home/atoomic/workspace/perl/perl+0x50eefc)
    #14 0x7f9fcb27b041  (/lib64/libc.so.6+0x27041)

Direct leak of 4720 byte(s) in 2 object(s) allocated from:
    #0 0x4d9d17  (/home/atoomic/workspace/perl/perl+0x4d9d17)
    #1 0x72c204  (/home/atoomic/workspace/perl/perl+0x72c204)
    #2 0x6e0d0b  (/home/atoomic/workspace/perl/perl+0x6e0d0b)
    #3 0x6d4cc2  (/home/atoomic/workspace/perl/perl+0x6d4cc2)
    #4 0x67e2c1  (/home/atoomic/workspace/perl/perl+0x67e2c1)
    #5 0x672181  (/home/atoomic/workspace/perl/perl+0x672181)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a1ac  (/home/atoomic/workspace/perl/perl+0x65a1ac)
    #8 0x5862dd  (/home/atoomic/workspace/perl/perl+0x5862dd)
    #9 0x50eeec  (/home/atoomic/workspace/perl/perl+0x50eeec)
    #10 0x7f9fcb27b041  (/lib64/libc.so.6+0x27041)

Direct leak of 590 byte(s) in 2 object(s) allocated from:
    #0 0x4d9d17  (/home/atoomic/workspace/perl/perl+0x4d9d17)
    #1 0x72c204  (/home/atoomic/workspace/perl/perl+0x72c204)
    #2 0x6e0cf7  (/home/atoomic/workspace/perl/perl+0x6e0cf7)
    #3 0x6d4cc2  (/home/atoomic/workspace/perl/perl+0x6d4cc2)
    #4 0x67e2c1  (/home/atoomic/workspace/perl/perl+0x67e2c1)
    #5 0x672181  (/home/atoomic/workspace/perl/perl+0x672181)
    #6 0x5256ce  (/home/atoomic/workspace/perl/perl+0x5256ce)
    #7 0x65a1ac  (/home/atoomic/workspace/perl/perl+0x65a1ac)
    #8 0x5862dd  (/home/atoomic/workspace/perl/perl+0x5862dd)
    #9 0x50eeec  (/home/atoomic/workspace/perl/perl+0x50eeec)
    #10 0x7f9fcb27b041  (/lib64/libc.so.6+0x27041)

SUMMARY: AddressSanitizer: 63054 byte(s) leaked in 36 allocation(s).
Dubious, test returned 1 (wstat 256, 0x100)
All 1022 subtests passed
    (less 72 skipped subtests: 950 okay)

Test Summary Report
-------------------
re/pat.t (Wstat: 256 Tests: 1022 Failed: 0)
  Non-zero exit status: 1
Files=1, Tests=1022, 72 wallclock secs ( 0.20 usr  0.04 sys + 23.47 cusr 35.19 csys = 58.90 CPU)
Result: FAIL
~/workspace/perl
jkeenan commented 4 years ago

We previously had failures in t/re/pat.t and t/re/pat_thr. on this host with this configuration on this branch. See: http://perl.develop-help.com/raw/?id=255189 http://perl.develop-help.com/raw/?id=255476

jkeenan commented 4 years ago

t/re/pat.t and t/re/pat_thr.t appear to fail frequently on this host. See, e.g., http://perl5.test-smoke.org/submatrix?test=../t/re/pat.t&pversion=5.33.1.

Is this perhaps a situation where these tests have been steadily failing on a given configuration across platforms, but never had a bug ticket filed about them?

atoomic commented 4 years ago

The git bisect took some time to run but it appears that the fixed came from https://github.com/Perl/perl5/commit/6841cd5977c2d35ad75233734c66983a65613fce which was added in v5.33.1 dev cycle

6841cd5977c2d35ad75233734c66983a65613fce is the first bad commit
commit 6841cd5977c2d35ad75233734c66983a65613fce
Author: Karl Williamson <khw@cpan.org>
Date:   Wed Aug 12 17:53:52 2020 -0600

    Fix leak GH #18054

    This was a simple matter of one path failing to free the memory.

 regcomp.c | 2 ++
 1 file changed, 2 insertions(+)

Question: do we want to cherry pick this change to our branch? I would say it s probably a good thing as the scope seems pretty small?

@jkeenan any opinions?

jkeenan commented 4 years ago

The git bisect took some time to run but it appears that the fixed came from Perl/perl5@6841cd5 which was added in v5.33.1 dev cycle

6841cd5977c2d35ad75233734c66983a65613fce is the first bad commit
commit 6841cd5977c2d35ad75233734c66983a65613fce
Author: Karl Williamson <khw@cpan.org>
Date:   Wed Aug 12 17:53:52 2020 -0600

    Fix leak GH #18054

    This was a simple matter of one path failing to free the memory.

 regcomp.c | 2 ++
 1 file changed, 2 insertions(+)

Question: do we want to cherry pick this change to our branch? I would say it s probably a good thing as the scope seems pretty small?

@jkeenan any opinions?

As a matter of fact, right now, I'm using my Linode to try to build with asan. So I'll check this out.

Thanks. jimk

jkeenan commented 4 years ago

I tried building p7 with asan on my Linode. It has an older Debian, so the current version of clang is just 4.0. I configured as follows:

git clean -dxf; ./Configure -des -Dcc="clang-4.0" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address"; make test_prep

I then called:

cd t; TEST_JOBS=1 ./perl harness -v re/pat.t; cd -

Excerpt from output:

...
ok 1022 - gh17743: test regexp corruption (2)

=================================================================
==29551==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 51328 byte(s) in 16 object(s) allocated from:
    #0 0x4fa68d  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x4fa68d)
    #1 0x73879a  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x73879a)
    #2 0x6f1ce2  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6f1ce2)
    #3 0x6df98a  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6df98a)
    #4 0x683cd5  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x683cd5)
    #5 0x6784fe  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6784fe)
    #6 0x549868  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x549868)
    #7 0x65fd06  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x65fd06)
    #8 0x881429  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x881429)
    #9 0x87fa5d  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x87fa5d)
    #10 0x796545  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x796545)
    #11 0x5adb4f  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5adb4f)
    #12 0x5328cd  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5328cd)
    #13 0x7ff8054e2b44  (/lib/x86_64-linux-gnu/libc.so.6+0x21b44)

Direct leak of 6416 byte(s) in 16 object(s) allocated from:
    #0 0x4fa68d  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x4fa68d)
    #1 0x73879a  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x73879a)
    #2 0x6f1cb0  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6f1cb0)
    #3 0x6df98a  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6df98a)
    #4 0x683cd5  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x683cd5)
    #5 0x6784fe  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6784fe)
    #6 0x549868  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x549868)
    #7 0x65fd06  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x65fd06)
    #8 0x881429  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x881429)
    #9 0x87fa5d  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x87fa5d)
    #10 0x796545  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x796545)
    #11 0x5adb4f  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5adb4f)
    #12 0x5328cd  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5328cd)
    #13 0x7ff8054e2b44  (/lib/x86_64-linux-gnu/libc.so.6+0x21b44)

Direct leak of 4720 byte(s) in 2 object(s) allocated from:
    #0 0x4fa465  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x4fa465)
    #1 0x7388dd  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x7388dd)
    #2 0x6f1b79  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6f1b79)
    #3 0x6df98a  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6df98a)
    #4 0x683cd5  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x683cd5)
    #5 0x6784fe  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6784fe)
    #6 0x549868  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x549868)
    #7 0x65fd06  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x65fd06)
    #8 0x5aa236  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5aa236)
    #9 0x5328bd  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5328bd)
    #10 0x7ff8054e2b44  (/lib/x86_64-linux-gnu/libc.so.6+0x21b44)

Direct leak of 590 byte(s) in 2 object(s) allocated from:
    #0 0x4fa465  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x4fa465)
    #1 0x7388dd  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x7388dd)
    #2 0x6f1b62  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6f1b62)
    #3 0x6df98a  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6df98a)
    #4 0x683cd5  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x683cd5)
    #5 0x6784fe  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x6784fe)
    #6 0x549868  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x549868)
    #7 0x65fd06  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x65fd06)
    #8 0x5aa236  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5aa236)
    #9 0x5328bd  (/home/jkeenan/gitwork/perl-atoomic-2/perl+0x5328bd)
    #10 0x7ff8054e2b44  (/lib/x86_64-linux-gnu/libc.so.6+0x21b44)

SUMMARY: AddressSanitizer: 63054 byte(s) leaked in 36 allocation(s).
Dubious, test returned 1 (wstat 256, 0x100)
All 1022 subtests passed 
    (less 72 skipped subtests: 950 okay)

Test Summary Report
-------------------
re/pat.t (Wstat: 256 Tests: 1022 Failed: 0)
  Non-zero exit status: 1
Files=1, Tests=1022, 89 wallclock secs ( 0.31 usr  0.04 sys + 32.27 cusr 55.35 csys = 87.97 CPU)
Result: FAIL

So: non-threaded build: All non-skipped unit tests passed, but AddressSanitizer reported leaks and test was graded FAIL

I then realized that since I had built without threads, I wouldn't be able to run t/re/pat_thr.t. So I added -Dusethreads to the config args and attempted to rebuild. However, make failed with output shown here.

So I applied khw's patch and rebuilt unthreaded and re-tested.

$ cd t; TEST_JOBS=1 ./perl harness -v re/pat.t re/pat_thr.t 1>../err 2>&1; cd - ; vi err
...
ok 1021 - gh17743: test regexp corruption (1)
ok 1022 - gh17743: test regexp corruption (2)
ok
re/pat_thr.t .. skipped: no ithreads
All tests successful.
Files=2, Tests=1022, 89 wallclock secs ( 0.18 usr  0.02 sys + 32.19 cusr 55.32 csys = 87.71 CPU)
Result: PASS

So, for me, that patch cleared up the problem in t/re/pat.t on unthreaded asan builds. Let's apply it.

atoomic commented 4 years ago

@jkeenan this is now in alpha-dev-02-strict and merged as 9ecd4bde

atoomic commented 4 years ago

IMO we can close this case

jkeenan commented 4 years ago

IMO we can close this case

What about the threaded build problem?

atoomic commented 4 years ago

I've not tested it, but regarding the output this looks like very similar. I can confirm it then close this case

atoomic commented 4 years ago

using blead@90f5f043 or v5.32.0 or alpha-dev-02-strict@c7dd377c both are broken when compiling with threads

git clean -dxf; ./Configure -Dusedevel -des -Dcc="ccache clang" -Accflags="-Werror=declaration-after-statement -g -fno-omit-frame-pointer -fsanitize=address  -fno-common -fsanitize-blacklist=`pwd`/asan_ignore" -Aldflags="-fsanitize=address" -Duseithreads

So yes this is broken in our alpha-dev-02-strict in the same way it's broken upstream. We need to report it upstream and close this case.

...
SUMMARY: AddressSanitizer: 57735 byte(s) leaked in 47 allocation(s).
Failed to build miniperl. Please run make minitest
make: *** [makefile:365: lib/buildcustomize.pl] Error 1
atoomic commented 4 years ago

I reported it as #18107 and #18108 both issues seems to be there for a while >= 5.18 at least...

atoomic commented 4 years ago

@jkeenan we can close this case