# ProfileView crashes when showing a garbage collector tab

**URL:** <https://discourse.julialang.org/t/profileview-crashes-when-showing-a-garbage-collector-tab/136112>\
**Category:** General Usage\
**Tags:** bug, profileviewjl\
**Created:** [March 10, 2026, 4:13am UTC](https://discourse.julialang.org/t/profileview-crashes-when-showing-a-garbage-collector-tab/136112 "2026-03-10T04:13:07Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![phma](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/phma/32/6576_2.png) [@phma](https://discourse.julialang.org/u/phma)\
**Post date:** [March 10, 2026, 4:13am UTC](https://discourse.julialang.org/t/profileview-crashes-when-showing-a-garbage-collector-tab/136112/1 "2026-03-10T04:13:07Z")

</div>

I’m profiling a process that I calculated should take a little over two minutes (just counting the sleeps) to find out why it actually takes ten minutes. I run `@profview` on it; some minutes later a window appears. The window has tabs for all, interactive, each CPU thread, and “foreign gc” threads. When I get to the garbage collector tabs, the window stops responding, and it dumps the following to the terminal:

```julia-auto
julia> @profview <snip name of function>()
┌ Warning: The profile data buffer is full; profiling probably terminated
│ before your program finished. To profile for longer runs, call
│ `Profile.init()` with a larger buffer and/or larger delay.
└ @ Profile ~/.julia/juliaup/julia-1.12.5+0.x64.linux.gnu/share/julia/stdlib/v1.12/Profile/src/Profile.jl:693
Gtk4.GtkWindowLeaf(accessible-role=GTK_ACCESSIBLE_ROLE_WINDOW, name="", parent, root, width-request=-1, height-request=-1, visible=true, sensitive=true, can-focus=true, has-focus=false, can-target=true, focus-on-click=true, focusable=false, has-default=false, receives-default=false, cursor, has-tooltip=false, tooltip-markup=nothing, tooltip-text=nothing, opacity=1.000000, overflow=GTK_OVERFLOW_HIDDEN, halign=GTK_ALIGN_FILL, valign=GTK_ALIGN_FILL, margin-start=0, margin-end=0, margin-top=0, margin-bottom=0, hexpand=false, vexpand=false, hexpand-set=false, vexpand-set=false, scale-factor=1, css-name="window", css-classes, layout-manager, limit-events=false, title="Profile - 23:46:53", resizable=true, modal=false, default-width=800, default-height=600, destroy-with-parent=false, hide-on-close=false, icon-name=nothing, display, decorated=true, deletable=true, transient-for, application, default-widget, focus-widget, child, titlebar, handle-menubar-accel=true, is-active=true, suspended=false, startup-id, mnemonics-visible=false, focus-visible=false, maximized=false, fullscreened=false)

julia> ┌ Warning: Error in @guarded callback
│ exception =
│ ArgumentError: Infimum not defined for empty intervals
│ Stacktrace:
│ [1] infimum
│ @ ~/.julia/packages/IntervalSets/K4CRG/src/IntervalSets.jl:227 [inlined]
│ [2] minimum
│ @ ~/.julia/packages/IntervalSets/K4CRG/src/IntervalSets.jl:334 [inlined]
│ [3] BoundingBox
│ @ ~/.julia/packages/GtkObservables/sClCQ/src/GtkObservables.jl:134 [inlined]
│ [4] (::ProfileView.var"#viewprof_func##3#viewprof_func##4"{FlameGraphs.FlameColors, GtkObservables.Canvas{GtkObservables.UserUnit}, Int64, Cairo.CairoSurfaceImage{ColorTypes.RGB24}, Int64, ProfileView.var"#row_height#viewprof_func##2", ProfileView.var"#device_bb#viewprof_func##1"{Symbol}, ProfileView.var"#gettag#viewprof_func##0", IndirectArrays.IndirectArray{Base.StackTraces.StackFrame, 2, Int64, Matrix{Int64}, Vector{Base.StackTraces.StackFrame}}})(widget::Gtk4.GtkCanvas, r::GtkObservables.ZoomRegion{Float64}, _show_labels::Bool)
│ @ ProfileView ~/.julia/packages/ProfileView/v8kk7/src/ProfileView.jl:398
│ [5] macro expansion
│ @ ~/.julia/packages/GtkObservables/sClCQ/src/graphics_interaction.jl:408 [inlined]                                                                                     
│ [6] (::GtkObservables.var"#223#224"{ProfileView.var"#viewprof_func##3#viewprof_func##4"{FlameGraphs.FlameColors, GtkObservables.Canvas{GtkObservables.UserUnit}, Int64, Cairo.CairoSurfaceImage{ColorTypes.RGB24}, Int64, ProfileView.var"#row_height#viewprof_func##2", ProfileView.var"#device_bb#viewprof_func##1"{Symbol}, ProfileView.var"#gettag#viewprof_func##0", IndirectArrays.IndirectArray{Base.StackTraces.StackFrame, 2, Int64, Matrix{Int64}, Vector{Base.StackTraces.StackFrame}}}, Tuple{Observables.Observable{GtkObservables.ZoomRegion{Float64}}, Observables.Observable{Bool}}})(widget::Gtk4.GtkCanvas)
│ @ GtkObservables ~/.julia/packages/Gtk4/IynXD/src/GLib/signals.jl:132
│ [7] draw(widget::Gtk4.GtkCanvas)
│ @ Gtk4 ~/.julia/packages/Gtk4/IynXD/src/cairo.jl:117
│ [8] _canvas_on_resize(::Ptr{Gtk4.GLib.GObject}, width::Int32, height::Int32, canvas::Gtk4.GtkCanvas)
│ @ Gtk4 ~/.julia/packages/Gtk4/IynXD/src/cairo.jl:31
│ [9] iterate_loop
│ @ ~/.julia/packages/Gtk4/IynXD/src/GLib/loop.jl:85 [inlined]
│ [10] (::Base.var"#634#635"{typeof(Gtk4.GLib.iterate_loop), Timer})()
│ @ Base ./asyncevent.jl:361
└ @ GtkObservables ~/.julia/packages/Gtk4/IynXD/src/GLib/signals.jl:134
Error in Timer:
ArgumentError: Infimum not defined for empty intervals
Stacktrace:
 [1] infimum
   @ ~/.julia/packages/IntervalSets/K4CRG/src/IntervalSets.jl:227 [inlined]
 [2] minimum
   @ ~/.julia/packages/IntervalSets/K4CRG/src/IntervalSets.jl:334 [inlined]
 [3] BoundingBox
   @ ~/.julia/packages/GtkObservables/sClCQ/src/GtkObservables.jl:134 [inlined]
 [4] (::ProfileView.var"#viewprof_func##5#viewprof_func##6"{FlameGraphs.FlameColors, GtkObservables.Canvas{GtkObservables.UserUnit}, Int64, Symbol, Cairo.CairoSurfaceImage{ColorTypes.RGB24}, Observables.Observable{Bool}, Observables.Observable{GtkObservables.ZoomRegion{Float64}}, Int64, ProfileView.var"#row_height#viewprof_func##2", ProfileView.var"#device_bb#viewprof_func##1"{Symbol}, ProfileView.var"#gettag#viewprof_func##0", Gtk4.GtkEntryLeaf, Base.RefValue{Graphics.BoundingBox}, IndirectArrays.IndirectArray{Base.StackTraces.StackFrame, 2, Int64, Matrix{Int64}, Vector{Base.StackTraces.StackFrame}}})(btn::GtkObservables.MouseButton{GtkObservables.UserUnit})
   @ ProfileView ~/.julia/packages/ProfileView/v8kk7/src/ProfileView.jl:461
 [5] notify
   @ ~/.julia/packages/Observables/YdEbO/src/Observables.jl:206 [inlined]
 [6] setindex!
   @ ~/.julia/packages/Observables/YdEbO/src/Observables.jl:123 [inlined]
 [7] mousemove_cb(ecp::Ptr{Gtk4.GLib.GObject}, x::Float64, y::Float64, handler::GtkObservables.MouseHandler{GtkObservables.UserUnit})
   @ GtkObservables ~/.julia/packages/GtkObservables/sClCQ/src/graphics_interaction.jl:270
 [8] iterate_loop
   @ ~/.julia/packages/Gtk4/IynXD/src/GLib/loop.jl:85 [inlined]
 [9] (::Base.var"#634#635"{typeof(Gtk4.GLib.iterate_loop), Timer})()
   @ Base ./asyncevent.jl:361

```

When I switch back to the virtual desktop, the window is black and does not respond when I try to close it. To close the window, I have to exit Julia.

I’m running Julia 1.12.5, installed with juliaup, and tried this on both an AMD Ryzen and an Intel Core i9, with the same result except for the number of thread tabs.
