Crash when undoing break path at selected node

Summary:

Reproducible crash after doing the following steps

Steps to reproduce:

  • Open Inkscape
  • Create a new document
  • Draw two squares using the square tool
  • Select both the squares and convert them to paths using Path->Object to Path
  • Using the node tool, select two corners holding shift
  • Press the Break path at selected nodes button
  • Press the Join selected nodes button
  • Undo twice (Cmd+Z)

What happened?

Inkscape crashes with trace:

 0# Inkscape::Application::crash_handler(int) in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 1# _sigtramp in /usr/lib/system/libsystem_platform.dylib
 2# SPItem::i2dt_affine() const in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 3# KnotHolderEntity::update_knot() in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 4# BlurKnotHolderEntity::update_knot() in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 5# KnotHolder::update_knots() in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 6# Inkscape::UI::ShapeEditor::set_item(SPItem*) in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 7# Inkscape::XML::CompositeNodeObserver::notifyAttributeChanged(Inkscape::XML::Node&, unsigned int, Inkscape::Util::ptr_shared, Inkscape::Util::ptr_shared) in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 8# Inkscape::XML::SimpleNode::setAttributeImpl(char const*, char const*) in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
 9# sp_repr_undo_log(Inkscape::XML::Event*) in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
10# Inkscape::DocumentUndo::undo(SPDocument*) in /Applications/Inkscape.app/Contents/Resources/lib/inkscape/libinkscape_base.1.3.2.0.dylib
11# (anonymous namespace)::SimpleAction_signal_activate_callback(_GSimpleAction*, _GVariant*, void*) in /Applications/Inkscape.app/Contents/Resources/lib/libgiomm-2.4.1.dylib
12# g_closure_invoke in /Applications/Inkscape.app/Contents/Resources/lib/libgobject-2.0.0.dylib
13# signal_emit_unlocked_R in /Applications/Inkscape.app/Contents/Resources/lib/libgobject-2.0.0.dylib
14# g_signal_emit_valist in /Applications/Inkscape.app/Contents/Resources/lib/libgobject-2.0.0.dylib
15# g_signal_emit in /Applications/Inkscape.app/Contents/Resources/lib/libgobject-2.0.0.dylib
16# g_simple_action_activate in /Applications/Inkscape.app/Contents/Resources/lib/libgio-2.0.0.dylib
17# Gio::Action_Class::activate_vfunc_callback(_GAction*, _GVariant*) in /Applications/Inkscape.app/Contents/Resources/lib/libgiomm-2.4.1.dylib
18# Gio::ActionGroup_Class::activate_action_vfunc_callback(_GActionGroup*, char const*, _GVariant*) in /Applications/Inkscape.app/Contents/Resources/lib/libgiomm-2.4.1.dylib
19# gtk_application_accels_activate in /Applications/Inkscape.app/Contents/Resources/lib/libgtk-3.0.dylib
20# gtk_window_activate_key in /Applications/Inkscape.app/Contents/Resources/lib/libgtk-3.0.dylib
21# gtk_window_key_press_event in /Applications/Inkscape.app/Contents/Resources/lib/libgtk-3.0.dylib
22# Gtk::Widget::on_key_press_event(_GdkEventKey*) in /Applications/Inkscape.app/Contents/Resources/lib/libgtkmm-3.0.1.dylib
23# Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) in /Applications/Inkscape.app/Contents/Resources/lib/libgtkmm-3.0.1.dylib
24# _gtk_marshal_BOOLEAN__BOXEDv in /Applications/Inkscape.app/Contents/Resources/lib/libgtk-3.0.dylib
25# _g_closure_invoke_va in /Applications/Inkscape.app/Contents/Resources/lib/libgobject-2.0.0.dylib
26# g_signal_emit_valist in /Applications/Inkscape.app/Contents/Resources/lib/libgobject-2.0.0.dylib
27# g_signal_emit in /Applications/Inkscape.app/Contents/Resources/lib/libgobject-2.0.0.dylib
28# gtk_widget_event_internal in /Applications/Inkscape.app/Contents/Resources/lib/libgtk-3.0.dylib
29# gtk_propagate_event in /Applications/Inkscape.app/Contents/Resources/lib/libgtk-3.0.dylib
30# gtk_main_do_event in /Applications/Inkscape.app/Contents/Resources/lib/libgtk-3.0.dylib
31# _gdk_event_emit in /Applications/Inkscape.app/Contents/Resources/lib/libgdk-3.0.dylib
32# gdk_event_dispatch in /Applications/Inkscape.app/Contents/Resources/lib/libgdk-3.0.dylib
33# g_main_context_dispatch in /Applications/Inkscape.app/Contents/Resources/lib/libglib-2.0.0.dylib
34# g_main_context_iterate in /Applications/Inkscape.app/Contents/Resources/lib/libglib-2.0.0.dylib
35# g_main_context_iteration in /Applications/Inkscape.app/Contents/Resources/lib/libglib-2.0.0.dylib
36# g_application_run in /Applications/Inkscape.app/Contents/Resources/lib/libgio-2.0.0.dylib
37# main in /Applications/Inkscape.app/Contents/MacOS/inkscape
System info Inkscape 1.3.2 (091e20e, 2023-11-25)
GLib version:     2.76.3
GTK version:      3.24.38
glibmm version:   2.66.6
gtkmm version:    3.24.7
libxml2 version:  2.11.4
libxslt version:  1.1.35
Cairo version:    1.18.0
Pango version:    1.50.14
HarfBuzz version: 8.0.1

OS version:       macOS 14.4.1 (23E224) arm64

What should have happened?

No crash

Version info


Inkscape 1.3.2 (091e20e, 2023-11-25)

    GLib version:     2.76.3
    GTK version:      3.24.38
    glibmm version:   2.66.6
    gtkmm version:    3.24.7
    libxml2 version:  2.11.4
    libxslt version:  1.1.35
    Cairo version:    1.18.0
    Pango version:    1.50.14
    HarfBuzz version: 8.0.1

    OS version:       macOS 14.4.1 (23E224) arm64