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

CI: asan job fails with "error during bootstrap": InexactError(:trunc, Int64, Inf) #44361

Closed
DilumAluthge opened this issue Feb 26, 2022 · 5 comments · Fixed by #44420
Closed
Labels
bug Indicates an unexpected problem or unintended behavior ci Continuous integration
Milestone

Comments

@DilumAluthge
Copy link
Member

Example log:

docs/Docs.jl
docs/bindings.jl
docs/utils.jl
Base  ─────────────       NaN seconds
ArgTools  ─────────       NaN seconds
Artifacts  ────────       NaN seconds
Base64  ───────────       NaN seconds
CRC32c  ───────────       NaN seconds
FileWatching  ─────       NaN seconds
Libdl  ────────────       NaN seconds
Logging  ──────────       NaN seconds
Mmap  ─────────────       NaN seconds
NetworkOptions  ───       NaN seconds
SHA  ──────────────       NaN seconds
Serialization  ────       NaN seconds
Sockets  ──────────       NaN seconds
Unicode  ──────────       NaN seconds
DelimitedFiles  ───       NaN seconds
LinearAlgebra  ────       NaN seconds
Markdown  ─────────       NaN seconds
Printf  ───────────       NaN seconds
error during bootstrap:
LoadError("sysimg.jl", 19, LoadError("/cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan/usr/share/julia/stdlib/v1.9/Random/src/Random.jl", 3, LoadError("/cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan/usr/share/julia/stdlib/v1.9/Random/src/DSFMT.jl", 3, InexactError(:trunc, Int64, Inf))))
trunc at ./float.jl:781 [inlined]
floor at ./float.jl:357
unknown function (ip: 0x7fd560581404)
_jl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2367
ijl_apply_generic at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2549
jl_apply at /cache/build/default-amdci5-8/julialang/julia-master/src/julia.h:1827
do_call at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:126
eval_value at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:215
eval_stmt_value at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:166
eval_body at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:594
jl_interpret_toplevel_thunk at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:750
top-level scope at /cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan/usr/share/julia/stdlib/v1.9/Random/src/DSFMT.jl:15
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:906
jl_eval_module_expr at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:203
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:709
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:850
ijl_toplevel_eval at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:915
ijl_toplevel_eval_in at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
include_string at ./loading.jl:1295
jl_fptr_args at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2128
_jl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2348
ijl_apply_generic at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2549
_include at ./loading.jl:1352
include at ./Base.jl:422
unknown function (ip: 0x7fd560517b33)
_jl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2348
ijl_apply_generic at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2549
jl_apply at /cache/build/default-amdci5-8/julialang/julia-master/src/julia.h:1827
jl_f__call_latest at /cache/build/default-amdci5-8/julialang/julia-master/src/builtins.c:769
include at /cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan/usr/share/julia/stdlib/v1.9/Random/src/Random.jl:9
unknown function (ip: 0x7fd56058108f)
_jl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2367
ijl_apply_generic at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2549
jl_apply at /cache/build/default-amdci5-8/julialang/julia-master/src/julia.h:1827
do_call at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:126
eval_value at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:215
eval_stmt_value at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:166
eval_body at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:594
jl_interpret_toplevel_thunk at /cache/build/default-amdci5-8/julialang/julia-master/src/interpreter.c:750
top-level scope at /cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan/usr/share/julia/stdlib/v1.9/Random/src/Random.jl:11
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:906
jl_eval_module_expr at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:203
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:709
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:850
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:850
ijl_toplevel_eval at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:915
ijl_toplevel_eval_in at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
include_string at ./loading.jl:1295
jl_fptr_args at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2128
_jl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2348
ijl_apply_generic at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2549
_include at ./loading.jl:1352
include at ./Base.jl:422 [inlined]
_require at ./loading.jl:1247
_require_prelocked at ./loading.jl:1087
macro expansion at ./loading.jl:1067 [inlined]
macro expansion at ./lock.jl:223 [inlined]
require at ./loading.jl:1031
unknown function (ip: 0x7fd560580f73)
_jl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2367
ijl_apply_generic at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2549
macro expansion at ./timing.jl:359 [inlined]
macro expansion at ./sysimg.jl:90 [inlined]
macro expansion at ./timing.jl:359 [inlined]
top-level scope at ./sysimg.jl:89
jl_fptr_args at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2128
_jl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2367
ijl_invoke at /cache/build/default-amdci5-8/julialang/julia-master/src/gf.c:2374
jl_toplevel_eval_flex at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:897
jl_parse_eval_all at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:1040
ijl_load_ at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:1087
ijl_load at /cache/build/default-amdci5-8/julialang/julia-master/src/toplevel.c:1100
exec_program at /cache/build/default-amdci5-8/julialang/julia-master/src/jlapi.c:521
true_main at /cache/build/default-amdci5-8/julialang/julia-master/src/jlapi.c:574
jl_repl_entrypoint at /cache/build/default-amdci5-8/julialang/julia-master/src/jlapi.c:706
jl_load_repl at /cache/build/default-amdci5-8/julialang/julia-master/cli/loader_lib.c:271
main at /cache/build/default-amdci5-8/julialang/julia-master/cli/loader_exe.c:59
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_start at /cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan/usr/bin/julia-debug (unknown line)
 
*** This error might be fixed by running `make clean`. If the error persists, try `make cleanall`. ***
make[1]: *** [/cache/build/default-amdci5-8/julialang/julia-master/sysimage.mk:67: /cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan/usr/lib/julia/sys.ji] Error 1
make[1]: Leaving directory '/cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan'
make: *** [/cache/build/default-amdci5-8/julialang/julia-master/Makefile:82: julia-sysimg-ji] Error 2
make: Leaving directory '/cache/build/default-amdci5-8/julialang/julia-master/tmp/test-asan/asan'
🚨 Error: The command exited with status 2
@DilumAluthge DilumAluthge added bug Indicates an unexpected problem or unintended behavior ci Continuous integration labels Feb 26, 2022
@vtjnash
Copy link
Sponsor Member

vtjnash commented Feb 27, 2022

It actually fails with an llvm assertion error, we just have assertions disabled.

@DilumAluthge
Copy link
Member Author

@vchuravy and I recently enabled assertions for the llvmpasses CI job.

Should we also enable assertions for the asan CI job?

@timholy
Copy link
Sponsor Member

timholy commented Feb 28, 2022

I'd like to have this working too, for debugging #44338. I'm marking this for 1.8.

@timholy
Copy link
Sponsor Member

timholy commented Mar 1, 2022

Here's some diagnosis (I don't yet know how to fix it): while compiling

julia/base/float.jl

Lines 211 to 225 in 3a5dc09

function Float32(x::Int128)
x == 0 && return 0f0
s = ((x >>> 96) % UInt32) & 0x8000_0000 # sign bit
x = abs(x) % UInt128
n = 128-leading_zeros(x) # ndigits0z(x,2)
if n <= 24
y = ((x % UInt32) << (24-n)) & 0x007f_ffff
else
y = ((x >> (n-25)) % UInt32) & 0x00ff_ffff # keep 1 extra bit
y = (y+one(UInt32))>>1 # round, ties up (extra leading bit in case of next exponent)
y &= ~UInt32(trailing_zeros(x) == (n-25)) # fix last bit to round to even
end
d = ((n+126) % UInt32) << 23
reinterpret(Float32, s | d + y)
end
in codegen we have to convert the constant 0f0 to an LLVM constant. In

julia/src/intrinsics.cpp

Lines 165 to 166 in 3a5dc09

return ConstantFP::get(ctx.builder.getContext(),
APFloat(lt->getFltSemantics(), APInt(32, data32)));
, data32 is correctly 0. However, for reasons mysterious to me, that call ends up borking at https://elixir.bootlin.com/llvm/llvmorg-13-init/source/llvm/include/llvm/IR/Type.h#L450. In other words, I think we're expecting that APFloat(lt->getFltSemantics(), APInt(32, data32)) return type IEEESingle and it's not.

Is it relevant that APInt apparently takes a uint64_t? https://llvm.org/doxygen/classllvm_1_1APInt.html#a6286f2ba84c5ad11f4a90d57cb1dd293 (not sure if that's the right LLVM version, though). Making it so doesn't fix the build error.

@timholy
Copy link
Sponsor Member

timholy commented Mar 1, 2022

Oh, and here's the relevant portion of the stacktrace:

...
float.jl
julia-debug: /workspace/srcdir/llvm-project/llvm/include/llvm/IR/Type.h:461: static llvm::Type* llvm::Type::getFloatingPointTy(llvm::LLVMContext&, const llvm::fltSemantics&): Assertion `&S == &APFloat::PPCDoubleDouble() && "Unknown FP format"' failed.

signal (6): Aborted
in expression starting at float.jl:443
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7f9b20002489)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_ZN4llvm10ConstantFP3getERNS_11LLVMContextERKNS_7APFloatE at /tmp/tim/julia/asan/usr/bin/../lib/libLLVM-13jl.so (unknown line)
julia_const_to_llvm at /home/tim/src/julia-master/src/intrinsics.cpp:165
julia_const_to_llvm at /home/tim/src/julia-master/src/intrinsics.cpp:279
emit_unbox at /home/tim/src/julia-master/src/intrinsics.cpp:349
emit_unbox at /home/tim/src/julia-master/src/cgutils.cpp:1411
emit_function at /home/tim/src/julia-master/src/codegen.cpp:7285
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Indicates an unexpected problem or unintended behavior ci Continuous integration
Projects
None yet
3 participants