[gtk4] Segfault in GtkTreeListModel
Steps to reproduce
- Build and run attached app
- Expand node "a"
- Collapse node "a"
- Click "Add node"
Version information
GTK 4.4.1-ds1-3
Debian Unstable
Warnings
No warnings
Backtrace
#0 0x00007ffff778b55a in gtk_rb_tree_insert_before (tree=0x0, node=0x0) at ../../../gtk/gtkrbtree.c:631
#1 0x00007ffff76b7f7b in gtk_tree_list_model_items_changed_cb
(model=<optimized out>, position=<optimized out>, removed=<optimized out>, added=1, node=0x5555556bc960) at ../../../gtk/gtktreelistmodel.c:417
#5 0x00007ffff7d934ff in <emit signal ??? on instance 0x5555556a5940 [GListStore]>
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3553
#2 0x00007ffff7d7a6df in g_closure_invoke
(closure=0x5555557047c0, return_value=return_value@entry=0x0, n_param_values=4, param_values=param_values@entry=0x7fffffffc870, invocation_hint=invocation_hint@entry=0x7fffffffc7f0) at ../../../gobject/gclosure.c:830
#3 0x00007ffff7d8cb36 in signal_emit_unlocked_R
(node=node@entry=0x555555576600, detail=detail@entry=0, instance=instance@entry=0x5555556a5940, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc870) at ../../../gobject/gsignal.c:3742
#4 0x00007ffff7d92f51 in g_signal_emit_valist
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffca40) at ../../../gobject/gsignal.c:3497
#6 0x000055555555697c in add_clicked () at ../main.c:104
#7 0x00007ffff7d7a909 in _g_closure_invoke_va
(closure=closure@entry=0x555555703a00, return_value=return_value@entry=0x0, instance=instance@entry=0x5555556f37b0, args=args@entry=0x7fffffffcd30, n_params=0, param_types=0x0) at ../../../gobject/gclosure.c:893
#8 0x00007ffff7d932d9 in g_signal_emit_valist
(instance=0x5555556f37b0, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffcd30) at ../../../gobject/gsignal.c:3406
#9 0x00007ffff7d934ff in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3553
#10 0x00007ffff74ab769 in _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv
(closure=closure@entry=0x5555556406d0, return_value=return_value@entry=0x0, instance=instance@entry=0x55555559d3f0, args=args@entry=0x7fffffffd030, marshal_data=marshal_data@entry=0x0, n_params=n_params@entry=3, param_types=0x555555609060) at gtk/gtkmarshalers.c:5445
#11 0x00007ffff7d7a909 in _g_closure_invoke_va
(closure=closure@entry=0x5555556406d0, return_value=return_value@entry=0x0, instance=instance@entry=0x55555559d3f0, args=args@entry=0x7fffffffd030, n_params=3, param_types=0x555555609060) at ../../../gobject/gclosure.c:893
#12 0x00007ffff7d932d9 in g_signal_emit_valist
(instance=0x55555559d3f0, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd030) at ../../../gobject/gsignal.c:3406
#13 0x00007ffff7d934ff in g_signal_emit (instance=instance@entry=0x55555559d3f0, signal_id=<optimized out>, detail=detail@entry=0)
at ../../../gobject/gsignal.c:3553
#14 0x00007ffff7587886 in gtk_gesture_click_end (gesture=0x55555559d3f0 [GtkGestureClick], sequence=sequence@entry=0x0)
at ../../../gtk/gtkgestureclick.c:276
#15 0x00007ffff7d7d772 in g_cclosure_marshal_VOID__BOXEDv
(closure=0x5555555fd6b0, return_value=<optimized out>, instance=0x55555559d3f0, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x555555601420) at ../../../gobject/gmarshal.c:1686
#16 0x00007ffff7d7a909 in _g_closure_invoke_va
(closure=closure@entry=0x5555555fd6b0, return_value=return_value@entry=0x0, instance=instance@entry=0x55555559d3f0, args=args@entry=0x7fffffffd3b0, n_params=1, param_types=0x555555601420) at ../../../gobject/gclosure.c:893
#17 0x00007ffff7d932d9 in g_signal_emit_valist
(instance=0x55555559d3f0, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd3b0) at ../../../gobject/gsignal.c:3406
#18 0x00007ffff7d934ff in g_signal_emit (instance=instance@entry=0x55555559d3f0, signal_id=<optimized out>, detail=detail@entry=0)
at ../../../gobject/gsignal.c:3553
#19 0x00007ffff7584237 in _gtk_gesture_set_recognized (sequence=0x0, recognized=0, gesture=0x55555559d3f0 [GtkGestureClick])
at ../../../gtk/gtkgesture.c:339
#20 _gtk_gesture_check_recognized (gesture=gesture@entry=0x55555559d3f0 [GtkGestureClick], sequence=sequence@entry=0x0) at ../../../gtk/gtkgesture.c:380
#21 0x00007ffff7585a43 in gtk_gesture_handle_event (controller=<optimized out>, event=0x5555560a41e0 [GdkButtonEvent], x=41.171875, y=21.9609375)
at ../../../gtk/gtkgesture.c:678
#22 0x00007ffff7588eaf in gtk_gesture_single_handle_event
(controller=0x55555559d3f0 [GtkGestureClick], event=0x5555560a41e0 [GdkButtonEvent], x=41.171875, y=21.9609375) at ../../../gtk/gtkgesturesingle.c:227
#23 0x00007ffff7554006 in gtk_event_controller_handle_event
(controller=controller@entry=0x55555559d3f0 [GtkGestureClick], event=event@entry=0x5555560a41e0 [GdkButtonEvent], target=target@entry=0x5555556ca340 [Gtk--Type <RET> for more, q to quit, c to continue without paging--c
Label], x=x@entry=41.171875, y=y@entry=21.9609375) at ../../../gtk/gtkeventcontroller.c:369
#24 0x00007ffff76f86fa in gtk_widget_run_controllers (widget=widget@entry=0x5555556f37b0 [GtkButton], event=event@entry=0x5555560a41e0 [GdkButtonEvent], target=target@entry=0x5555556ca340 [GtkLabel], x=41.171875, y=21.9609375, phase=phase@entry=GTK_PHASE_CAPTURE) at ../../../gtk/gtkwidget.c:4558
#25 0x00007ffff77000a4 in _gtk_widget_captured_event (widget=widget@entry=0x5555556f37b0 [GtkButton], event=event@entry=0x5555560a41e0 [GdkButtonEvent], target=target@entry=0x5555556ca340 [GtkLabel]) at ../../../gtk/gtkwidget.c:4721
#26 0x00007ffff75d4676 in gtk_propagate_event_internal (widget=0x5555556f37b0 [GtkButton], widget@entry=0x5555556ca340 [GtkLabel], event=event@entry=0x5555560a41e0 [GdkButtonEvent], topmost=<optimized out>) at ../../../gtk/gtkmain.c:1867
#27 0x00007ffff75d47b6 in gtk_propagate_event (widget=widget@entry=0x5555556ca340 [GtkLabel], event=event@entry=0x5555560a41e0 [GdkButtonEvent]) at ../../../gtk/gtkmain.c:1949
#28 0x00007ffff75d4d53 in gtk_main_do_event (event=0x5555560a41e0 [GdkButtonEvent]) at ../../../gtk/gtkmain.c:1641
#29 0x00007ffff770ca8c in surface_event (surface=<optimized out>, event=<optimized out>, widget=<optimized out>) at ../../../gtk/gtkwindow.c:4737
#30 0x00007ffff77fe299 in _gdk_marshal_BOOLEAN__POINTERv (closure=closure@entry=0x555555e15920, return_value=return_value@entry=0x7fffffffda10, instance=instance@entry=0x555555710090, args=args@entry=0x7fffffffdae0, marshal_data=marshal_data@entry=0x0, n_params=n_params@entry=1, param_types=0x55555570e7a0) at gdk/gdkmarshalers.c:302
#31 0x00007ffff78251fd in gdk_surface_event_marshallerv (closure=closure@entry=0x555555e15920, return_value=return_value@entry=0x7fffffffda10, instance=instance@entry=0x555555710090, args=args@entry=0x7fffffffdae0, marshal_data=marshal_data@entry=0x0, n_params=n_params@entry=1, param_types=0x55555570e7a0) at ../../../gdk/gdksurface.c:451
#32 0x00007ffff7d7a909 in _g_closure_invoke_va (closure=closure@entry=0x555555e15920, return_value=return_value@entry=0x7fffffffda10, instance=instance@entry=0x555555710090, args=args@entry=0x7fffffffdae0, n_params=1, param_types=0x55555570e7a0) at ../../../gobject/gclosure.c:893
#33 0x00007ffff7d9263b in g_signal_emit_valist (instance=0x555555710090, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffdae0) at ../../../gobject/gsignal.c:3406
#34 0x00007ffff7d934ff in g_signal_emit (instance=instance@entry=0x555555710090, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3553
#35 0x00007ffff782885f in gdk_surface_handle_event (event=event@entry=0x5555560a41e0 [GdkButtonEvent]) at ../../../gdk/gdksurface.c:2877
#36 0x00007ffff7812739 in _gdk_event_emit (event=event@entry=0x5555560a41e0 [GdkButtonEvent]) at ../../../gdk/gdkevents.c:490
#37 0x00007ffff783983a in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../../../gdk/wayland/gdkeventsource.c:141
#38 0x00007ffff7c85cdb in g_main_dispatch (context=0x555555576cd0) at ../../../glib/gmain.c:3381
#39 g_main_context_dispatch (context=0x555555576cd0) at ../../../glib/gmain.c:4099
#40 0x00007ffff7c85f88 in g_main_context_iterate (context=context@entry=0x555555576cd0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4175
#41 0x00007ffff7c8603f in g_main_context_iteration (context=context@entry=0x555555576cd0, may_block=may_block@entry=1) at ../../../glib/gmain.c:4240
#42 0x00007ffff7ea206d in g_application_run (application=0x5555555740e0 [GtkApplication], argc=<optimized out>, argv=<optimized out>) at ../../../gio/gapplication.c:2569
#43 0x0000555555556c34 in main () at ../main.c:152
[gtk-treelistmodel-crash.tar.xz](/uploads/c23e4abfe46f375c201f23313f72b083/gtk-treelistmodel-crash.tar.xz)
Edited by Andrey Kutejko