OrdinaryDiffEq fails to precompile in julia 1.7.2

I am suddenly getting an error when precompiling the OrdinaryDiffEq package. I originally ran into it in a jupyter-lab notebook (ipynb) that worked a few days ago. I then tried creating a new environment and I still get the problem.

Specific steps:

conda create -n sfsa1
conda activate sfsa1
conda install -c conda-forge julia
julia
returned Version 1.7.2 (2022-02-06)
using Pkg
Pkg.add(“OrdinaryDiffEq”)
much happy green stuff, then
✗ VectorizationBase
✗ SLEEFPirates
✗ SIMDDualNumbers
✗ LoopVectorization
✗ TriangularSolve
✗ RecursiveFactorization
✗ LinearSolve
✗ NonlinearSolve
✗ DiffEqBase
✗ OrdinaryDiffEq
101 dependencies successfully precompiled in 30 seconds
10 dependencies errored. To see a full report either run import Pkg; Pkg.precompile() or load the packages

julia> import Pkg; Pkg.precompile()
Precompiling project…
✗ VectorizationBase
✗ SLEEFPirates
✗ SIMDDualNumbers
✗ LoopVectorization
✗ TriangularSolve
✗ RecursiveFactorization
✗ LinearSolve
✗ NonlinearSolve
✗ DiffEqBase
✗ OrdinaryDiffEq
0 dependencies successfully precompiled in 22 seconds (101 already precompiled)

ERROR: The following 1 direct dependency failed to precompile:

OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed]

Failed to precompile OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed] to /home/jlyle/.conda/envs/sfsa1/share/julia/compiled/v1.7/OrdinaryDiffEq/jl_9oz7hR.
ERROR: LoadError: UndefVarError: num_cache_levels not defined
Stacktrace:
[1] include
@ ./Base.jl:418 [inlined]
[2] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base ./loading.jl:1318
[3] top-level scope
@ none:1
[4] eval
@ ./boot.jl:373 [inlined]
[5] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[6] top-level scope
@ none:1
in expression starting at /home/jlyle/.julia/packages/VectorizationBase/yDGcX/src/VectorizationBase.jl:1
followed by more of the same.

Any ideas?

Ad Astra,

Jack

@Elrod do you know what this is?

That sounds like it’s using CPUSummary 0.1.10, which is broken. 0.1.9 is also broken.
Using <=0.1.8, or >=0.1.11.
I’m not sure why the resolver would prefer a broken version, given newer non-broken alternatives.

Also, these show up because Hwloc failed to load.
This may indicate the check is bad, and returns a ton of false negatives.
Locally, it works.

Gentlemen,

Thank you for looking into this, but what I am immediately looking for is a work-around. Do we know that version x.x.x of OrdinaryDiffEq works with julia 1.7.x for example. Or as a teaching moment, how do I check that myself?

Ad Astra,

Jack

Anything like OrdinaryDiffEq v5 or above should be fine. That’s not your issue though. Sounds like it’s CPUSummary.jl, and figuring out why that went into a weird version is what’s essential.

] add CPUSummary
That should trigger it to update and fix the problem.
Please tell me the version.

If a version is hopelessly broken it should be yanked from the registry

1 Like

https://github.com/JuliaRegistries/General/pull/55916

EDIT: Merged, bad CPUSummary versions have been yanked.

1 Like

(@sfsa1) pkg> add CPUSummary
Resolving package versions…
Updating ~/.conda/envs/sfsa1/share/julia/environments/sfsa1/Project.toml
[2a0fbf3d] + CPUSummary v0.1.10
No Changes to ~/.conda/envs/sfsa1/share/julia/environments/sfsa1/Manifest.toml

Here is the full error trace when trying to precompile:

julia> using OrdinaryDiffEq
[ Info: Precompiling OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed]
ERROR: LoadError: UndefVarError: num_cache_levels not defined
Stacktrace:
[1] include
@ ./Base.jl:418 [inlined]
[2] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base ./loading.jl:1318
[3] top-level scope
@ none:1
[4] eval
@ ./boot.jl:373 [inlined]
[5] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[6] top-level scope
@ none:1
in expression starting at /home/jlyle/.julia/packages/VectorizationBase/yDGcX/src/VectorizationBase.jl:1
ERROR: LoadError: Failed to precompile VectorizationBase [3d5dd08c-fd9d-11e8-17fa-ed2836048c2f] to /home/jlyle/.conda/envs/sfsa1/share/julia/compiled/v1.7/VectorizationBase/jl_LH0w2b.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997
[7] include
@ ./Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base ./loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ ./boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[12] top-level scope
@ none:1
in expression starting at /home/jlyle/.julia/packages/LoopVectorization/tSQDi/src/LoopVectorization.jl:1
ERROR: LoadError: Failed to precompile LoopVectorization [bdcacae8-1622-11e9-2a5c-532679323890] to /home/jlyle/.conda/envs/sfsa1/share/julia/compiled/v1.7/LoopVectorization/jl_g20eGY.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997
[7] include(mod::Module, _path::String)
@ Base ./Base.jl:418
[8] include(x::String)
@ RecursiveFactorization ~/.julia/packages/RecursiveFactorization/mIP2e/src/RecursiveFactorization.jl:1
[9] top-level scope
@ ~/.julia/packages/RecursiveFactorization/mIP2e/src/RecursiveFactorization.jl:3
[10] include
@ ./Base.jl:418 [inlined]
[11] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base ./loading.jl:1318
[12] top-level scope
@ none:1
[13] eval
@ ./boot.jl:373 [inlined]
[14] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[15] top-level scope
@ none:1
in expression starting at /home/jlyle/.julia/packages/RecursiveFactorization/mIP2e/src/lu.jl:1
in expression starting at /home/jlyle/.julia/packages/RecursiveFactorization/mIP2e/src/RecursiveFactorization.jl:1
ERROR: LoadError: Failed to precompile RecursiveFactorization [f2c3362d-daeb-58d1-803e-2bc74f2840b4] to /home/jlyle/.conda/envs/sfsa1/share/julia/compiled/v1.7/RecursiveFactorization/jl_V48LiI.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997
[7] include
@ ./Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base ./loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ ./boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[12] top-level scope
@ none:1
in expression starting at /home/jlyle/.julia/packages/DiffEqBase/Y5mGv/src/DiffEqBase.jl:1
ERROR: LoadError: Failed to precompile DiffEqBase [2b5f629d-d688-5b77-993f-72d75c75574e] to /home/jlyle/.conda/envs/sfsa1/share/julia/compiled/v1.7/DiffEqBase/jl_348VQR.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997
[7] include
@ ./Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
@ Base ./loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ ./boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude ./client.jl:453
[12] top-level scope
@ none:1
in expression starting at /home/jlyle/.julia/packages/OrdinaryDiffEq/Op0Oq/src/OrdinaryDiffEq.jl:1
ERROR: Failed to precompile OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed] to /home/jlyle/.conda/envs/sfsa1/share/julia/compiled/v1.7/OrdinaryDiffEq/jl_bBhx3g.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base ./loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base ./loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base ./loading.jl:997

Same issue here, cannot figure out whats happening.

ERROR: LoadError: Failed to precompile OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed] to /home/daniel/.julia/compiled/v1.7/OrdinaryDiffEq/jl_zWlkoC.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
   @ Base ./loading.jl:1466
 [3] compilecache(pkg::Base.PkgId, path::String)
   @ Base ./loading.jl:1410
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1120
 [5] require(uuidkey::Base.PkgId)
   @ Base ./loading.jl:1013
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:997

That seems like a separate issue? The LoopVectorization stuff was found and handled. Can you open a separate thread and share information? You cutoff the stack trace before it gave the information :sweat_smile:

Also, I would highly recommend upgrading to v1.8 and sharing ]st which will tell us a lot more about the current packages on your system.