Error when specifying trace level with NonlinearSolve.jl

Hi,

I got an error with NonlinearSolve.jl v4.12.0 when specifying a trace level different than TraceMinimal(). The following code is taken from the diagnostics API page of the documentation.

using NonlinearSolve

function nlfunc(resid, u0, p)
    resid[1] = u0[1] * u0[1] - p
    resid[2] = u0[2] * u0[2] - p
    resid[3] = u0[3] * u0[3] - p
    nothing
end

prob = NonlinearProblem(nlfunc, [1.0, 3.0, 5.0], 2.0)

solve(prob; show_trace = Val(true), trace_level = TraceAll())

Here is the full trace.

Algorithm: NewtonRaphson(
    descent = NewtonDescent(),
    autodiff = AutoForwardDiff(),
    vjp_autodiff = AutoFiniteDiff(
        fdtype = Val{:forward}(),
        fdjtype = Val{:forward}(),
        fdhtype = Val{:hcentral}(),
        dir = true
    ),
    jvp_autodiff = AutoForwardDiff(),
    concrete_jac = Val{false}()
)

----            -------------           -----------             -------             
Iter            f(u) inf-norm           Step 2-norm             cond(J)             
----            -------------           -----------             -------             
0               2.30000000e+01          0.00000000e+00          5.00000000e+00      
ERROR: MethodError: Cannot `convert` an object of type 
  Nothing to an object of type 
  AbstractArray
The function `convert` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  convert(::Type{T}, ::T) where T
   @ Base Base.jl:126
  convert(::Type{T}, ::T) where T<:AbstractArray
   @ Base abstractarray.jl:16
  convert(::Type{T}, ::LinearAlgebra.Factorization) where T<:AbstractArray
   @ LinearAlgebra ~/.julia/juliaup/julia-1.11.4+0.x64.linux.gnu/share/julia/stdlib/v1.11/LinearAlgebra/src/factorization.jl:104
  ...

Stacktrace:
  [1] #update_trace!#56
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:207 [inlined]
  [2] update_trace!
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:186 [inlined]
  [3] #update_trace!#57
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:227 [inlined]
  [4] update_trace!
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/tracing.jl:220 [inlined]
  [5] step!(cache::NonlinearSolveFirstOrder.GeneralizedFirstOrderAlgorithmCache{…}; recompute_jacobian::Nothing)
    @ NonlinearSolveFirstOrder ~/.julia/packages/NonlinearSolveFirstOrder/gwWsK/src/solve.jl:333
  [6] step!
    @ ~/.julia/packages/NonlinearSolveFirstOrder/gwWsK/src/solve.jl:232 [inlined]
  [7] #step!#163
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:500 [inlined]
  [8] step!
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:494 [inlined]
  [9] solve!(cache::NonlinearSolveFirstOrder.GeneralizedFirstOrderAlgorithmCache{…})
    @ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:240
 [10] __solve(::NonlinearProblem{…}, ::GeneralizedFirstOrderAlgorithm{…}; kwargs::@Kwargs{…})
    @ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:228
 [11] __solve
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:223 [inlined]
 [12] macro expansion
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:419 [inlined]
 [13] __generated_polysolve(::NonlinearProblem{…}, ::NonlinearSolvePolyAlgorithm{…}; stats::SciMLBase.NLStats, alias_u0::Bool, verbose::Bool, initializealg::NonlinearSolveBase.NonlinearSolveDefaultInit, kwargs::@Kwargs{…})
    @ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:376
 [14] __generated_polysolve
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:376 [inlined]
 [15] #__solve#152
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:349 [inlined]
 [16] __solve
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:346 [inlined]
 [17] #__solve#18
    @ ~/.julia/packages/NonlinearSolve/JTN4J/src/default.jl:27 [inlined]
 [18] __solve
    @ ~/.julia/packages/NonlinearSolve/JTN4J/src/default.jl:24 [inlined]
 [19] #__solve#153
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:360 [inlined]
 [20] __solve
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:352 [inlined]
 [21] #solve_call#139
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:154 [inlined]
 [22] solve_call
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:120 [inlined]
 [23] solve_up(::NonlinearProblem{…}, ::Nothing, ::Vector{…}, ::Float64; originator::SciMLBase.ChainRulesOriginator, kwargs::@Kwargs{…})
    @ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:108
 [24] solve_up
    @ ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:101 [inlined]
 [25] solve(::NonlinearProblem{…}; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{…}, kwargs::@Kwargs{…})
    @ NonlinearSolveBase ~/.julia/packages/NonlinearSolveBase/2E600/src/solve.jl:81
 [26] top-level scope
    @ ~/Documents/code/julia/RadialCalderon/experiments_private/ex1/ex.jl:45
Some type information was truncated. Use `show(err)` to see complete types.

I have the same error with TraceWithJacobianConditionNumber() but no error with TraceMinimal().

Is this part of the documentation outdated or is this an actual bug?

Thanks in advance!

Seems like this is a bug, but we’re also in the middle of a verbosity system overhaul so it might not be fixed until the new setup is done.

Thanks for the quick reply. Should I open an issue in the github repo?

yes please