jump-dev / SCS.jl

A Julia interface for the SCS conic programming solver
https://github.com/cvxgrp/scs
Other
81 stars 27 forks source link

scary errors during precompilation #294

Closed kalmarek closed 2 months ago

kalmarek commented 2 months ago
Precompiling SCSSCS_MKL_jllExt
         Info Given SCSSCS_MKL_jllExt was explicitly requested, output 
will be shown live
ERROR: LoadError: UndefVarError: `libscsmkl` not defined
Stacktrace:
  [1] getproperty(x::Module, f::Symbol)
    @ Base .\Base.jl:31
  [2] top-level scope
    @ C:\Users\dawid\.julia\packages\SCS\mqg7w\ext\SCSSCS_MKL_jllExt.jl:11
  [3] include
    @ .\Base.jl:495 [inlined]
  [4] 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, 
UInt128}}, source::Nothing)
    @ Base .\loading.jl:2222
  [5] top-level scope
    @ stdin:3
in expression starting at 
C:\Users\dawid\.julia\packages\SCS\mqg7w\ext\SCSSCS_MKL_jllExt.jl:6
in expression starting at stdin:3
   ✗ SCS → SCSSCS_MKL_jllExt
   0 dependencies successfully precompiled in 3 seconds. 49 already 
precompiled.
[ Info: Precompiling SCSSCS_MKL_jllExt 
[35b951bd-bc4e-5cd9-90c5-f6de5c23ce67]
ERROR: LoadError: UndefVarError: `libscsmkl` not defined
Stacktrace:
  [1] getproperty(x::Module, f::Symbol)
    @ Base .\Base.jl:31
  [2] top-level scope
    @ C:\Users\dawid\.julia\packages\SCS\mqg7w\ext\SCSSCS_MKL_jllExt.jl:11
  [3] include
    @ .\Base.jl:495 [inlined]
  [4] 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, 
UInt128}}, source::String)
    @ Base .\loading.jl:2222
  [5] top-level scope
    @ stdin:3
in expression starting at 
C:\Users\dawid\.julia\packages\SCS\mqg7w\ext\SCSSCS_MKL_jllExt.jl:6
in expression starting at stdin:3
┌ Error: Error during loading of extension SCSSCS_MKL_jllExt of SCS, use 
`Base.retry_load_extensions()` to retry.
│   exception =
│    1-element ExceptionStack:
│    Failed to precompile SCSSCS_MKL_jllExt 
[35b951bd-bc4e-5cd9-90c5-f6de5c23ce67] to 
"C:\\Users\\dawid\\.julia\\compiled\\v1.10\\SCSSCS_MKL_jllExt\\jl_7816.tmp".
│    Stacktrace:
│      [1] error(s::String)
│        @ Base .\error.jl:35
│      [2] compilecache(pkg::Base.PkgId, path::String, 
internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
│        @ Base .\loading.jl:2468
│      [3] compilecache
│        @ .\loading.jl:2340 [inlined]
│      [4] (::Base.var"#968#969"{Base.PkgId})()
│        @ Base .\loading.jl:1974
│      [5] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, 
pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool})
│        @ FileWatching.Pidfile 
C:\Users\dawid\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\FileWatching\src\pidfile.jl:93
│      [6] #mkpidlock#6
│        @ 
C:\Users\dawid\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\FileWatching\src\pidfile.jl:88 
[inlined]
│      [7] trymkpidlock(::Function, ::Vararg{Any}; 
kwargs::@Kwargs{stale_age::Int64})
│        @ FileWatching.Pidfile 
C:\Users\dawid\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\FileWatching\src\pidfile.jl:111
│      [8] #invokelatest#2
│        @ .\essentials.jl:894 [inlined]
│      [9] invokelatest
│        @ .\essentials.jl:889 [inlined]
│     [10] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, 
pkg::Base.PkgId, srcpath::String; stale_age::Int64)
│        @ Base .\loading.jl:2983
│     [11] maybe_cachefile_lock
│        @ .\loading.jl:2980 [inlined]
│     [12] _require(pkg::Base.PkgId, env::Nothing)
│        @ Base .\loading.jl:1970
│     [13] __require_prelocked(uuidkey::Base.PkgId, env::Nothing)
│        @ Base .\loading.jl:1812
│     [14] #invoke_in_world#3
│        @ .\essentials.jl:926 [inlined]
│     [15] invoke_in_world
│        @ .\essentials.jl:923 [inlined]
│     [16] _require_prelocked
│        @ .\loading.jl:1803 [inlined]
│     [17] _require_prelocked
│        @ .\loading.jl:1802 [inlined]
│     [18] run_extension_callbacks(extid::Base.ExtensionId)
│        @ Base .\loading.jl:1295
│     [19] run_extension_callbacks(pkgid::Base.PkgId)
│        @ Base .\loading.jl:1330
│     [20] run_package_callbacks(modkey::Base.PkgId)
│        @ Base .\loading.jl:1164
│     [21] __require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base .\loading.jl:1819
│     [22] #invoke_in_world#3
│        @ .\essentials.jl:926 [inlined]
│     [23] invoke_in_world
│        @ .\essentials.jl:923 [inlined]
│     [24] _require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base .\loading.jl:1803
│     [25] macro expansion
│        @ .\loading.jl:1790 [inlined]
│     [26] macro expansion
│        @ .\lock.jl:267 [inlined]
│     [27] __require(into::Module, mod::Symbol)
│        @ Base .\loading.jl:1753
│     [28] #invoke_in_world#3
│        @ .\essentials.jl:926 [inlined]
│     [29] invoke_in_world
│        @ .\essentials.jl:923 [inlined]
│     [30] require(into::Module, mod::Symbol)
│        @ Base .\loading.jl:1746
│     [31] include(fname::String)
│        @ Base.MainInclude .\client.jl:489
│     [32] top-level scope
│        @ In[45]:1
│     [33] eval
│        @ .\boot.jl:385 [inlined]
│     [34] include_string(mapexpr::typeof(REPL.softscope), mod::Module, 
code::String, filename::String)
│        @ Base .\loading.jl:2076
│     [35] softscope_include_string(m::Module, code::String, 
filename::String)
│        @ SoftGlobalScope 
C:\Users\dawid\.julia\packages\SoftGlobalScope\u4UzH\src\SoftGlobalScope.jl:65
│     [36] execute_request(socket::ZMQ.Socket, msg::IJulia.Msg)
│        @ IJulia 
C:\Users\dawid\.julia\packages\IJulia\bHdNn\src\execute_request.jl:67
│     [37] #invokelatest#2
│        @ .\essentials.jl:892 [inlined]
│     [38] invokelatest
│        @ .\essentials.jl:889 [inlined]
│     [39] eventloop(socket::ZMQ.Socket)
│        @ IJulia 
C:\Users\dawid\.julia\packages\IJulia\bHdNn\src\eventloop.jl:8
│     [40] (::IJulia.var"#15#18")()
│        @ IJulia 
C:\Users\dawid\.julia\packages\IJulia\bHdNn\src\eventloop.jl:38
└ @ Base loading.jl:1301
odow commented 2 months ago

This suggests that SCS_MKL was installed, but that it wasn't installed correctly? I don't know if there's much we can do about this in SCS.jl...

kalmarek commented 2 months ago

I've seen this a few times in CI of one of my packages, usually when the whole env had to be instantiated anew. I think what happens is that SCS is precompiled before MKL_jll is fully installed (it's lazy artifact), so the precompilation fails as even though SCS_MKL_jll is loaded the library (libscsmkl) cannot be dlopened.

I'm not sure what we could do about it either, I just wanted to leave this as a permanent in case somebody else searches for this.