perl5
perl5 copied to clipboard
t/re/reg_mesg and t/re/regex_sets tests failing on sparc64-linux-gnu since 5.36
Since Perl version 5.36, the tests t/re/reg_mesg
and t/re/regex_sets
are failing on the sparc64-linux-gnu target:
t/re/reg_eval .................................................... ok
t/re/reg_eval_scope .............................................. ok
t/re/reg_fold .................................................... ok
t/re/reg_mesg .................................................... FAILED--no leader found
t/re/reg_namedcapture ............................................ ok
t/re/reg_nc_tie .................................................. ok
t/re/reg_nocapture ............................................... ok
t/re/reg_pmod .................................................... ok
t/re/reg_posixcc ................................................. ok
t/re/regex_sets .................................................. FAILED--no leader found
t/re/regex_sets_compat ........................................... ok
t/re/regexp ...................................................... ok
t/re/regexp_noamp ................................................ ok
t/re/regexp_nonull ............................................... ok
Full build log: https://buildd.debian.org/status/fetch.php?pkg=perl&arch=sparc64&ver=5.36.0-4&stamp=1666130893&raw=0
Can you run those two tests individually in the build directory and paste the relevant part of the results? Something like:
$ cd t; TEST_JOBS=1 ./perl harness -v re/reg_mesg.t re/regex_sets.t; cd -
Thank you very much.
Here's what I got for the tests in the static build:
(sid-sparc64-sbuild2)root@stadler:/build/perl-7Cs41Q/perl-5.36.0/build-static# cd t; TEST_JOBS=1 ../perl harness -v re/reg_mesg.t re/regex_sets.t; cd -
re/reg_mesg.t ....
ok 1 - /[[=foo=]]/ died
ok 2 - ... and gave expected message
ok 3 - ... and no other warnings
ok 4 - /(?<= .*)/ died
ok 5 - ... and gave expected message
ok 6 - ... and no other warnings
ok 7 - /(?<= a+)/ died
ok 8 - ... and gave expected message
ok 9 - ... and no other warnings
ok 10 - /(?<= a{255})/ died
ok 11 - ... and gave expected message
ok 12 - ... and no other warnings
ok 13 - /(?<= a{0,255})/ died
ok 14 - ... and gave expected message
ok 15 - ... and no other warnings
ok 16 - /(?<= a{200}b{55})/ died
ok 17 - ... and gave expected message
ok 18 - ... and no other warnings
ok 19 - /(?<= x{1000})/ died
ok 20 - ... and gave expected message
ok 21 - ... and no other warnings
ok 22 - /(?<= (?&x))(?<x>x+)/ died
ok 23 - ... and gave expected message
ok 24 - ... and no other warnings
ok 25 - /(?@)/ died
ok 26 - ... and gave expected message
ok 27 - ... and no other warnings
ok 28 - /(?{ 1/ died
ok 29 - ... and gave expected message
ok 30 - ... and no other warnings
ok 31 - /(?(1x))/ died
ok 32 - ... and gave expected message
ok 33 - ... and no other warnings
ok 34 - /(?(1x(?\#)))/ died
ok 35 - ... and gave expected message
ok 36 - ... and no other warnings
ok 37 - /(?(1)/ died
ok 38 - ... and gave expected message
ok 39 - ... and no other warnings
ok 40 - /(?(1)x/ died
ok 41 - ... and gave expected message
ok 42 - ... and no other warnings
ok 43 - /(?(1)x|y/ died
ok 44 - ... and gave expected message
ok 45 - ... and no other warnings
ok 46 - /(?(1)x|y|z)/ died
ok 47 - ... and gave expected message
ok 48 - ... and no other warnings
ok 49 - /(?(x)y|x)/ died
ok 50 - ... and gave expected message
ok 51 - ... and no other warnings
ok 52 - /(?(??{}))/ died
ok 53 - ... and gave expected message
ok 54 - ... and no other warnings
ok 55 - /(?(?[]))/ died
ok 56 - ... and gave expected message
ok 57 - ... and no other warnings
ok 58 - /(?/ died
ok 59 - ... and gave expected message
ok 60 - ... and no other warnings
ok 61 - /(?;x/ died
ok 62 - ... and gave expected message
ok 63 - ... and no other warnings
ok 64 - /(?<;x/ died
ok 65 - ... and gave expected message
ok 66 - ... and no other warnings
ok 67 - /(?\ix/ died
ok 68 - ... and gave expected message
ok 69 - ... and no other warnings
ok 70 - /(?\mx/ died
ok 71 - ... and gave expected message
ok 72 - ... and no other warnings
ok 73 - /(?\:x/ died
ok 74 - ... and gave expected message
ok 75 - ... and no other warnings
ok 76 - /(?\=x/ died
ok 77 - ... and gave expected message
ok 78 - ... and no other warnings
ok 79 - /(?\!x/ died
ok 80 - ... and gave expected message
ok 81 - ... and no other warnings
ok 82 - /(?\<=x/ died
ok 83 - ... and gave expected message
ok 84 - ... and no other warnings
ok 85 - /(?\<!x/ died
ok 86 - ... and gave expected message
ok 87 - ... and no other warnings
ok 88 - /(?\>x/ died
ok 89 - ... and gave expected message
ok 90 - ... and no other warnings
ok 91 - /(?^-i:foo)/ died
ok 92 - ... and gave expected message
ok 93 - ... and no other warnings
ok 94 - /(?^-i)foo/ died
ok 95 - ... and gave expected message
ok 96 - ... and no other warnings
ok 97 - /(?^d:foo)/ died
ok 98 - ... and gave expected message
ok 99 - ... and no other warnings
ok 100 - /(?^d)foo/ died
ok 101 - ... and gave expected message
ok 102 - ... and no other warnings
ok 103 - /(?^lu:foo)/ died
ok 104 - ... and gave expected message
ok 105 - ... and no other warnings
ok 106 - /(?^lu)foo/ died
ok 107 - ... and gave expected message
ok 108 - ... and no other warnings
ok 109 - /(?da:foo)/ died
ok 110 - ... and gave expected message
ok 111 - ... and no other warnings
ok 112 - /(?lil:foo)/ died
ok 113 - ... and gave expected message
ok 114 - ... and no other warnings
ok 115 - /(?aaia:foo)/ died
ok 116 - ... and gave expected message
ok 117 - ... and no other warnings
ok 118 - /(?i-l:foo)/ died
ok 119 - ... and gave expected message
ok 120 - ... and no other warnings
ok 121 - /((x)/ died
ok 122 - ... and gave expected message
ok 123 - ... and no other warnings
ok 124 - /{(}/ died
ok 125 - ... and gave expected message
ok 126 - ... and no other warnings
ok 127 - /x{65536}/ died
ok 128 - ... and gave expected message
ok 129 - ... and no other warnings
ok 130 - /x{65536,}/ died
ok 131 - ... and gave expected message
ok 132 - ... and no other warnings
ok 133 - /x{01,2}/ died
ok 134 - ... and gave expected message
ok 135 - ... and no other warnings
ok 136 - /x{1,02}/ died
ok 137 - ... and gave expected message
ok 138 - ... and no other warnings
ok 139 - /x**/ died
ok 140 - ... and gave expected message
ok 141 - ... and no other warnings
ok 142 - /x[/ died
ok 143 - ... and gave expected message
ok 144 - ... and no other warnings
ok 145 - /*/ died
ok 146 - ... and gave expected message
ok 147 - ... and no other warnings
ok 148 - /\p{x/ died
ok 149 - ... and gave expected message
ok 150 - ... and no other warnings
ok 151 - /[\p{x]/ died
ok 152 - ... and gave expected message
ok 153 - ... and no other warnings
ok 154 - /(x)\2/ died
ok 155 - ... and gave expected message
ok 156 - ... and no other warnings
ok 157 - /\g/ died
ok 158 - ... and gave expected message
ok 159 - ... and no other warnings
ok 160 - /\g{1/ died
ok 161 - ... and gave expected message
ok 162 - ... and no other warnings
ok 163 - /\g{-abc}/ died
ok 164 - ... and gave expected message
ok 165 - ... and no other warnings
ok 166 - /(?<;x/ died
ok 167 - ... and gave expected message
ok 168 - ... and no other warnings
ok 169 - my $m = "\\"; $m =~ $m died
ok 170 - ... and gave expected message
ok 171 - ... and no other warnings
ok 172 - /\x{ 1 / died
ok 173 - ... and gave expected message
ok 174 - ... and no other warnings
ok 175 - /\x{X/ died
ok 176 - ... and gave expected message
ok 177 - ... and no other warnings
ok 178 - /[\x{X]/ died
ok 179 - ... and gave expected message
ok 180 - ... and no other warnings
ok 181 - /[\x{ A ]/ died
ok 182 - ... and gave expected message
ok 183 - ... and no other warnings
ok 184 - /\o{ 1 / died
ok 185 - ... and gave expected message
ok 186 - ... and no other warnings
ok 187 - /\o{X/ died
ok 188 - ... and gave expected message
ok 189 - ... and no other warnings
ok 190 - /[\o{X]/ died
ok 191 - ... and gave expected message
ok 192 - ... and no other warnings
ok 193 - /[\o{ 7 ]/ died
ok 194 - ... and gave expected message
ok 195 - ... and no other warnings
ok 196 - /[[:barf:]]/ died
ok 197 - ... and gave expected message
ok 198 - ... and no other warnings
ok 199 - /[[=barf=]]/ died
ok 200 - ... and gave expected message
ok 201 - ... and no other warnings
ok 202 - /[[.barf.]]/ died
ok 203 - ... and gave expected message
ok 204 - ... and no other warnings
ok 205 - /[z-a]/ died
ok 206 - ... and gave expected message
ok 207 - ... and no other warnings
ok 208 - /\p/ died
ok 209 - ... and gave expected message
ok 210 - ... and no other warnings
ok 211 - /\P/ died
ok 212 - ... and gave expected message
ok 213 - ... and no other warnings
ok 214 - /\p{}/ died
ok 215 - ... and gave expected message
ok 216 - ... and no other warnings
ok 217 - /\P{}/ died
ok 218 - ... and gave expected message
ok 219 - ... and no other warnings
ok 220 - /a\b{cde/ died
ok 221 - ... and gave expected message
ok 222 - ... and no other warnings
ok 223 - /a\B{cde/ died
ok 224 - ... and gave expected message
ok 225 - ... and no other warnings
ok 226 - /\b{}/ died
ok 227 - ... and gave expected message
ok 228 - ... and no other warnings
ok 229 - /\B{}/ died
ok 230 - ... and gave expected message
ok 231 - ... and no other warnings
ok 232 - /\b{gc}/ died
ok 233 - ... and gave expected message
ok 234 - ... and no other warnings
ok 235 - /\B{gc}/ died
ok 236 - ... and gave expected message
ok 237 - ... and no other warnings
ok 238 - /(?[[[::]]])/ died
ok 239 - ... and gave expected message
ok 240 - ... and no other warnings
ok 241 - /(?[[[:w:]]])/ died
ok 242 - ... and gave expected message
ok 243 - ... and no other warnings
ok 244 - /(?[a])/ died
ok 245 - ... and gave expected message
ok 246 - ... and no other warnings
ok 247 - /(?[ + \t ])/ died
ok 248 - ... and gave expected message
ok 249 - ... and no other warnings
ok 250 - /(?[ \cK - ( + \t ) ])/ died
ok 251 - ... and gave expected message
ok 252 - ... and no other warnings
ok 253 - /(?[ \cK ( \t ) ])/ died
ok 254 - ... and gave expected message
ok 255 - ... and no other warnings
ok 256 - /(?[ \cK \t ])/ died
ok 257 - ... and gave expected message
ok 258 - ... and no other warnings
ok 259 - /(?[ \0004 ])/ died
ok 260 - ... and gave expected message
ok 261 - ... and no other warnings
ok 262 - /(?[ \05 ])/ died
ok 263 - ... and gave expected message
ok 264 - ... and no other warnings
ok 265 - /(?[ \o{1038} ])/ died
ok 266 - ... and gave expected message
ok 267 - ... and no other warnings
ok 268 - /(?[ \o{} ])/ died
ok 269 - ... and gave expected message
ok 270 - ... and no other warnings
ok 271 - /(?[ \x{defg} ])/ died
ok 272 - ... and gave expected message
ok 273 - ... and no other warnings
ok 274 - /(?[ \xabcdef ])/ died
ok 275 - ... and gave expected message
ok 276 - ... and no other warnings
ok 277 - /(?[ \x{} ])/ died
ok 278 - ... and gave expected message
ok 279 - ... and no other warnings
ok 280 - /(?[ \cK + ) ])/ died
ok 281 - ... and gave expected message
ok 282 - ... and no other warnings
ok 283 - /(?[ \cK + ])/ died
ok 284 - ... and gave expected message
ok 285 - ... and no other warnings
ok 286 - /(?[ ( ) ])/ died
ok 287 - ... and gave expected message
ok 288 - ... and no other warnings
ok 289 - /(?[[0]+()+])/ died
ok 290 - ... and gave expected message
ok 291 - ... and no other warnings
ok 292 - /(?[ \p{foo} ])/ died
ok 293 - ... and gave expected message
ok 294 - ... and no other warnings
ok 295 - /(?[ \p{ foo = bar } ])/ died
ok 296 - ... and gave expected message
ok 297 - ... and no other warnings
ok 298 - /(?[ \8 ])/ died
ok 299 - ... and gave expected message
ok 300 - ... and no other warnings
ok 301 - /(?[ \t ]/ died
ok 302 - ... and gave expected message
ok 303 - ... and no other warnings
ok 304 - /(?[ [ \t ]/ died
ok 305 - ... and gave expected message
ok 306 - ... and no other warnings
ok 307 - /(?[ \t ] ]/ died
ok 308 - ... and gave expected message
ok 309 - ... and no other warnings
ok 310 - /(?[ [ ] ]/ died
ok 311 - ... and gave expected message
ok 312 - ... and no other warnings
ok 313 - /(?[ \t + \e \# This was supposed to be a comment ])/ died
ok 314 - ... and gave expected message
ok 315 - ... and no other warnings
ok 316 - /(?[ ])/ died
ok 317 - ... and gave expected message
ok 318 - ... and no other warnings
ok 319 - m/(?[[a-\d]])/ died
ok 320 - ... and gave expected message
ok 321 - ... and no other warnings
ok 322 - m/(?[[\w-x]])/ died
ok 323 - ... and gave expected message
ok 324 - ... and no other warnings
ok 325 - m/(?[[a-\pM]])/ died
ok 326 - ... and gave expected message
ok 327 - ... and no other warnings
ok 328 - m/(?[[\pM-x]])/ died
ok 329 - ... and gave expected message
ok 330 - ... and no other warnings
ok 331 - m/(?[[^\N{LATIN CAPITAL LETTER A WITH MACRON AND GRAVE}]])/ died
ok 332 - ... and gave expected message
ok 333 - ... and no other warnings
ok 334 - m/(?[ \p{Digit} & (?^(?[ \p{Thai} | \p{Lao} ]))])/ died
ok 335 - ... and gave expected message
ok 336 - ... and no other warnings
ok 337 - m/(?[ \p{Digit} & (?(?[ \p{Thai} | \p{Lao} ]))])/ died
ok 338 - ... and gave expected message
ok 339 - ... and no other warnings
ok 340 - m/\p{Is_Is_Any}/ died
ok 341 - ... and gave expected message
ok 342 - ... and no other warnings
ok 343 - m/\o{/ died
ok 344 - ... and gave expected message
ok 345 - ... and no other warnings
ok 346 - m/\o/ died
ok 347 - ... and gave expected message
ok 348 - ... and no other warnings
ok 349 - m/\o{}/ died
ok 350 - ... and gave expected message
ok 351 - ... and no other warnings
ok 352 - m/[\o{]/ died
ok 353 - ... and gave expected message
ok 354 - ... and no other warnings
ok 355 - m/[\o]/ died
ok 356 - ... and gave expected message
ok 357 - ... and no other warnings
ok 358 - m/[\o{}]/ died
ok 359 - ... and gave expected message
ok 360 - ... and no other warnings
ok 361 - m/(?^-i:foo)/ died
ok 362 - ... and gave expected message
ok 363 - ... and no other warnings
ok 364 - m/\87/ died
ok 365 - ... and gave expected message
ok 366 - ... and no other warnings
ok 367 - m/a\87/ died
ok 368 - ... and gave expected message
ok 369 - ... and no other warnings
ok 370 - m/a\97/ died
ok 371 - ... and gave expected message
ok 372 - ... and no other warnings
ok 373 - m/(*DOOF)/ died
ok 374 - ... and gave expected message
ok 375 - ... and no other warnings
ok 376 - m/(?&a/ died
ok 377 - ... and gave expected message
ok 378 - ... and no other warnings
ok 379 - m/(?P=/ died
ok 380 - ... and gave expected message
ok 381 - ... and no other warnings
ok 382 - m/(?'/ died
ok 383 - ... and gave expected message
ok 384 - ... and no other warnings
ok 385 - m/(?</ died
ok 386 - ... and gave expected message
ok 387 - ... and no other warnings
ok 388 - m/(?&/ died
ok 389 - ... and gave expected message
ok 390 - ... and no other warnings
ok 391 - m/(?(</ died
ok 392 - ... and gave expected message
ok 393 - ... and no other warnings
ok 394 - m/(?('/ died
ok 395 - ... and gave expected message
ok 396 - ... and no other warnings
ok 397 - m/\g{/ died
ok 398 - ... and gave expected message
ok 399 - ... and no other warnings
ok 400 - m/\k</ died
ok 401 - ... and gave expected message
ok 402 - ... and no other warnings
ok 403 - /((?\# This is a comment in the middle of a token)?:foo)/ died
ok 404 - ... and gave expected message
ok 405 - ... and no other warnings
ok 406 - /((?\# This is a comment in the middle of a token)*FAIL)/ died
ok 407 - ... and gave expected message
ok 408 - ... and no other warnings
ok 409 - /((?\# This is a comment in the middle of a token)*script_run:foo)/ died
ok 410 - ... and gave expected message
ok 411 - ... and no other warnings
ok 412 - /(*script_runfoo)/ died
ok 413 - ... and gave expected message
ok 414 - ... and no other warnings
ok 415 - /(*srfoo)/ died
ok 416 - ... and gave expected message
ok 417 - ... and no other warnings
ok 418 - /(*script_run)/ died
ok 419 - ... and gave expected message
ok 420 - ... and no other warnings
ok 421 - /(*sr)/ died
ok 422 - ... and gave expected message
ok 423 - ... and no other warnings
ok 424 - /(*pla)/ died
ok 425 - ... and gave expected message
ok 426 - ... and no other warnings
ok 427 - /(*script_run/ died
ok 428 - ... and gave expected message
ok 429 - ... and no other warnings
ok 430 - /(*sr/ died
ok 431 - ... and gave expected message
ok 432 - ... and no other warnings
ok 433 - /(*script_run:foo/ died
ok 434 - ... and gave expected message
ok 435 - ... and no other warnings
ok 436 - /(*sr:foo/ died
ok 437 - ... and gave expected message
ok 438 - ... and no other warnings
ok 439 - /(?[\ &!])/ died
ok 440 - ... and gave expected message
ok 441 - ... and no other warnings
ok 442 - /(?[\ +!])/ died
ok 443 - ... and gave expected message
ok 444 - ... and no other warnings
ok 445 - /(?[\ -!])/ died
ok 446 - ... and gave expected message
ok 447 - ... and no other warnings
ok 448 - /(?[\ ^!])/ died
ok 449 - ... and gave expected message
ok 450 - ... and no other warnings
ok 451 - /(?[\ |!])/ died
ok 452 - ... and gave expected message
ok 453 - ... and no other warnings
ok 454 - /(?[()-!])/ died
ok 455 - ... and gave expected message
ok 456 - ... and no other warnings
ok 457 - /(?[!()])/ died
ok 458 - ... and gave expected message
ok 459 - ... and no other warnings
ok 460 - /\w{/ died
ok 461 - ... and gave expected message
ok 462 - ... and no other warnings
ok 463 - /\q{/ died
ok 464 - ... and gave expected message
ok 465 - ... and no other warnings
ok 466 - /\A{/ died
ok 467 - ... and gave expected message
ok 468 - ... and no other warnings
ok 469 - /(?<=/ died
ok 470 - ... and gave expected message
ok 471 - ... and no other warnings
ok 472 - /(?<!/ died
ok 473 - ... and gave expected message
ok 474 - ... and no other warnings
ok 475 - /(?!/ died
ok 476 - ... and gave expected message
ok 477 - ... and no other warnings
ok 478 - /(?=/ died
ok 479 - ... and gave expected message
ok 480 - ... and no other warnings
ok 481 - /\p{vertical
tab}/ died
ok 482 - ... and gave expected message
ok 483 - ... and no other warnings
All 483 subtests passed
re/regex_sets.t .. No subtests run
Test Summary Report
-------------------
re/reg_mesg.t (Wstat: 10 (Signal: BUS) Tests: 483 Failed: 0)
Non-zero wait status: 10
Parse errors: No plan found in TAP output
re/regex_sets.t (Wstat: 10 (Signal: BUS) Tests: 0 Failed: 0)
Non-zero wait status: 10
Parse errors: No plan found in TAP output
Files=2, Tests=483, 1 wallclock secs ( 0.28 usr 0.03 sys + 0.90 cusr 0.08 csys = 1.29 CPU)
Result: FAIL
/build/perl-7Cs41Q/perl-5.36.0/build-static
(sid-sparc64-sbuild2)root@stadler:/build/perl-7Cs41Q/perl-5.36.0/build-static#
Running the dynamic tests didn't work.
FWIW, the GCC compile farm has two SPARC machines running Linux available for such tests.
See: https://gcc.gnu.org/wiki/CompileFarm
Could you build your perl with -g and -DDEBUGGING and then run the tests that throwing exceptions in some kind of debugger so we can see the C backtrace when the exception is thrown?
Could you build your perl with -g and -DDEBUGGING and then run the tests that throwing exceptions in some kind of debugger so we can see the C backtrace when the exception is thrown?
OK, let me start by building perl5 from git on gcc202
and then I'll try to get a backtrace.
Interesting. The testsuite passes on git master. Let me bisect this.
Can we close this? @glaubitz did you get anywhere with it?
@glaubitz I suspect this is fixed; if I don't hear from you otherwise by May 19, 2024, we will close this ticket
@glaubitz I suspect this is fixed; if I don't hear from you otherwise by May 19, 2024, we will close this ticket
It's fixed with 5.38.x, but still present in 5.36.x.
I feel like I remember @glaubitz and I looking at this together and I ended up concluding which patches we needed in 5.36.x to fix it, then I completely forgot about it as we'd already moved to 5.38 in Gentoo.
Let me try dig up my logs...
EDIT: https://github.com/Perl/perl5/commit/89d80cc9efb3eefc31aa62b32c9e745f8de6412f apparently, which tracks. It's on the 5.36 branch but not in a 5.36 point release.
5.36 will become unsupported with the release of 5.40 scheduled for a month from now. And I doubt that we would release a new 5.36 in the meantime for just this issue.
Sorry, to be clear, I wasn't asking for a new release - just trying to state the situation. The status quo is OK for us, but I can't speak for Debian. Hopefully they can backport the patch.
Debian is using 5.38.2 in unstable which is the only distribution available for sparc64. Hence, Debian isn't affected by the bug anymore either.