Skip to content

test/nopre/static_arrays.jl:25 fails on main: AllocCheck v0.2.3 emits deprecated LLVM.lookup warning under --depwarn=yes #987

@ChrisRackauckas-Claude

Description

@ChrisRackauckas-Claude

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions