Failing test
test/nopre/static_arrays.jl:25
@test_nowarn __solve_no_alloc(A, b, alg) isa SciMLBase.LinearSolution
where
@check_allocs __solve_no_alloc(A, b, alg) = solve(LinearProblem(A, b), alg)
CI evidence
Failing on main (commit ece9b75, Julia 1.12.6) — job 76399972566 / run 25992089249:
https://github.com/SciML/LinearSolve.jl/actions/runs/25992089249/job/76399972566
Also failing earlier on 9ce30d4f (run 25863857085, 2026-05-14) — same root cause, both Linux and Windows runners. So this is not a transient flake.
Reproduction
Locally with Julia 1.12.x against main:
git clone https://github.com/SciML/LinearSolve.jl.git
cd LinearSolve.jl/test/nopre
julia --project=. --depwarn=yes -e '
using Pkg
Pkg.develop(PackageSpec(path = joinpath(dirname(@__DIR__), "..")))
Pkg.instantiate()
include("static_arrays.jl")
'
Output:
┌ Warning: `lookup(jljit::JuliaOJIT, name, external_jd_only = false)` is deprecated, use `lookup(jljit, JITDylib(jljit), name, external_jd_only)` instead.
│ caller = lookup(jljit::LLVM.JuliaOJIT, name::String) at deprecated.jl:214
└ @ Core ./deprecated.jl:214
Test Failed at .../Test.jl:934
Expression: contains_warn(read(fname, String), $(Expr(:escape, Test.var"#@test_nowarn##0#@test_nowarn##1"())))
ERROR: LoadError: There was an error during testing
in expression starting at .../test/nopre/static_arrays.jl:15
The CI workflow runs with --depwarn=yes, which turns the LLVM.jl deprecation warning into emitted output that @test_nowarn correctly catches.
Root cause — upstream, not in LinearSolve.jl
The warning is emitted by AllocCheck.jl v0.2.3 (the latest registered version, released 2025-11-04), at src/compiler.jl:114:
f_ptr = pointer(LLVM.lookup(lljit, entry_name))
This calls the 2-arg form of LLVM.lookup, which was deprecated in LLVM.jl in favor of the 3-arg form LLVM.lookup(jljit, JITDylib(jljit), name). The deprecation was introduced because the 2-arg form was removed in JuliaLang/julia#60988 (Julia 1.14.0-DEV.2171); on the Julia versions LinearSolve currently tests against (1.12) it just emits a @deprecate warning. The matching jd = LLVM.JITDylib(lljit) is even constructed on the line above (line 107) but is not passed to lookup.
This has already been fixed upstream:
So nothing here is a LinearSolve.jl bug, and this should not be patched by:
- weakening the
@test_nowarn to @test_warn / @test_logs / @test_skip,
- removing the
--depwarn=yes flag from test/nopre's CI invocation,
- catching/suppressing the warning around
__solve_no_alloc,
since the underlying issue is a real deprecation in a dependency, and silencing the test would hide the next real warning that appears here.
Where this should be tracked
Primary: upstream — wait for AllocCheck.jl v0.2.4 to be tagged and registered, then bump the [compat] in test/nopre/Project.toml (or just let the resolver pick it up; AllocCheck is not in the main Project.toml).
If a release of 0.2.4 is slow, the LinearSolve.jl side fix is to pin AllocCheck < 0.2.3 or ≤ 0.2.2 in test/nopre/Project.toml until 0.2.4 lands. v0.2.2 (2025-03-28) predates this code path's interaction with the Julia 1.12 deprecation and would avoid the warning on the CI Julia version — though I have not confirmed v0.2.2 builds clean against the rest of the test/nopre Manifest, so a quick check first would be worth it.
Summary
- Test failing:
test/nopre/static_arrays.jl:25
- Cause: AllocCheck.jl v0.2.3 emits an LLVM.jl deprecation warning, which
--depwarn=yes surfaces and @test_nowarn correctly catches.
- Fix location: AllocCheck.jl (already merged on
main, needs registered release).
- LinearSolve.jl workaround (if desired): pin AllocCheck to
≤ 0.2.2 in test/nopre/Project.toml until v0.2.4 is registered. Do not weaken the test assertion.
Cross-ref: JuliaLang/AllocCheck.jl#102
Failing test
test/nopre/static_arrays.jl:25where
CI evidence
Failing on
main(commitece9b75, Julia 1.12.6) — job 76399972566 / run 25992089249:https://github.com/SciML/LinearSolve.jl/actions/runs/25992089249/job/76399972566
Also failing earlier on
9ce30d4f(run 25863857085, 2026-05-14) — same root cause, both Linux and Windows runners. So this is not a transient flake.Reproduction
Locally with Julia 1.12.x against
main:Output:
The CI workflow runs with
--depwarn=yes, which turns the LLVM.jl deprecation warning into emitted output that@test_nowarncorrectly catches.Root cause — upstream, not in LinearSolve.jl
The warning is emitted by AllocCheck.jl v0.2.3 (the latest registered version, released 2025-11-04), at
src/compiler.jl:114:This calls the 2-arg form of
LLVM.lookup, which was deprecated in LLVM.jl in favor of the 3-arg formLLVM.lookup(jljit, JITDylib(jljit), name). The deprecation was introduced because the 2-arg form was removed inJuliaLang/julia#60988(Julia 1.14.0-DEV.2171); on the Julia versions LinearSolve currently tests against (1.12) it just emits a@deprecatewarning. The matchingjd = LLVM.JITDylib(lljit)is even constructed on the line above (line 107) but is not passed tolookup.This has already been fixed upstream:
LLVM.lookupto avoid deprecation warning"), merged 2026-05-15.mainbranch with version bumped to0.2.4, but 0.2.4 has not yet been released / registered in the General registry. The latest registered AllocCheck is still v0.2.3.So nothing here is a LinearSolve.jl bug, and this should not be patched by:
@test_nowarnto@test_warn/@test_logs/@test_skip,--depwarn=yesflag fromtest/nopre's CI invocation,__solve_no_alloc,since the underlying issue is a real deprecation in a dependency, and silencing the test would hide the next real warning that appears here.
Where this should be tracked
Primary: upstream — wait for AllocCheck.jl v0.2.4 to be tagged and registered, then bump the
[compat]intest/nopre/Project.toml(or just let the resolver pick it up; AllocCheck is not in the mainProject.toml).If a release of 0.2.4 is slow, the LinearSolve.jl side fix is to pin AllocCheck
< 0.2.3or≤ 0.2.2intest/nopre/Project.tomluntil 0.2.4 lands. v0.2.2 (2025-03-28) predates this code path's interaction with the Julia 1.12 deprecation and would avoid the warning on the CI Julia version — though I have not confirmed v0.2.2 builds clean against the rest of thetest/nopreManifest, so a quick check first would be worth it.Summary
test/nopre/static_arrays.jl:25--depwarn=yessurfaces and@test_nowarncorrectly catches.main, needs registered release).≤ 0.2.2intest/nopre/Project.tomluntil v0.2.4 is registered. Do not weaken the test assertion.Cross-ref: JuliaLang/AllocCheck.jl#102