JuliaGraphics / Gtk.jl

Julia interface to Gtk windowing toolkit.
Other
289 stars 80 forks source link

sigatomic_end called in non-sigatomic region #695

Open mpeters2 opened 9 months ago

mpeters2 commented 9 months ago

MacOS 14.0, M1Max chip Gtk.jl v1.3.0

I get this error when calling dataFileName = open_dialog_native("Pick a file", GtkNullContainer() ), but only when I'm using the VScode debugger. If I'm not using the debugger, I do not get the crash, but I only have a 50% chance the file dialog will allow me to select a file.

Edit: this sounds like #664 and #691

┌ Warning: Executing yield:
└ @ Gtk.GLib ~/.julia/packages/Gtk/oo3cW/src/GLib/signals.jl:106
ERROR: sigatomic_end called in non-sigatomic region
Stacktrace:
  [1] sigatomic_end
    @ ./c.jl:452 [inlined]
  [2] g_siginterruptible(f::typeof(yield), cb::Any)
    @ Gtk.GLib ~/.julia/packages/Gtk/oo3cW/src/GLib/signals.jl:214
  [3] g_yield(data::UInt64)
    @ Gtk.GLib ~/.julia/packages/Gtk/oo3cW/src/GLib/signals.jl:237
  [4] uv_dispatch(src::Ptr{Nothing}, callback::Ptr{Nothing}, data::Int64)
    @ Gtk.GLib ~/.julia/packages/Gtk/oo3cW/src/GLib/signals.jl:333
  [5] var"##compiled_ccall#311"(arg1::Ptr{GObject}, arg2::GtkFileChooserNativeLeaf)
    @ VSCodeDebugger.JuliaInterpreter.CompiledCalls ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/optimize.jl:346
  [6] invoke_in_world(::UInt64, ::Any, ::Any, ::Vararg{Any}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Base ./essentials.jl:850
  [7] invoke_in_world(::UInt64, ::Any, ::Any, ::Vararg{Any})
    @ Base ./essentials.jl:847
  [8] bypass_builtins(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr, pc::Int64)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:195
  [9] evaluate_call_recurse!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr; enter_generated::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:222
 [10] evaluate_call_recurse!
    @ ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:220 [inlined]
 [11] eval_rhs(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Expr)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:393
 [12] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Any, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:547
 [13] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:597
 [14] finish!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:14
 [15] finish_and_return!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:30
 [16] evaluate_call_recurse!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr; enter_generated::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:260
 [17] evaluate_call_recurse!
    @ ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:220 [inlined]
 [18] eval_rhs(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Expr)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:393
 [19] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Any, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:468
 [20] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:597
 [21] finish!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:14
 [22] finish_and_return!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:30
 [23] evaluate_call_recurse!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr; enter_generated::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:260
--- the last 14 lines are repeated 1 more time ---
 [38] evaluate_call_recurse!
    @ ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:220 [inlined]
 [39] eval_rhs(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Expr)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:393
 [40] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Any, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:547
 [41] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:597
 [42] finish!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:14
 [43] finish_and_return!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:30
 [44] evaluate_call_recurse!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr; enter_generated::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:260
--- the last 7 lines are repeated 1 more time ---
 [52] evaluate_call_recurse!
    @ ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:220 [inlined]
 [53] eval_rhs(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Expr)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:393
 [54] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Any, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:468
 [55] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:597
 [56] finish!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:14
 [57] finish_and_return!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:30
 [58] evaluate_call_recurse!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr; enter_generated::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:260
 [59] evaluate_call_recurse!
    @ ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:220 [inlined]
 [60] eval_rhs(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Expr)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:393
 [61] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Any, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:542
 [62] step_expr!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/interpret.jl:597
 [63] finish!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:14
 [64] finish_and_return!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:30
 [65] finish_stack!(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, rootistoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:60
 [66] debug_command(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, cmd::Symbol, rootistoplevel::Bool; line::Nothing)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:516
 [67] debug_command(recurse::Any, frame::VSCodeDebugger.JuliaInterpreter.Frame, cmd::Symbol, rootistoplevel::Bool)
    @ VSCodeDebugger.JuliaInterpreter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/JuliaInterpreter/src/commands.jl:448
 [68] #invokelatest#2
    @ ./essentials.jl:816 [inlined]
 [69] invokelatest
    @ ./essentials.jl:813 [inlined]
 [70] our_debug_command(cmd::Symbol, state::VSCodeDebugger.DebugAdapter.DebuggerState)
    @ VSCodeDebugger.DebugAdapter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/DebugAdapter/src/debugger_core.jl:67
 [71] startdebug(socket::Base.PipeEndpoint, error_handler::VSCodeDebugger.var"#3#4"{Tuple{String, String}})
    @ VSCodeDebugger.DebugAdapter ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/DebugAdapter/src/packagedef.jl:106
 [72] startdebugger()
    @ VSCodeDebugger ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/packages/VSCodeDebugger/src/VSCodeDebugger.jl:43
 [73] top-level scope
    @ ~/.vscode/extensions/julialang.language-julia-1.54.2/scripts/debugger/run_debugger.jl:10
 [74] include(mod::Module, _path::String)
    @ Base ./Base.jl:457
 [75] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:307
mpeters2 commented 9 months ago

As it turns out, Gtk is the source of this GLMakie crash. If I comment out my open_dialog_native() function call, and instead hardwire the filename into my code, the GLMakie crash goes away.

It might be related to this issue.