Compiling...Verifier error #1: unresolved call from statement (Base.memoryrefget(Base.memoryrefnew(Base.getfield(MPI.mpi_init_hooks, :ref)::MemoryRef{Any}, 1, false::Bool)::MemoryRef{Any}, :not_atomic, false::Bool)::Any)()::Any
Stacktrace:
[1] run_init_hooks()
@ MPI ~/.julia/packages/MPI/hNJm0/src/environment.jl:66
[2] Init(; threadlevel::Symbol, finalize_atexit::Bool, errors_return::Bool)
@ MPI ~/.julia/packages/MPI/hNJm0/src/environment.jl:155
[3] Init()
@ MPI ~/.julia/packages/MPI/hNJm0/src/environment.jl:114 [inlined]
[4] main(ARGS::Vector{String})
@ Main ~/Cthonios/ParaTaxi/examples/src/HelloWorld.jl:4
[5] _main(argc::Int32, argv::Ptr{Ptr{Int8}})
@ Main ~/.julia/packages/JuliaC/EFQEY/src/scripts/juliac-buildscript.jl:77
Verifier error #2: unresolved call from statement (f::typeof(MPI.call))(φ ()::Any)::Any
Stacktrace:
[1] foreach(f::typeof(MPI.call), itr::Vector{Any})
@ Base abstractarray.jl:3188
[2] run_load_time_hooks()
@ MPI ~/.julia/packages/MPI/hNJm0/src/MPI.jl:74
[3] __init__()
@ MPI ~/.julia/packages/MPI/hNJm0/src/MPI.jl:174
Verifier error #3: unresolved call from statement (%new()::MPI.var"#copy#copy##0"{MPI.OpWrapper{typeof(xor), Any}, Ptr{Nothing}, Ptr{Nothing}, Int32})(MPI.to_type(%new()::MPI.Datatype)::Any)::Any
Stacktrace:
[1] (::MPI.OpWrapper{typeof(xor), Any})(_a::Ptr{Nothing}, _b::Ptr{Nothing}, _len::Ptr{Int32}, t::Ptr{Int32})
@ MPI ~/.julia/packages/MPI/hNJm0/src/operators.jl:98
Verifier error #4: unresolved call from statement (%new()::MPI.var"#copy#copy##0"{MPI.OpWrapper{typeof(|), Any}, Ptr{Nothing}, Ptr{Nothing}, Int32})(MPI.to_type(%new()::MPI.Datatype)::Any)::Any
Stacktrace:
[1] (::MPI.OpWrapper{typeof(|), Any})(_a::Ptr{Nothing}, _b::Ptr{Nothing}, _len::Ptr{Int32}, t::Ptr{Int32})
@ MPI ~/.julia/packages/MPI/hNJm0/src/operators.jl:98
Verifier error #5: unresolved call from statement (%new()::MPI.var"#copy#copy##0"{MPI.OpWrapper{typeof(&), Any}, Ptr{Nothing}, Ptr{Nothing}, Int32})(MPI.to_type(%new()::MPI.Datatype)::Any)::Any
Stacktrace:
[1] (::MPI.OpWrapper{typeof(&), Any})(_a::Ptr{Nothing}, _b::Ptr{Nothing}, _len::Ptr{Int32}, t::Ptr{Int32})
@ MPI ~/.julia/packages/MPI/hNJm0/src/operators.jl:98
Verifier error #6: unresolved call from statement (%new()::MPI.var"#copy#copy##0"{MPI.OpWrapper{typeof(*), Any}, Ptr{Nothing}, Ptr{Nothing}, Int32})(MPI.to_type(%new()::MPI.Datatype)::Any)::Any
Stacktrace:
[1] (::MPI.OpWrapper{typeof(*), Any})(_a::Ptr{Nothing}, _b::Ptr{Nothing}, _len::Ptr{Int32}, t::Ptr{Int32})
@ MPI ~/.julia/packages/MPI/hNJm0/src/operators.jl:98
Verifier error #7: unresolved call from statement (%new()::MPI.var"#copy#copy##0"{MPI.OpWrapper{typeof(+), Any}, Ptr{Nothing}, Ptr{Nothing}, Int32})(MPI.to_type(%new()::MPI.Datatype)::Any)::Any
Stacktrace:
[1] (::MPI.OpWrapper{typeof(+), Any})(_a::Ptr{Nothing}, _b::Ptr{Nothing}, _len::Ptr{Int32}, t::Ptr{Int32})
@ MPI ~/.julia/packages/MPI/hNJm0/src/operators.jl:98
Verifier error #8: unresolved call from statement (%new()::MPI.var"#copy#copy##0"{MPI.OpWrapper{typeof(max), Any}, Ptr{Nothing}, Ptr{Nothing}, Int32})(MPI.to_type(%new()::MPI.Datatype)::Any)::Any
Stacktrace:
[1] (::MPI.OpWrapper{typeof(max), Any})(_a::Ptr{Nothing}, _b::Ptr{Nothing}, _len::Ptr{Int32}, t::Ptr{Int32})
@ MPI ~/.julia/packages/MPI/hNJm0/src/operators.jl:98
Verifier error #9: unresolved call from statement (%new()::MPI.var"#copy#copy##0"{MPI.OpWrapper{typeof(min), Any}, Ptr{Nothing}, Ptr{Nothing}, Int32})(MPI.to_type(%new()::MPI.Datatype)::Any)::Any
Stacktrace:
[1] (::MPI.OpWrapper{typeof(min), Any})(_a::Ptr{Nothing}, _b::Ptr{Nothing}, _len::Ptr{Int32}, t::Ptr{Int32})
@ MPI ~/.julia/packages/MPI/hNJm0/src/operators.jl:98
Verifier error #10: unresolved call from statement (Base.memoryrefget(Base.memoryrefnew(Base.getfield(MPI.mpi_init_hooks, :ref)::MemoryRef{Any}, 1, false::Bool)::MemoryRef{Any}, :not_atomic, false::Bool)::Any)()::Any
Stacktrace:
[1] run_init_hooks()
@ MPI ~/.julia/packages/MPI/hNJm0/src/environment.jl:66
[2] Init(; threadlevel::Symbol, finalize_atexit::Bool, errors_return::Bool)
@ MPI ~/.julia/packages/MPI/hNJm0/src/environment.jl:155
[3] Init()
@ MPI ~/.julia/packages/MPI/hNJm0/src/environment.jl:114 [inlined]
[4] main(ARGS::Vector{String})
@ Main ~/Cthonios/ParaTaxi/examples/src/HelloWorld.jl:4
◐ Compiling..._main(argc::Int32, argv::Ptr{Ptr{Int8}})
@ Main ~/.julia/packages/JuliaC/EFQEY/src/scripts/juliac-buildscript.jl:77
Trim verify finished with 10 errors, 0 warnings.
✓ Compiling...
ERROR: LoadError: Failed to compile src/HelloWorld.jl
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:44
[2] compile_products(recipe::ImageRecipe)
@ JuliaC ~/.julia/packages/JuliaC/EFQEY/src/compiling.jl:142
[3] top-level scope
@ ~/Cthonios/ParaTaxi/examples/build.jl:24
[4] include(mod::Module, _path::String)
@ Base ./Base.jl:306
[5] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:317
[6] _start()
@ Base ./client.jl:550
I've been playing around with JuliaC and thought I would give a simple
MPI.jlexample a go. This is a simple adaptation of this Hello, World! exampleWithout
--experimental --trim=safeeverything works as expected with a binary size of around 300MB.However, with
--experimental --trim=safewe get the following errorsFrom what I can gather through looking through the
srccode, it looks like there's an array of functions at the module level that are run duringMPI.Init()that leads to these unresolved calls.I'm happy to help put effort into fixing this currently niche use case, but thought I would open an issue first to see if the maintainers have any qualms before putting effort in.
It would be great to bring small binaries with MPI to the community!