Crash on Selection::_emitChanged()

Summary:

There is a rare crash on desktop removal which could be related to signals.

Steps to reproduce:

The crash steps is pretty involved:

  • Open a lot of dialogs.
  • Close them all.
  • Spam Ctrl+Shift+{W,E,R,T,Y,U}, occasionally lifting Ctrl or Shift.

What happened?

 0# Inkscape::Application::crash_handler(int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
 1# 0x0000000000044190 in /lib64/libc.so.6
 2# sigc::internal::signal_emit0::emit(sigc::internal::signal_impl*) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
 3# Inkscape::Selection::_emitChanged(bool) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
 4# Inkscape::Application::remove_desktop(SPDesktop*) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
 5# SPDesktopWidget::on_unrealize() in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
 6# Gtk::Widget_Class::unrealize_callback(_GtkWidget*) in /usr/lib64/libgtkmm-3.0.so.1
 7# 0x000000000001884E in /usr/lib64/libgobject-2.0.so.0
 8# 0x000000000002DA64 in /usr/lib64/libgobject-2.0.so.0
 9# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
10# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
11# gtk_widget_unrealize in /usr/lib64/libgtk-3.so.0
12# 0x00000000000D9DB0 in /usr/lib64/libgtk-3.so.0
13# 0x0000000000350FFC in /usr/lib64/libgtk-3.so.0
14# 0x000000000001884E in /usr/lib64/libgobject-2.0.so.0
15# 0x000000000002DA64 in /usr/lib64/libgobject-2.0.so.0
16# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
17# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
18# gtk_widget_unrealize in /usr/lib64/libgtk-3.so.0
19# 0x000000000035BCA9 in /usr/lib64/libgtk-3.so.0
20# Gtk::Container_Class::forall_vfunc_callback(_GtkContainer*, int, void (*)(_GtkWidget*, void*), void*) in /usr/lib64/libgtkmm-3.0.so.1
21# 0x0000000000350FFC in /usr/lib64/libgtk-3.so.0
22# 0x000000000035F3D7 in /usr/lib64/libgtk-3.so.0
23# Gtk::Widget_Class::unrealize_callback(_GtkWidget*) in /usr/lib64/libgtkmm-3.0.so.1
24# g_closure_invoke in /usr/lib64/libgobject-2.0.so.0
25# 0x000000000002C4B4 in /usr/lib64/libgobject-2.0.so.0
26# 0x000000000002D8E2 in /usr/lib64/libgobject-2.0.so.0
27# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
28# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
29# gtk_widget_unrealize in /usr/lib64/libgtk-3.so.0
30# 0x000000000034F428 in /usr/lib64/libgtk-3.so.0
31# 0x0000000000362D62 in /usr/lib64/libgtk-3.so.0
32# 0x00000000000CD77F in /usr/lib64/libgtk-3.so.0
33# g_object_run_dispose in /usr/lib64/libgobject-2.0.so.0
34# Gtk::Window::_release_c_instance() in /usr/lib64/libgtkmm-3.0.so.1
35# Gtk::ApplicationWindow::~ApplicationWindow() in /usr/lib64/libgtkmm-3.0.so.1
36# InkscapeWindow::~InkscapeWindow() in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
37# InkscapeWindow::~InkscapeWindow() in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
38# InkscapeApplication::destroy_window(InkscapeWindow*, bool) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
39# InkscapeWindow::on_delete_event(_GdkEventAny*) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.4.3.0
40# Gtk::Widget_Class::delete_event_callback(_GtkWidget*, _GdkEventAny*) in /usr/lib64/libgtkmm-3.0.so.1
41# 0x000000000009FCE2 in /usr/lib64/libgtk-3.so.0
42# 0x0000000000018914 in /usr/lib64/libgobject-2.0.so.0
43# 0x000000000002CCC4 in /usr/lib64/libgobject-2.0.so.0
44# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
45# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
46# 0x0000000000345C1C in /usr/lib64/libgtk-3.so.0
47# gtk_main_do_event in /usr/lib64/libgtk-3.so.0
48# 0x0000000000041825 in /usr/lib64/libgdk-3.so.0
49# 0x00000000000762B2 in /usr/lib64/libgdk-3.so.0
50# 0x000000000005EB96 in /usr/lib64/libglib-2.0.so.0
51# 0x0000000000061C9F in /usr/lib64/libglib-2.0.so.0
52# g_main_context_iteration in /usr/lib64/libglib-2.0.so.0
53# g_application_run in /usr/lib64/libgio-2.0.so.0
54# main in /usr/bin/inkscape
55# 0x000000000002AD14 in /lib64/libc.so.6
56# __libc_start_main in /lib64/libc.so.6
57# _start in /usr/bin/inkscape
System info Inkscape 1.4.3 (168cca90f1, 2026-04-12)
                  Compile  (Run)
GLib version:     2.86.4
GTK version:      3.24.51 (3.24.51)
glibmm version:   2.66.7
gtkmm version:    3.24.10
libxml2 version:  2.15.1
libxslt version:  1.1.45
Cairo version:    1.18.4 (1.18.4)
Pango version:    1.57.0 (1.57.0)
HarfBuzz version: 12.3.2 (12.3.2)

OS version:       Slackware 15.0 x86_64 (post 15.0 -current)

What should have happened?

No crash

Version info

Inkscape 1.4.3 (168cca90f1, 2026-04-12)

                      Compile  (Run)
    GLib version:     2.86.4
    GTK version:      3.24.51 (3.24.51)
    glibmm version:   2.66.7
    gtkmm version:    3.24.10
    libxml2 version:  2.15.1
    libxslt version:  1.1.45
    Cairo version:    1.18.4 (1.18.4)
    Pango version:    1.57.0 (1.57.0)
    HarfBuzz version: 12.3.2 (12.3.2)

    OS version:       Slackware 15.0 x86_64 (post 15.0 -current)
Edited by Willy (Wen-Wei) Kao