julia-vscode / julia-vscode

Julia extension for Visual Studio Code
https://www.julia-vscode.org/
Other
1.28k stars 202 forks source link

Debugger crashes all the time, both in Linux and windows #1693

Open vlasdas-uu opened 3 years ago

vlasdas-uu commented 3 years ago

When trying to debug the following piece of code,

using OpenAIGym env = GymEnv("MountainCar-v0") # offending line

the debugger crashes all the time. I have tried it both in Linux(Ubuntu) and Windows 10, both visual studio code and code-insiders, and the error can be reproduced consistently. The code crashes in both extensions 1.0.7 and 1.0.8.

The code is running properly. No issue there, only when debugging. Stacktrace for Windows 10:


┌ Warning: Some Julia code in the VS Code extension crashed with
│   e =
│    MethodError: no method matching (::Colon)(::Int64, ::PyCall.PyObject)
│    Closest candidates are:
│      Any(::T, ::Any, ::T) where T<:Real at range.jl:41
│      Any(::A, ::Any, ::C) where {A<:Real, C<:Real} at range.jl:10
│      Any(::T, ::Any, ::T) where T at range.jl:40
│      ...
└ @ VSCodeDebugger c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\error_handler.jl:5
ERROR: MethodError: no method matching (::Colon)(::Int64, ::PyCall.PyObject)
Closest candidates are:
  Any(::T, ::Any, ::T) where T<:Real at range.jl:41
  Any(::A, ::Any, ::C) where {A<:Real, C<:Real} at range.jl:10
  Any(::T, ::Any, ::T) where T at range.jl:40
  ...
Stacktrace:
 [1] prepare_call(::Any, ::Array{Any,1}; enter_generated::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\construct.jl:259
 [2] get_call_framecode(::Array{Any,1}, ::VSCodeDebugger.JuliaInterpreter.FrameCode, ::Int64; enter_generated::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\localmethtable.jl:63
 [3] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:225
 [4] evaluate_call_recurse! at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202 [inlined]
 [5] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
 [6] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:529
 [7] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579
 [8] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:14
 [9] finish_and_return! at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:29 [inlined]
 [10] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:240
 ... (the last 7 lines are repeated 8 more times)
 [67] evaluate_call_recurse! at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202 [inlined]
 [68] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
 [69] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:524
 [70] step_expr! at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579 [inlined]
 [71] next_until!(::Any, ::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:91
 [72] _next_line!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool, ::Int64, ::String) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:180
 [73] next_line!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:175
 [74] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool; line::Nothing) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:433
 [75] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:415
 [76] #invokelatest#1 at .\essentials.jl:710 [inlined]
 [77] invokelatest at .\essentials.jl:709 [inlined]
 [78] our_debug_command(::Symbol, ::VSCodeDebugger.DebugAdapter.DebuggerState) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\DebugAdapter\src\debugger_core.jl:65
 [79] startdebug(::Base.PipeEndpoint, ::VSCodeDebugger.var"#3#4"{Tuple{String,String}}) at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\DebugAdapter\src\packagedef.jl:104
 [80] startdebugger() at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\packages\VSCodeDebugger\src\VSCodeDebugger.jl:38 [81] top-level scope at c:\Users\Test\.vscode-insiders\extensions\julialang.language-julia-1.0.8\scripts\debugger\run_debugger.jl:7
 [82] include(::Function, ::Module, ::String) at .\Base.jl:380
 [83] include(::Module, ::String) at .\Base.jl:368
 [84] exec_options(::Base.JLOptions) at .\client.jl:296

Julia debuggee finished. Press ENTER to close this terminal.

It would be nice to have a fully functional debugger in Julia for VS Code and in Julia in general.

OctarineSourcerer commented 3 years ago

I'll add that I seem to have something similar going on. The code I'm using is rather more complicated, so I might return with a more minimal case later.

pfitzseb commented 3 years ago

This will probably be fixed in the next release, which includes an updated JuliaInterpreter with a bunch of bugfixes.

OctarineSourcerer commented 3 years ago

So I've just had a check on the most recent release (1.1.25), and while it does seem to work with a simple example:

numbers = 1:5
addFive(n) = n + 5
bigger = addFive.(numbers)

My more complex code I'm using at the moment murders the debugger something fierce. The error I get is as follows:

The error ``` ┌ Warning: Some Julia code in the VS Code extension crashed with │ e = TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N} └ @ VSCodeDebugger ~/.vscode/extensions/julialang.language-julia-1.1.25/scripts/error_handler.jl:5 ERROR: TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N} Stacktrace: [1] parametric_type_to_expr(::Type) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:251 [2] build_compiled_call!(::Expr, ::Symbol, ::Core.CodeInfo, ::Int64, ::Int64, ::Array{Symbol,1}, ::Module) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:342 [3] optimize!(::Core.CodeInfo, ::Method) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:192 [4] VSCodeDebugger.JuliaInterpreter.FrameCode(::Method, ::Core.CodeInfo; generator::Bool, optimize::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/types.jl:101 [5] prepare_framecode(::Method, ::Any; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:190 [6] prepare_call(::Any, ::Array{Any,1}; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:261 [7] get_call_framecode(::Array{Any,1}, ::VSCodeDebugger.JuliaInterpreter.FrameCode, ::Int64; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/localmethtable.jl:63 [8] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:224 [9] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [10] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [11] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:537 [12] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [13] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [14] finish_and_return! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [inlined] [15] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:239 ... (the last 7 lines are repeated 2 more times) [30] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [31] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [32] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:450 [33] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [34] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [35] finish_and_return! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [inlined] [36] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:239 [37] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [38] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [39] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:537 ... (the last 7 lines are repeated 3 more times) [61] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [62] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [63] finish_and_return! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [inlined] [64] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:239 [65] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [66] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [67] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:532 [68] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [69] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [70] finish_and_return!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [71] finish_stack!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:59 [72] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool; line::Nothing) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:473 [73] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:415 [74] #invokelatest#1 at ./essentials.jl:710 [inlined] [75] invokelatest at ./essentials.jl:709 [inlined] [76] our_debug_command(::Symbol, ::VSCodeDebugger.DebugAdapter.DebuggerState) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/debugger_core.jl:67 [77] startdebug(::Base.PipeEndpoint, ::VSCodeDebugger.var"#3#4"{Tuple{String,String}}) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/packagedef.jl:102 [78] startdebugger() at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/VSCodeDebugger/src/VSCodeDebugger.jl:38 Julia debuggee finished. Press ENTER to close this terminal. ```

This code is the smallest working example I can get:

Minimum working example ``` using CSV, DataFrames println("A") manualData = DataFrame(A = 1:4, B = ["M", "F", "F", "M"]) println("B") show(manualData) println("C") # Testing IO works fileThing = read("testText.txt", String) println(fileThing) println("D") # This line is what kills it. rawData = CSV.File("raw_utf8_2020_12_17.csv") println("E") ``` That gets the following output: ``` A B 4×2 DataFrame Row │ A B │ Int64 String ─────┼─────────────── 1 │ 1 M 2 │ 2 F 3 │ 3 F 4 │ 4 MC testing, 123, testing D ┌ Warning: Some Julia code in the VS Code extension crashed with │ e = TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N} └ @ VSCodeDebugger ~/.vscode/extensions/julialang.language-julia-1.1.25/scripts/error_handler.jl:5 ERROR: TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N} Stacktrace: [1] parametric_type_to_expr(::Type) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:251 [2] build_compiled_call!(::Expr, ::Symbol, ::Core.CodeInfo, ::Int64, ::Int64, ::Array{Symbol,1}, ::Module) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:342 [3] optimize!(::Core.CodeInfo, ::Method) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:192 [4] VSCodeDebugger.JuliaInterpreter.FrameCode(::Method, ::Core.CodeInfo; generator::Bool, optimize::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/types.jl:101 [5] prepare_framecode(::Method, ::Any; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:190 [6] prepare_call(::Any, ::Array{Any,1}; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:261 [7] get_call_framecode(::Array{Any,1}, ::VSCodeDebugger.JuliaInterpreter.FrameCode, ::Int64; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/localmethtable.jl:63 [8] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:224 [9] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [10] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [11] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:537 [12] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [13] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [14] finish_and_return! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [inlined] [15] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:239 ... (the last 7 lines are repeated 2 more times) [30] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [31] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [32] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:450 [33] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [34] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [35] finish_and_return! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [inlined] [36] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:239 [37] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [38] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [39] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:537 ... (the last 7 lines are repeated 3 more times) [61] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [62] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [63] finish_and_return! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [inlined] [64] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:239 [65] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined] [66] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394 [67] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:532 [68] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587 [69] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14 [70] finish_and_return!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29 [71] finish_stack!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:59 [72] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool; line::Nothing) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:473 [73] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:415 [74] #invokelatest#1 at ./essentials.jl:710 [inlined] [75] invokelatest at ./essentials.jl:709 [inlined] [76] our_debug_command(::Symbol, ::VSCodeDebugger.DebugAdapter.DebuggerState) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/debugger_core.jl:67 [77] startdebug(::Base.PipeEndpoint, ::VSCodeDebugger.var"#3#4"{Tuple{String,String}}) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/packagedef.jl:102 [78] startdebugger() at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/VSCodeDebugger/src/VSCodeDebugger.jl:38 Julia debuggee finished. Press ENTER to close this terminal. ```

So it looks like CSV.File is crashing it, BUT that code works completely fine when running via Julia: Execute File. Here's my environment:

Julia Version 1.5.3
Commit 788b2c77c1* (2020-11-09 13:37 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-10.0.1 (ORCJIT, skylake)
Environment:
  JULIA_EDITOR = "/opt/visual-studio-code/code"
  JULIA_NUM_THREADS =

I hope that helps!

pfitzseb commented 3 years ago

Thanks for the MWE. Will look into it.

Anyways, I'd very much recommend using @run/@enter specifically for the code you want to debug (which usually isn't a CSV.File call).

pfitzseb commented 3 years ago

Ok, I can't repro the crash with the CSV file you're trying to read. Just with

a b
1 2 

everything works fine.

OctarineSourcerer commented 3 years ago

Will try with that CSV file. What do you mean by using @run/@enter? (Sorry, am relatively new to Julia, and that CSV.File line was the one in my code that seemed to kill things).

Edit: Can confirm that CSV file works fine. I'll try and MWE-ise mine, but it's still a debugger issue, seeing as it runs fine when just executing.

pfitzseb commented 3 years ago

Sure, it's just a hard-to-fix issue if we can't repro it :)

With @run/@enter I meant starting a session in the integrated REPL, running your setup code, and then invoking the debugger with e.g. @run main(). That way you can run all of your code normally and only start debugging when needed.

OctarineSourcerer commented 3 years ago

Whew okay that was a wild journey to whittle down. MWE csv:

StartDate,Q2_Id
Start Date,"Please upload your savefile if you can - it'll be named something like __InterceptionXX.gz. You'll find it at:

Documents\My Games\Wesnoth\saves\ on Windows,or

~/.local/share/wesnoth//saves/ on Linux - ID"
2020-08-23 04:52:09,
2020-08-23 05:08:02,
2020-08-23 10:06:36,F_3smplS6AiQMH7Gy

And crashes (only while debugging) on

using CSV

println("Testing whole file")
raw = CSV.File("testCsv2.csv")
show(raw)
println()
println("Success")

with the error

┌ Warning: Some Julia code in the VS Code extension crashed with
│   e = TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N}
└ @ VSCodeDebugger ~/.vscode/extensions/julialang.language-julia-1.1.25/scripts/error_handler.jl:5
ERROR: TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N}
Stacktrace:
 [1] parametric_type_to_expr(::Type) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:251
 [2] build_compiled_call!(::Expr, ::Symbol, ::Core.CodeInfo, ::Int64, ::Int64, ::Array{Symbol,1}, ::Module) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:342
 [3] optimize!(::Core.CodeInfo, ::Method) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:192
 [4] VSCodeDebugger.JuliaInterpreter.FrameCode(::Method, ::Core.CodeInfo; generator::Bool, optimize::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/types.jl:101
 [5] prepare_framecode(::Method, ::Any; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:190
 [6] prepare_call(::Any, ::Array{Any,1}; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:261
 [7] get_call_framecode(::Array{Any,1}, ::VSCodeDebugger.JuliaInterpreter.FrameCode, ::Int64; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/localmethtable.jl:63
 [8] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:224
 [9] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined]
 [10] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394
 [11] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:537
 [12] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587
 [13] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14
 [14] finish_and_return!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29
 [15] finish_stack!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:59
 [16] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool; line::Nothing) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:473
 [17] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:415
 [18] #invokelatest#1 at ./essentials.jl:710 [inlined]
 [19] invokelatest at ./essentials.jl:709 [inlined]
 [20] our_debug_command(::Symbol, ::VSCodeDebugger.DebugAdapter.DebuggerState) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/debugger_core.jl:67
 [21] startdebug(::Base.PipeEndpoint, ::VSCodeDebugger.var"#3#4"{Tuple{String,String}}) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/packagedef.jl:102
 [22] startdebugger() at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/VSCodeDebugger/src/VSCodeDebugger.jl:38
 [23] top-level scope at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/debugger/run_debugger.jl:9

I suspect that super-unusual "Please upload your savefile..." cell with the newlines causes some type shenanigans, though I have absolutely no clue why it'd work when executing but not in the debugging. Perhaps the debugger can't handle those shenanigans or early-exits gracefully? I'd think this was a bug with CSV if it wasn't for the fact that it seems to work fine when not debugging :/

I'd ticked the break on Uncaught Exceptions box so that I could see where it's dying - I don't know if it'll help, but here's a screenshot of that. image

Hope all this helps a little!

pfitzseb commented 3 years ago

Yes, that helps a lot. The bug should be fixed with https://github.com/JuliaDebug/JuliaInterpreter.jl/pull/466.

OctarineSourcerer commented 3 years ago

In the latest release (1.1.34), I can confirm that the MWE above works just fine. I'll add that my original code that broke the debugger - a 460-line monster that should never see the light of day - hasn't seemed to crash the debugger, though it took a long while to get through it all. I can see why you advocate only calling the debugger when needed, at that speed.

pfitzseb commented 3 years ago

I anticipate https://github.com/julia-vscode/julia-vscode/pull/1888 to help a lot with that.

OctarineSourcerer commented 3 years ago

I anticipate #1888 to help a lot with that.

That looks amazing! Thank you for all your work here :)