JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
45.69k stars 5.48k forks source link

[CI] Intermittent failure in `Profile` on aarch64-linux-gnu #54839

Open giordano opened 4 months ago

giordano commented 4 months ago

With #52434 seemingly fixed, we now have new exciting(?) intermittent test failures on aarch64-linux-gnu, this time in the Profile testset: example 1

The global RNG seed was 0x19c9238c8613eb4b179e96f98dc04cb6.

Error in testset Profile:
Test Failed at /cache/build/tester-armageddon-6/julialang/julia-master/julia-319d8900db/share/julia/stdlib/v1.12/Profile/test/runtests.jl:181
  Expression: success(p)
Error in testset Profile:
Test Failed at /cache/build/tester-armageddon-6/julialang/julia-master/julia-319d8900db/share/julia/stdlib/v1.12/Profile/test/runtests.jl:183
  Expression: occursin("done", s)
   Evaluated: occursin("done", "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n")
Error in testset Profile:
Error During Test at /cache/build/tester-armageddon-6/julialang/julia-master/julia-319d8900db/share/julia/stdlib/v1.12/Profile/test/runtests.jl:184
  Test threw exception
  Expression: parse(Int, (split(s, '\n'))[end]) > 100
  ArgumentError: input string is empty or only contains whitespace
  Stacktrace:
   [1] tryparse_internal(::Type{Int64}, s::SubString{String}, startpos::Int64, endpos::Int64, base_::Int64, raise::Bool)
     @ Base ./parse.jl:115
   [2] parse(::Type{Int64}, s::SubString{String}; base::Nothing)
     @ Base ./parse.jl:254
   [3] parse(::Type{Int64}, s::SubString{String})
     @ Base ./parse.jl:253
   [4] top-level scope
     @ /cache/build/tester-armageddon-6/julialang/julia-master/julia-319d8900db/share/julia/stdlib/v1.12/Profile/test/runtests.jl:184
   [5] macro expansion
     @ /cache/build/tester-armageddon-6/julialang/julia-master/julia-319d8900db/share/julia/stdlib/v1.12/Test/src/Test.jl:676 [inlined]

example 2:

The global RNG seed was 0x9dff9cfd5ba0ef8a22a85a0c1776391e.

Test Failed at /cache/build/tester-armageddon-9/julialang/julia-master/julia-0ae5b321b3/share/julia/stdlib/v1.12/Profile/test/runtests.jl:52
  Expression: !(isempty(str))
   Evaluated: !(isempty(""))
Error in testset Profile:
Test Failed at /cache/build/tester-armageddon-9/julialang/julia-master/julia-0ae5b321b3/share/julia/stdlib/v1.12/Profile/test/runtests.jl:62
  Expression: !(isempty(String(take!(iobuf))))
   Evaluated: !(isempty(""))
Error in testset Profile:
Test Failed at /cache/build/tester-armageddon-9/julialang/julia-master/julia-0ae5b321b3/share/julia/stdlib/v1.12/Profile/test/runtests.jl:62
  Expression: !(isempty(String(take!(iobuf))))
   Evaluated: !(isempty(""))
Error in testset Profile:
Test Failed at /cache/build/tester-armageddon-9/julialang/julia-master/julia-0ae5b321b3/share/julia/stdlib/v1.12/Profile/test/runtests.jl:62
  Expression: !(isempty(String(take!(iobuf))))
   Evaluated: !(isempty(""))
Error in testset Profile:
Test Failed at /cache/build/tester-armageddon-9/julialang/julia-master/julia-0ae5b321b3/share/julia/stdlib/v1.12/Profile/test/runtests.jl:62
  Expression: !(isempty(String(take!(iobuf))))
   Evaluated: !(isempty(""))
Error in testset Profile:
Test Failed at /cache/build/tester-armageddon-9/julialang/julia-master/julia-0ae5b321b3/share/julia/stdlib/v1.12/Profile/test/runtests.jl:62
  Expression: !(isempty(String(take!(iobuf))))
   Evaluated: !(isempty(""))

Edit: I could reproduce the failure with for _ in 1:50; Base.runtests("Profile"; seed=0x19c9238c8613eb4b179e96f98dc04cb6); end (doing a loop to increase the chances to reproduce this, it isn't systematic, but with that seed it seems to reproduce quite frequently) back in Julia v1.6.0 (didn't go farther back)

vtjnash commented 4 months ago

It is probably an upstream libunwind bug, based on what that test is, and the way that libunwind tends to fix this code only on one platform at a time, even though the code is identical but copied separately for each platform