Can someone collect a full backtrace (ideally with symbols) for this crash?
See https://inkscape.org/develop/debugging/ for tips on using gdb to collect backtraces.
Gtk:ERROR:../../../../gtk/gtkrbtree.c:932:_gtk_rbtree_node_find_offset: assertion failed: (node->left)Thread 1 "inkscape" received signal SIGABRT, Aborted.__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:5151 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.(gdb) bt#0 0x00007ffff414ee97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51#1 0x00007ffff4150801 in __GI_abort () at abort.c:79#2 0x00007ffff5cfe2a5 in g_assertion_message () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0#3 0x00007ffff5cfe30a in g_assertion_message_expr () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0#4 0x00007ffff4b250d6 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#5 0x00007ffff4be991b in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#6 0x00007ffff4bedfc7 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#7 0x00007ffff4abbf4f in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#8 0x00007ffff1e7110d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#9 0x00007ffff1e83de8 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#10 0x00007ffff1e8bc80 in g_signal_emitv () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#11 0x00007ffff49a551a in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#12 0x00007ffff49a59f0 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#13 0x00007ffff49a5b80 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#14 0x00007ffff49a6cd9 in gtk_bindings_activate_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#15 0x00007ffff4bef358 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#16 0x00007ffff4abb8d7 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#17 0x00007ffff1e71250 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#18 0x00007ffff1e8c3cd in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#19 0x00007ffff1e8d12f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#20 0x00007ffff4c03514 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#21 0x00007ffff4c23eeb in gtk_window_propagate_key_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#22 0x00007ffff4c278db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#23 0x00007ffff58e9897 in Gtk::Widget::on_key_press_event(_GdkEventKey*) () at /usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1#24 0x00007ffff7340f73 in InkscapeWindow::on_key_press_event(_GdkEventKey*) (this=0x555557026e30, event=0x5555590b19e0) at ../src/inkscape-window.cpp:121#25 0x00007ffff58ebab4 in Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) () at /usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1#26 0x00007ffff4abb8d7 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#27 0x00007ffff1e71346 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#28 0x00007ffff1e8c3cd in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#29 0x00007ffff1e8d12f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0#30 0x00007ffff4c03514 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#31 0x00007ffff4ab891f in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#32 0x00007ffff4aba928 in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0#33 0x00007fffeee04765 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0#34 0x00007fffeee34f92 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0#35 0x00007ffff5cd7387 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0#36 0x00007ffff5cd75c0 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0#37 0x00007ffff5cd764c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0#38 0x00007ffff2157e3d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0#39 0x0000555555554f39 in main(int, char**) (argc=1, argv=0x7fffffffdff8) at ../src/inkscape-main.cpp:59
Oof, I commented in the wrong place... repost from inbox
Problem is identified, not sure how to solve though (well there's a bunch of ways I guess, but I'm not the best to implement them)
I think the easiest thing to do is override the keys (PgDn, PgUp, maybe Up and Down too)? Seems drastic I guess.
1. Page down calls gtk_tree_view_move_cursor_page_up_down, 2. which changes the selection by calling gtk_tree_view_real_set_cursor, 3. which emits selection_changed (signal) 4. which eventually calls sp_gvs_rebuild_gui_full, 5. which clears the ListStore, invalidating the current iterators 6. crash in gtk_tree_view_clamp_node_visible because the rbtree's gone (see 5)
The PgDn/PgUp button can lead to a gradient being deleted from the document. That means a row in the ListStore needs to be removed, invalidating the iterators/rbtree nodes in the same way.