JuliaDebug / JuliaInterpreter.jl

Interpreter for Julia code
Other
162 stars 34 forks source link

debugger throws an exception whenever a CxxWrap call is made #613

Open xyz333math opened 7 months ago

xyz333math commented 7 months ago

After recently upgrading to: Ubuntu 22.04 VSCode Version 1.86.2 julia version 1.10.1 The debugger in VSCode as well as Debugger.jl both crash when encountering julia code that has a call to CxxWrap. Note that the same code runs fine without any issues when running julia in non-debug mode.

Here is an example of the stack trace:

unknown call f introduced by ccall lowering getindex

Stacktrace: [1] rPar(arg1::CxxWrap.CxxWrapCore.CxxPtr{Singular.libSingular.coeffs}) @ Singular.libSingular ~/.julia/packages/CxxWrap/5IZvn/src/CxxWrap.jl:624 [2] transcendence_degree(F::Singular.N_FField) @ Singular ~/.julia/packages/Singular/78GJh/src/number/n_transExt.jl:25 [3] transcendence_basis(F::Singular.N_FField) @ Singular ~/.julia/packages/Singular/78GJh/src/number/n_transExt.jl:33 [4] FunctionField(F::Singular.Rationals, S::Vector{Symbol}; cached::Bool) @ Singular ~/.julia/packages/Singular/78GJh/src/number/n_transExt.jl:392 [5] FunctionField(F::Singular.Rationals, S::Vector{Symbol}) @ Singular ~/.julia/packages/Singular/78GJh/src/number/n_transExt.jl:387 [6] singular_coeff_ring(K::AnticNumberField) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/mpoly.jl:510 [7] singular_poly_ring(Rx::AbstractAlgebra.Generic.MPolyRing{nf_elem}; keep_ordering::Bool) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/mpoly.jl:628 [8] kwcall(::NamedTuple{(:keep_ordering,), Tuple{Bool}}, ::typeof(singular_poly_ring), Rx::AbstractAlgebra.Generic.MPolyRing{nf_elem}) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/mpoly.jl:621 [9] singular_assure(I::Oscar.IdealGens{AbstractAlgebra.Generic.MPoly{nf_elem}}) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/mpoly.jl:760 [10] singular_generators(B::Oscar.IdealGens{AbstractAlgebra.Generic.MPoly{nf_elem}}, monorder::Oscar.Orderings.MonomialOrdering{AbstractAlgebra.Generic.MPolyRing{nf_elem}}) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/mpoly.jl:389 [11] _compute_standard_basis(B::Oscar.IdealGens{AbstractAlgebra.Generic.MPoly{nf_elem}}, ordering::Oscar.Orderings.MonomialOrdering{AbstractAlgebra.Generic.MPolyRing{nf_elem}}, complete_reduction::Bool) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/groebner.jl:105 [12] standard_basis(I::MPolyIdeal{AbstractAlgebra.Generic.MPoly{nf_elem}}; ordering::Oscar.Orderings.MonomialOrdering{AbstractAlgebra.Generic.MPolyRing{nf_elem}}, complete_reduction::Bool, algorithm::Symbol) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/groebner.jl:159 [13] kwcall(::NamedTuple{(:ordering, :complete_reduction, :algorithm), Tuple{Oscar.Orderings.MonomialOrdering{AbstractAlgebra.Generic.MPolyRing{nf_elem}}, Bool, Symbol}}, ::typeof(standard_basis), I::MPolyIdeal{AbstractAlgebra.Generic.MPoly{nf_elem}}) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/groebner.jl:151 [14] groebner_basis(I::MPolyIdeal{AbstractAlgebra.Generic.MPoly{nf_elem}}; ordering::Oscar.Orderings.MonomialOrdering{AbstractAlgebra.Generic.MPolyRing{nf_elem}}, complete_reduction::Bool, algorithm::Symbol) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/groebner.jl:291 [15] kwcall(::NamedTuple{(:ordering,), Tuple{Oscar.Orderings.MonomialOrdering{AbstractAlgebra.Generic.MPolyRing{nf_elem}}}}, ::typeof(groebner_basis), I::MPolyIdeal{AbstractAlgebra.Generic.MPoly{nf_elem}}) @ Oscar ~/.julia/packages/Oscar/1Moid/src/Rings/groebner.jl:288 [16] groebBasProjn(basisVecs::Vector{Any}, ordrng::Oscar.Orderings.MonomialOrdering{AbstractAlgebra.Generic.MPolyRing{nf_elem}}, polyRing::AbstractAlgebra.Generic.MPolyRing{nf_elem}, varTuple::Vector{AbstractAlgebra.Generic.MPoly{nf_elem}})

benlorenz commented 7 months ago

To reproduce this without vscode, and with a stacktrace that points to the JuliaInterpreter error path (src/interpret.jl:120):

(@v1.10) pkg> activate --temp
  Activating new project at `/tmp/jl_ZaaGQm`

(jl_ZaaGQm) pkg> add JuliaInterpreter
(jl_ZaaGQm) pkg> add Oscar
julia> using JuliaInterpreter
julia> using Oscar

julia> R, s = Oscar.polynomial_ring(Oscar.QQ, "s");
julia> C, i = Oscar.number_field(s^2 + 1, "i");
julia> polyRing, (a1, a2, a3, a4) = Oscar.polynomial_ring(C, ["a1", "a2", "a3", "a4"]);
julia> idl = Oscar.ideal(polyRing, [a1+a2*a3]);

julia> @interpret Oscar.groebner_basis(idl, ordering = revlex(polyRing))
ERROR: unknown call f introduced by ccall lowering getindex
Stacktrace:
   [1] error(::String, ::Function)
     @ Base ./error.jl:44
   [2] #invokelatest#2
     @ ./essentials.jl:892 [inlined]
   [3] invokelatest
     @ ./essentials.jl:889 [inlined]
   [4] lookup_or_eval(recurse::Any, frame::Frame, node::Any)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:120
   [5] collect_args(recurse::Any, frame::Frame, call_expr::Expr; isfc::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:160
   [6] collect_args(recurse::Any, frame::Frame, call_expr::Expr)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:153
   [7] bypass_builtins(recurse::Any, frame::Frame, call_expr::Expr, pc::Int64)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:207
   [8] evaluate_call_recurse!(recurse::Any, frame::Frame, call_expr::Expr; enter_generated::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:251
   [9] evaluate_call_recurse!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:249 [inlined]
  [10] eval_rhs(recurse::Any, frame::Frame, node::Expr)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:422
  [11] step_expr!(recurse::Any, frame::Frame, node::Any, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:495
  [12] step_expr!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:633
  [13] finish!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:14
  [14] finish_and_return!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:30
  [15] evaluate_call_recurse!(recurse::Any, frame::Frame, call_expr::Expr; enter_generated::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:288
--- the last 7 lines are repeated 2 more times ---
  [30] evaluate_call_recurse!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:249 [inlined]
  [31] eval_rhs(recurse::Any, frame::Frame, node::Expr)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:422
  [32] step_expr!(recurse::Any, frame::Frame, node::Any, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:578
  [33] step_expr!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:633
  [34] finish!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:14
  [35] finish_and_return!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:30
  [36] evaluate_call_recurse!(recurse::Any, frame::Frame, call_expr::Expr; enter_generated::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:288
--- the last 7 lines are repeated 1 more time ---
  [44] evaluate_call_recurse!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:249 [inlined]
  [45] eval_rhs(recurse::Any, frame::Frame, node::Expr)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:422
  [46] step_expr!(recurse::Any, frame::Frame, node::Any, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:495
  [47] step_expr!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:633
  [48] finish!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:14
  [49] finish_and_return!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:30
  [50] evaluate_call_recurse!(recurse::Any, frame::Frame, call_expr::Expr; enter_generated::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:288
  [51] evaluate_call_recurse!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:249 [inlined]
  [52] eval_rhs(recurse::Any, frame::Frame, node::Expr)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:422
  [53] step_expr!(recurse::Any, frame::Frame, node::Any, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:578
--- the last 7 lines are repeated 5 more times ---
  [89] step_expr!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:633
  [90] finish!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:14
  [91] finish_and_return!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:30
  [92] evaluate_call_recurse!(recurse::Any, frame::Frame, call_expr::Expr; enter_generated::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:288
  [93] evaluate_call_recurse!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:249 [inlined]
  [94] eval_rhs(recurse::Any, frame::Frame, node::Expr)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:422
  [95] step_expr!(recurse::Any, frame::Frame, node::Any, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:495
  [96] step_expr!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:633
  [97] finish!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:14
  [98] finish_and_return!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:30
  [99] evaluate_call_recurse!(recurse::Any, frame::Frame, call_expr::Expr; enter_generated::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:288
 [100] evaluate_call_recurse!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:249 [inlined]
 [101] eval_rhs(recurse::Any, frame::Frame, node::Expr)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:422
 [102] step_expr!(recurse::Any, frame::Frame, node::Any, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:578
--- the last 7 lines are repeated 3 more times ---
 [124] step_expr!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/interpret.jl:633
 [125] finish!(recurse::Any, frame::Frame, istoplevel::Bool)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:14
 [126] finish_and_return!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:30 [inlined]
 [127] finish_and_return!
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:34 [inlined]
 [128] finish_and_return!(frame::Frame)
     @ JuliaInterpreter /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/commands.jl:34
 [129] macro expansion
     @ /home/datastore/lorenz/software/julia/depot/packages/JuliaInterpreter/KozUS/src/construct.jl:755 [inlined]
barche commented 4 months ago

This has also been reported here now: https://github.com/JuliaInterop/CxxWrap.jl/issues/435

I can reproduce it but I have no idea what causes this.

henkka14 commented 1 month ago

Experiencing same issue unknown call f introduced by ccall lowering getindex on similar setup

I am working with dev containers Ubuntu 22.04 Julia 1.9.4 VS Code 1.92.2