Skip to content

Crash when deleting opened folder via side pane

Steps to reproduce

  1. mkdir -p tree-crash/nested/
  2. touch tree-crash/nested/1
  3. thunar tree-crash/
  4. If the side pane is not visible, press Ctrl + e
  5. Expand the tree-crash folder in the side pane to reveal the nested folder
  6. Click on the nested folder in the side pane (or the main window) to open the folder
  7. Right-click on the nested folder in the side pane and choose Move to Trash to trigger a crash

Debugging

Warnings

Gtk-CRITICAL **: 20:58:11.381: file ../gtk/gtk/a11y/gtktreeviewaccessible.c: line 343 (set_cell_data): should not be reached

thunar-CRITICAL **: 20:58:11.382: thunar_tree_view_model_get_file: assertion 'iter->stamp == ((((ThunarTreeViewModel*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((model)), ((thunar_tree_view_model_get_type ()))))))->stamp' failed

thunar-CRITICAL **: 20:58:11.382: thunar_tree_view_model_iter_next: assertion 'iter->stamp == ((((ThunarTreeViewModel*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((model)), ((thunar_tree_view_model_get_type ()))))))->stamp' failed

Backtrace

There's a NULL pointer dereference in thunar_tree_view_model_iter_nth_child:

Thread 1 "thunar" received signal SIGSEGV, Segmentation fault.
0x0000555555dfcec6 in thunar_tree_view_model_iter_nth_child (model=0x50e0000606e0, iter=0x7fffffffba80, parent=0x0, n=0) at thunar-tree-view-model.c:1489
1489	  if (n >= node->n_children)
(gdb) p node
$1 = (Node *) 0x0

(gdb) bt
#0  0x0000555555dfcec6 in thunar_tree_view_model_iter_nth_child (model=0x50e0000606e0, iter=0x7fffffffba80, parent=0x0, n=0) at thunar-tree-view-model.c:1489
#1  0x00007ffff7502f93 in gtk_tree_row_reference_unref_path (path=0x5020004cbeb0, model=0x50e0000606e0, depth=1) at ../gtk/gtk/gtktreemodel.c:2288
#2  0x00007ffff7503310 in gtk_tree_row_reference_unref_path (depth=<optimized out>, model=<optimized out>, path=<optimized out>) at ../gtk/gtk/gtktreemodel.c:2285
#3  gtk_tree_row_reference_free (reference=0x503000906280) at ../gtk/gtk/gtktreemodel.c:2522
#4  gtk_tree_row_reference_free (reference=0x503000906280) at ../gtk/gtk/gtktreemodel.c:2496
#5  0x00007ffff752b290 in gtk_tree_view_set_model (model=0x0, tree_view=0x51900011a760 [ExoTreeView]) at ../gtk/gtk/gtktreeview.c:11525
#6  gtk_tree_view_set_model (tree_view=0x51900011a760 [ExoTreeView], model=0x0) at ../gtk/gtk/gtktreeview.c:11473
#7  0x00007ffff7a51672 in object_set_property
    (object=object@entry=0x51900011a760 [ExoTreeView], pspec=pspec@entry=0x50b000062560 [GParamObject], value=value@entry=0x7fffffffbcc0, nqueue=nqueue@entry=0x5020005ca1f0, user_specified=user_specified@entry=1) at ../glib/gobject/gobject.c:1838
#8  0x00007ffff7a5480f in g_object_set_valist (var_args=0x7fffffffbd70, first_property_name=<optimized out>, object=<optimized out>) at ../glib/gobject/gobject.c:2780
#9  g_object_set_valist (object=<optimized out>, first_property_name=<optimized out>, var_args=0x7fffffffbd70) at ../glib/gobject/gobject.c:2741
#10 0x00007ffff7a54c99 in g_object_set (_object=0x51900011a760, first_property_name=0x555555886e40 <str> "model") at ../glib/gobject/gobject.c:2956
#11 0x0000555555d5b91a in thunar_standard_view_set_current_directory (navigator=0x51a0000a5a70, current_directory=0x51100008bc80 [ThunarFile]) at thunar-standard-view.c:1597
#12 0x0000555555c403c3 in thunar_navigator_set_current_directory (navigator=0x51a0000a5a70, current_directory=0x51100008bc80 [ThunarFile]) at thunar-navigator.c:193
#13 0x0000555555d3c019 in thunar_standard_view_set_property (object=0x51a0000a5a70 [ThunarDetailsView], prop_id=1, value=0x7fffffffc500, pspec=0x50b00006b670 [GParamObject])
    at thunar-standard-view.c:1178
#14 0x00007ffff7a514fb in object_set_property
    (object=object@entry=0x51a0000a5a70 [ThunarDetailsView], pspec=0x50b00006b670 [GParamObject], value=value@entry=0x7fffffffc500, nqueue=nqueue@entry=0x5020005ca0b0, user_specified=user_specified@entry=1) at ../glib/gobject/gobject.c:1811
#15 0x00007ffff7a543e2 in g_object_setv (values=<optimized out>, names=<optimized out>, n_properties=<optimized out>, object=0x51a0000a5a70 [ThunarDetailsView])
    at ../glib/gobject/gobject.c:2722
#16 g_object_setv (object=0x51a0000a5a70 [ThunarDetailsView], n_properties=<optimized out>, names=<optimized out>, values=<optimized out>) at ../glib/gobject/gobject.c:2693
#17 0x00007ffff7a54620 in g_object_set_property (object=<optimized out>, property_name=<optimized out>, value=<optimized out>) at ../glib/gobject/gobject.c:3022
#18 0x00007ffff7a42c4d in on_source_notify (source=<optimized out>, pspec=<optimized out>, context=<optimized out>) at ../glib/gobject/gbinding.c:556
#19 0x00007ffff7a416c0 in g_closure_invoke (closure=0x507000158620, return_value=0x0, n_param_values=2, param_values=0x7fffffffc750, invocation_hint=0x7fffffffc6a0)
    at ../glib/gobject/gclosure.c:832
#20 0x00007ffff7a6fa36 in signal_emit_unlocked_R.isra.0
    (node=node@entry=0x7fffffffc840, detail=detail@entry=1465, instance=instance@entry=0x51a00001b2e0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc750) at ../glib/gobject/gsignal.c:3980
#21 0x00007ffff7a60a42 in signal_emit_valist_unlocked (instance=instance@entry=0x51a00001b2e0, signal_id=signal_id@entry=1, detail=detail@entry=1465, var_args=var_args@entry=0x7fffffffc9a0)
    at ../glib/gobject/gsignal.c:3612
#22 0x00007ffff7a60c77 in g_signal_emit_valist (instance=0x51a00001b2e0, signal_id=1, detail=1465, var_args=var_args@entry=0x7fffffffc9a0) at ../glib/gobject/gsignal.c:3355
#23 0x00007ffff7a60d34 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib/gobject/gsignal.c:3675
#24 0x00007ffff7a4c636 in g_object_dispatch_properties_changed (object=0x51a00001b2e0 [ThunarWindow], n_pspecs=<optimized out>, pspecs=<optimized out>) at ../glib/gobject/gobject.c:1427
#25 0x00007ffff7a52d0f in g_object_notify_by_spec_internal (pspec=<optimized out>, object=0x51a00001b2e0 [ThunarWindow]) at ../glib/gobject/gobject.c:1551
#26 g_object_notify (property_name=<optimized out>, object=0x51a00001b2e0 [ThunarWindow]) at ../glib/gobject/gobject.c:1601
#27 g_object_notify (object=0x51a00001b2e0 [ThunarWindow], property_name=<optimized out>) at ../glib/gobject/gobject.c:1578
#28 0x0000555555e23d51 in thunar_window_set_current_directory (window=0x51a00001b2e0 [ThunarWindow], current_directory=0x51100008bc80 [ThunarFile]) at thunar-window.c:5233
#29 0x00007ffff7a416c0 in g_closure_invoke (closure=0x5070001583f0, return_value=0x0, n_param_values=2, param_values=0x7fffffffd030, invocation_hint=0x7fffffffcf80)
    at ../glib/gobject/gclosure.c:832
#30 0x00007ffff7a6fa36 in signal_emit_unlocked_R.isra.0
    (node=node@entry=0x7fffffffd120, detail=detail@entry=0, instance=instance@entry=0x51a0000a5a70, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd030) at ../glib/gobject/gsignal.c:3980
#31 0x00007ffff7a60a42 in signal_emit_valist_unlocked (instance=instance@entry=0x51a0000a5a70, signal_id=signal_id@entry=363, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffd280)
    at ../glib/gobject/gsignal.c:3612
#32 0x00007ffff7a60c77 in g_signal_emit_valist (instance=0x51a0000a5a70, signal_id=363, detail=0, var_args=var_args@entry=0x7fffffffd280) at ../glib/gobject/gsignal.c:3355
#33 0x00007ffff7a60d34 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib/gobject/gsignal.c:3675
#34 0x0000555555c40948 in thunar_navigator_change_directory (navigator=0x51a0000a5a70, directory=0x51100008bc80 [ThunarFile]) at thunar-navigator.c:223
#35 0x0000555555e1e26b in thunar_window_update_directories (window=0x51a00001b2e0 [ThunarWindow], old_directory=0x5110000da740 [ThunarFile], new_directory=0x51100008bc80 [ThunarFile])
    at thunar-window.c:2989
#36 0x0000555555d56384 in thunar_standard_view_current_directory_destroy (current_directory=0x5110000da740 [ThunarFile], standard_view=0x51a0000a5a70 [ThunarDetailsView])
    at thunar-standard-view.c:2363
#37 0x00007ffff7a416c0 in g_closure_invoke (closure=0x5070002525c0, return_value=0x0, n_param_values=1, param_values=0x7fffffffd860, invocation_hint=0x7fffffffd7b0)
    at ../glib/gobject/gclosure.c:832
#38 0x00007ffff7a6fa36 in signal_emit_unlocked_R.isra.0
    (node=node@entry=0x7fffffffd930, detail=detail@entry=0, instance=instance@entry=0x5110000da740, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd860) at ../glib/gobject/gsignal.c:3980
#39 0x00007ffff7a60a42 in signal_emit_valist_unlocked (instance=instance@entry=0x5110000da740, signal_id=signal_id@entry=280, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffda90)
    at ../glib/gobject/gsignal.c:3612
#40 0x00007ffff7a60c77 in g_signal_emit_valist (instance=0x5110000da740, signal_id=280, detail=0, var_args=var_args@entry=0x7fffffffda90) at ../glib/gobject/gsignal.c:3355
#41 0x00007ffff7a60d34 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib/gobject/gsignal.c:3675
#42 0x0000555555b88fc4 in thunar_file_dispose (object=0x5110000da740 [ThunarFile]) at thunar-file.c:468
#43 0x00007ffff7a4f900 in g_object_run_dispose (object=0x5110000da740 [ThunarFile]) at ../glib/gobject/gobject.c:1447
#44 g_object_run_dispose (object=0x5110000da740 [ThunarFile]) at ../glib/gobject/gobject.c:1440
#45 0x0000555555b825f5 in thunar_file_destroy (file=0x5110000da740 [ThunarFile]) at thunar-file.c:4378
#46 0x0000555555b96748 in thunar_folder_monitor
    (monitor=0x507000152250 [GInotifyFileMonitor], event_file=0x5030000043c0, other_file=0x0, event_type=G_FILE_MONITOR_EVENT_MOVED_OUT, user_data=0x50c000411a00) at thunar-folder.c:1007
#51 0x00007ffff7a60d34 in <emit signal 'changed' on instance 0x507000152250 [GInotifyFileMonitor]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>)
    at ../glib/gobject/gsignal.c:3675
    #47 0x00007ffff709a559 in _g_cclosure_marshal_VOID__OBJECT_OBJECT_ENUMv
    (closure=0x5070001522d0, return_value=<optimized out>, instance=0x507000152250, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x503000441e80)
    at ../glib/gio/gmarshal-internal.c:1382
    #48 0x00007ffff7a60b73 in _g_closure_invoke_va
    (param_types=0x503000441e80, n_params=<optimized out>, args=0x7fffffffe0e0, instance=0x507000152250, return_value=0x0, closure=0x5070001522d0) at ../glib/gobject/gclosure.c:895
    #49 signal_emit_valist_unlocked (instance=instance@entry=0x507000152250, signal_id=signal_id@entry=409, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffe0e0)
    at ../glib/gobject/gsignal.c:3516
    #50 0x00007ffff7a60c77 in g_signal_emit_valist (instance=0x507000152250, signal_id=409, detail=0, var_args=var_args@entry=0x7fffffffe0e0) at ../glib/gobject/gsignal.c:3355
#52 0x00007ffff715ef2c in g_file_monitor_source_dispatch (source=0x51000004b340, callback=<optimized out>, user_data=<optimized out>) at ../glib/gio/glocalfilemonitor.c:582
#53 0x00007ffff6f34f69 in g_main_dispatch (context=0x50f000000310) at ../glib/glib/gmain.c:3476
#54 0x00007ffff6f933a7 in g_main_context_dispatch_unlocked (context=0x50f000000310) at ../glib/glib/gmain.c:4284
#55 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x50f000000310, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4349
#56 0x00007ffff6f33162 in g_main_context_iteration (context=context@entry=0x50f000000310, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4414
#57 0x00007ffff7106b66 in g_application_run (application=0x514000000930 [ThunarApplication], argc=<optimized out>, argv=0x7fffffffe5d8) at ../glib/gio/gapplication.c:2577
#58 0x0000555555a63dcc in main (argc=2, argv=0x7fffffffe5d8) at main.c:86

Version: 421d2e67