0.92.x Objects dialog not updated on deleting sub-layer with object

Migrated from https://bugs.launchpad.net/inkscape/+bug/1720226

Steps to reproduce

  1. draw one or several objects
  2. group these objects
  3. Open Objects dialog
  4. In the "T" column, toggle this group to layer
  5. Open Layer dialog (Shift+Ctrl+L)
  6. In layer dialog delete this (sub)layer
  7. in object dialog select one of the objects (which should have been gone) Inkscape crashes!

What happened?

Objects dialog isn't updated. On selecting this removed items, a crash occurs.

Backtrace in 0.92.x (2017)
◊0  0x00007ffff2fca434 in __dynamic_cast () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
◊1  0x00007ffff6bbeb4f in Inkscape::UI::Dialog::ObjectsPanel::_selected_row_callback(Gtk::TreeIter const&, bool*) (this=0x555559254080, iter=..., setCompositingValues=0x7fffffffcf77) at ../src/ui/dialog/objects.cpp:632
◊2  0x00007ffff6bd828b in sigc::bound_mem_functor2::operator()(Gtk::TreeIter const&, bool* const&) const (this=0x5555593eae30, _A_a1=..., _A_a2=@0x5555593eae50: 0x7fffffffcf77) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2143
◊3  0x00007ffff6bd7325 in sigc::adaptor_functor >::operator()(Gtk::TreeIter const&, bool*&) const (this=0x5555593eae28, _A_arg1=..., _A_arg2=@0x5555593eae50: 0x7fffffffcf77) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:108
◊4  0x00007ffff6bd5701 in sigc::bind_functor<-1, sigc::bound_mem_functor2, bool*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()(Gtk::TreeIter const&) (this=0x5555593eae20, _A_arg1=...) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1136
◊5  0x00007ffff6bd34bd in sigc::internal::slot_call1, bool*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void, Gtk::TreeIter const&>::call_it(sigc::internal::slot_rep*, Gtk::TreeIter const&) (rep=0x5555593eadf0, a_1=...) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:148
◊6  0x00007ffff46d8bd3 in  () at /usr/lib/x86_64-linux-gnu/libgtkmm-2.4.so.1
◊7  0x00007ffff3fd3ad4 in gtk_tree_selection_selected_foreach () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊8  0x00007ffff46d9160 in Gtk::TreeSelection::selected_foreach_iter(sigc::slot const&) const () at /usr/lib/x86_64-linux-gnu/libgtkmm-2.4.so.1
◊9  0x00007ffff6bbe9d3 in Inkscape::UI::Dialog::ObjectsPanel::_pushTreeSelectionToCurrent() (this=0x555559254080) at ../src/ui/dialog/objects.cpp:612
◊10 0x00007ffff6bd6b04 in sigc::bound_mem_functor0::operator()() const (this=0x55555925e8c8) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991
◊11 0x00007ffff6bd4a98 in sigc::adaptor_functor >::operator()() const (this=0x55555925e8c0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
◊12 0x00007ffff6bd40bc in sigc::internal::slot_call0, void>::call_it(sigc::internal::slot_rep*) (rep=0x55555925e890) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:114
◊13 0x00007ffff3b9a548 in sigc::slot0::operator()() const (this=0x555559274628) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:513
◊14 0x00007ffff3b9a548 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) (self=, data=0x555559274620) at signalproxy.cc:103
◊18 0x00007ffff1d7b12f in  (instance=, signal_id=, detail=) at ../../../../gobject/gsignal.c:3447
    ◊15 0x00007ffff1d5f10d in g_closure_invoke (closure=0x555559274590, return_value=0x0, n_param_values=1, param_values=0x7fffffffd260, invocation_hint=0x7fffffffd1e0) at ../../../../gobject/gclosure.c:804
    ◊16 0x00007ffff1d71bf1 in signal_emit_unlocked_R (node=node@entry=0x555557f504d0, detail=detail@entry=0, instance=instance@entry=0x555557e15840, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd260) at ../../../../gobject/gsignal.c:3705
    ◊17 0x00007ffff1d7a715 in g_signal_emit_valist (instance=, signal_id=, detail=, var_args=var_args@entry=0x7fffffffd420) at ../../../../gobject/gsignal.c:3391
◊19 0x00007ffff3fe8b0f in  () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊20 0x00007ffff3fed330 in  () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊21 0x00007ffff3ef038b in  () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊25 0x00007ffff1d7b12f in  (instance=, signal_id=, detail=) at ../../../../gobject/gsignal.c:3447
    ◊22 0x00007ffff1d5f10d in g_closure_invoke (closure=0x555555814a30, return_value=0x7fffffffd7f0, n_param_values=2, param_values=0x7fffffffd850, invocation_hint=0x7fffffffd7d0) at ../../../../gobject/gclosure.c:804
    ◊23 0x00007ffff1d71de8 in signal_emit_unlocked_R (node=node@entry=0x555555814a80, detail=detail@entry=0, instance=instance@entry=0x555557f53080, emission_return=emission_return@entry=0x7fffffffd970, instance_and_params=instance_and_params@entry=0x7fffffffd850) at ../../../../gobject/gsignal.c:3673
    ◊24 0x00007ffff1d7a0af in g_signal_emit_valist (instance=, signal_id=, detail=, var_args=var_args@entry=0x7fffffffda20) at ../../../../gobject/gsignal.c:3401
◊26 0x00007ffff40062bc in  () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊27 0x00007ffff3eee62c in gtk_propagate_event () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊28 0x00007ffff3eeea2b in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊29 0x0000555555565ff9 in snooper(GdkEvent*, gpointer) (event=0x555558b716c0) at ../src/main.cpp:1043
◊30 0x00007ffff36de02c in  () at /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0
◊31 0x00007ffff5008417 in g_main_dispatch (context=0x5555558a1e10) at ../../../../glib/gmain.c:3176
◊32 0x00007ffff5008417 in g_main_context_dispatch (context=context@entry=0x5555558a1e10) at ../../../../glib/gmain.c:3829
◊33 0x00007ffff5008650 in g_main_context_iterate (context=0x5555558a1e10, block=block@entry=1, dispatch=dispatch@entry=1, self=) at ../../../../glib/gmain.c:3902
◊34 0x00007ffff5008962 in g_main_loop_run (loop=0x555557ef4770) at ../../../../glib/gmain.c:4098
◊35 0x00007ffff3eeda37 in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
◊36 0x000055555556652a in sp_main_gui(int, char const**) (argc=1, argv=0x7fffffffdfd8) at ../src/main.cpp:1173
◊37 0x00005555555659b8 in main(int, char**) (argc=1, argv=0x7fffffffdfd8) at ../src/main.cpp:817

What should have happened?

Objects dialog should be updated properly, avoiding the crash.

Inkscape Version and Operating System:

  • Inkscape 0.92.4 (30a405ac91, 2019-07-15) build Linux Mint 19.1
  • Inkscape 0.92.4 5da689c313, 2019-01-14 flatpak Linux Mint 19.1
  • No longer present in master
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information