Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error revising: No method matching a functor created by JLLWrappers #706

Open
mbauman opened this issue Aug 19, 2022 · 3 comments
Open

Error revising: No method matching a functor created by JLLWrappers #706

mbauman opened this issue Aug 19, 2022 · 3 comments
Labels
needs reproducer Bug report can't be verified without reproducible test case

Comments

@mbauman
Copy link

mbauman commented Aug 19, 2022

This is like the opposite of an MWE, but I've received a report of a Revise evaluation error while updating packages because a gensym'ed functor didn't have a method it was expecting.

(env) pkg> update
Updating registry at ~/.julia/registries/General.toml
Installed StatsPlots ————— v0.15.1
Installed Plots —————————— v1.31.5
Installed Revise ————————— v3.4.0
Installed Interpolations — v0.14.3
┌ Error: Error watching manifest
│   exception =
│    MethodError: no method matching (::HDF5_jll.var"#make_wrapper_dict#6"{HDF5_jll.var"#parse_wrapper_platform#5"})(::String, ::Vector{String})
│    Stacktrace:
│     [1] top-level scope
│       @/.../.julia/packages/JLLWrappers/QpMQW/src/toplevel_generators.jl:156
│    Revise evaluation error at /.../.julia/packages/JLLWrappers/QpMQW/src/toplevel_generators.jl:156
│
│    Stacktrace:
│     [1] methods_by_execution!(recurse::Any, methodinfo::Revise.CodeTrackingMethodInfo, docexprs::Dict{Module, Vector{Expr}}, mod::Module, ex::Expr; mode::Symbol, disablebp::Bool, always_rethrow::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
│    @ Revise ~/.julia/packages/Revise/aDRLi/src/lowered.jl:227
└ @ Revise ~/. Julia/packages/Revise/aDRLi/src/pkgs.jl:477
`/.../Project.toml`
[91a5bcad] ↑ Plots v1.31.4 ⇒ v1.31.5
# ...

I've not found this posted before here, but I found a very similar stacktrace on the Julia issue tracker: JuliaLang/julia#34598 (comment). There's quite a similarity here — both are trying to find a method for what look to be anonymous/gensym'ed functor created by a JLLWrappers macro.

ERROR: MethodError: no method matching (::MKL_jll.var"#8#12")(::String)
Stacktrace:
[1] filter(f::MKL_jll.var"#8#12", a::Vector{String})
@ Base array.jl:2448
[2] top-level scope
@ ~/.julia/packages/JLLWrappers/bkwIo/src/toplevel_generators.jl:143
Revise evaluation error at /home/luke/.julia/packages/JLLWrappers/bkwIo/src/toplevel_generators.jl:143

Stacktrace:
[1] methods_by_execution!(recurse::Any, methodinfo::Revise.CodeTrackingMethodInfo, docexprs::Dict{Module, Vector{Expr}}, mod::Module, ex::Expr; mode::Symbol, disablebp::Bool, always_rethrow::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Revise ~/.julia/packages/Revise/OgnOk/src/lowered.jl:232
[2] #eval_with_signatures#92
@ ~/.julia/packages/Revise/OgnOk/src/packagedef.jl:463 [inlined]
[3] instantiate_sigs!(modexsigs::OrderedCollections.OrderedDict{Module, OrderedCollections.OrderedDict{Revise.RelocatableExpr, Union{Nothing, Vector{Any}}}}; mode::Symbol, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Revise ~/.julia/packages/Revise/OgnOk/src/packagedef.jl:471
[4] instantiate_sigs!
@ ~/.julia/packages/Revise/OgnOk/src/packagedef.jl:468 [inlined]
[5] maybe_extract_sigs!
@ ~/.julia/packages/Revise/OgnOk/src/pkgs.jl:145 [inlined]
[6] (::Revise.var"#44#45"{String})()
@ Revise ~/.julia/packages/Revise/OgnOk/src/pkgs.jl:526
[7] with_logstate(f::Function, logstate::Any)
@ Base.CoreLogging ./logging.jl:511
[8] with_logger
@ ./logging.jl:623 [inlined]
[9] watch_manifest(mfile::String)
@ Revise ~/.julia/packages/Revise/OgnOk/src/pkgs.jl:505
[10] (::Revise.TaskThunk)()
@ Revise ~/.julia/packages/Revise/OgnOk/src/types.jl:272
@timholy
Copy link
Owner

timholy commented Sep 14, 2022

This may be a naming inconsistency, i.e., an instance of gensymmed names changing because Revise has to re-parse the source code. AFAICT the true fix is to move pieces of Revise into Base, but that's still a bit in the future.

@timholy timholy added the needs reproducer Bug report can't be verified without reproducible test case label Jan 4, 2024
@arnold-c
Copy link

I'm not sure if this is reproducible enough, but I find (at least part of) the issue is caused when the Manifest.toml is in git history and changes, staging/unstaging it results in the MethodError warnings, as below:

**UNSTAGING**

julia> WARNING: redefinition of constant libpng_jll.PATH. This may fail, cause incorrect answers, or produce other errors.
WARNING: redefinition of constant libpng_jll.LIBPATH. This may fail, cause incorrect answers, or produce other errors.
WARNING: redefinition of constant libpng_jll.PATH_list. This may fail, cause incorrect answers, or produce other errors.
WARNING: redefinition of constant libpng_jll.LIBPATH_list. This may fail, cause incorrect answers, or produce other errors.
┌ Error: Error watching manifest
│   exception =
│    MethodError: no method matching (::libpng_jll.var"#make_wrapper_dict#8"{libpng_jll.var"#parse_wrapper_platform#7"})(::String, ::Vector{String})
│    The function `make_wrapper_dict` exists, but no method is defined for this combination of argument types.
│    Stacktrace:
│     [1] top-level scope
│       @ ~/.julia/packages/JLLWrappers/GfYNv/src/toplevel_generators.jl:167
│    Revise evaluation error at /Users/user/.julia/packages/JLLWrappers/GfYNv/src/toplevel_generators.jl:167
│
│    Stacktrace:
│     [1] methods_by_execution!(recurse::Any, methodinfo::Revise.CodeTrackingMethodInfo, docexprs::Dict{Module, Vector{Expr}}, mod::Module, ex::Expr; mode::Symbol, disablebp::Bool, always_rethrow::Bool, kwargs::@Kwargs{})
│       @ Revise ~/.julia/packages/Revise/tTIBp/src/lowered.jl:296
└ @ Revise ~/.julia/packages/Revise/tTIBp/src/pkgs.jl:498


**STAGING**

WARNING: redefinition of constant libpng_jll.PATH. This may fail, cause incorrect answers, or produce other errors.
WARNING: redefinition of constant libpng_jll.LIBPATH. This may fail, cause incorrect answers, or produce other errors.
WARNING: redefinition of constant libpng_jll.PATH_list. This may fail, cause incorrect answers, or produce other errors.
WARNING: redefinition of constant libpng_jll.LIBPATH_list. This may fail, cause incorrect answers, or produce other errors.
┌ Error: Error watching manifest
│   exception =
│    MethodError: no method matching (::libpng_jll.var"#make_wrapper_dict#10"{libpng_jll.var"#parse_wrapper_platform#9"})(::String, ::Vector{String})
│    The function `make_wrapper_dict` exists, but no method is defined for this combination of argument types.
│    Stacktrace:
│     [1] top-level scope
│       @ ~/.julia/packages/JLLWrappers/GfYNv/src/toplevel_generators.jl:167
│    Revise evaluation error at /Users/user/.julia/packages/JLLWrappers/GfYNv/src/toplevel_generators.jl:167
│
│    Stacktrace:
│     [1] methods_by_execution!(recurse::Any, methodinfo::Revise.CodeTrackingMethodInfo, docexprs::Dict{Module, Vector{Expr}}, mod::Module, ex::Expr; mode::Symbol, disablebp::Bool, always_rethrow::Bool, kwargs::@Kwargs{})
│       @ Revise ~/.julia/packages/Revise/tTIBp/src/lowered.jl:296
└ @ Revise ~/.julia/packages/Revise/tTIBp/src/pkgs.jl:498

@arnold-c
Copy link

Another oddity that I suspect is related: when using lazygit, if there have been updates to Manifest.toml without it being staged, the above warnings are repeatedly triggered. This continues until Manifest.toml is staged AND the file selection/highlighted in the stages panel is changed to a different file. I'm not sure exactly how lazygit works, so can't comment on why this is an issue, but it is repeatable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs reproducer Bug report can't be verified without reproducible test case
Projects
None yet
Development

No branches or pull requests

3 participants