[go: up one dir, main page]

Crash continuing to draw after undoing while extending path (Pencil tool)

Steps to reproduce:

  • Open Inkscape
  • Switch to pencil tool (F6)
  • Draw a line
  • Click on one of the end nodes that appear (to continue drawing from that point). Don't actually draw another line
  • Press undo
  • Press undo again (at this point, the first line is now gone, but the end nodes still exist
  • Draw a line, without switching tools or otherwise getting rid of the nodes.

What happened?

Crash

Thread 1 "inkscape" received signal SIGSEGV, Segmentation fault.
0x00007ffff426a42e in __dynamic_cast ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) set pagination off
(gdb) bt
#0  0x00007ffff426a42e in __dynamic_cast () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x00007ffff6c04de0 in i2anc_affine(SPObject const*, SPObject const*) (object=object@entry=0x5555558707c0, ancestor=ancestor@entry=0x0) at ../src/object/sp-item.cpp:1609
#2  0x00007ffff6c04fc2 in SPItem::i2doc_affine() const (this=this@entry=0x5555558707c0) at ../src/object/sp-item.cpp:1636
#3  0x00007ffff6c0541f in SPItem::i2dt_affine() const (this=0x5555558707c0) at ../src/object/sp-item.cpp:1641
#4  0x00007ffff6c05c40 in SPItem::dt2i_affine() const (this=<optimised out>) at ../src/object/sp-item.cpp:1664
#5  0x00007ffff6de0a8c in Inkscape::UI::Tools::spdc_flush_white(Inkscape::UI::Tools::FreehandBase*, SPCurve*) (dc=dc@entry=0x55555883f400, gc=gc@entry=0x555558a3ed10) at ../src/ui/tools/freehand-base.cpp:884
#6  0x00007ffff6de1c5e in Inkscape::UI::Tools::spdc_concat_colors_and_flush(Inkscape::UI::Tools::FreehandBase*, int) (dc=dc@entry=0x55555883f400, forceclosed=forceclosed@entry=0) at ../src/ui/tools/freehand-base.cpp:860
#7  0x00007ffff6e07179 in Inkscape::UI::Tools::PencilTool::_finishEndpoint() (this=this@entry=0x55555883f400) at ../src/ui/tools/pencil-tool.cpp:697
#8  0x00007ffff6e0c88c in Inkscape::UI::Tools::PencilTool::_handleButtonRelease(_GdkEventButton const&) (this=this@entry=0x55555883f400, revent=...) at ../src/ui/tools/pencil-tool.cpp:447
#9  0x00007ffff6e0cd52 in Inkscape::UI::Tools::PencilTool::root_handler(_GdkEvent*) (this=0x55555883f400, event=0x5555587e6f00) at ../src/ui/tools/pencil-tool.cpp:155
#10 0x00007ffff6e36647 in Inkscape::UI::Tools::sp_event_context_virtual_root_handler(Inkscape::UI::Tools::ToolBase*, _GdkEvent*) (event_context=event_context@entry=0x55555883f400, event=event@entry=0x5555587e6f00) at ../src/ui/tools/tool-base.cpp:1147
#11 0x00007ffff6e37548 in Inkscape::UI::Tools::sp_event_context_root_handler(Inkscape::UI::Tools::ToolBase*, _GdkEvent*) (event_context=0x55555883f400, event=event@entry=0x5555587e6f00) at ../src/ui/tools/tool-base.cpp:1135
#12 0x00007ffff71f0135 in sp_desktop_root_handler(SPCanvasItem*, _GdkEvent*, SPDesktop*) (event=0x5555587e6f00, desktop=0x55555661aa80) at ../src/desktop-events.cpp:87
#17 0x00007ffff194d12f in <emit signal ??? on instance 0x55555794a6b0 [SPCanvasAcetate]> (instance=<optimised out>, signal_id=signal_id@entry=290, detail=detail@entry=0) at ../../../../gobject/gsignal.c:3447
    #13 0x00007ffff6a42143 in sp_marshal_BOOLEAN__POINTER(GClosure*, GValue*, guint, GValue const*, gpointer, gpointer) (closure=0x5555579d1180, return_value=0x7fffffffd6c0, n_param_values=<optimised out>, param_values=0x7fffffffd5a0, invocation_hint=<optimised out>, marshal_data=<optimised out>) at src/helper/sp-marshal.cpp:120
    #14 0x00007ffff193110d in g_closure_invoke (closure=0x5555579d1180, return_value=0x7fffffffd6c0, n_param_values=2, param_values=0x7fffffffd5a0, invocation_hint=0x7fffffffd520) at ../../../../gobject/gclosure.c:804
    #15 0x00007ffff194405e in signal_emit_unlocked_R (node=node@entry=0x555557931ed0, detail=detail@entry=0, instance=instance@entry=0x55555794a6b0, emission_return=emission_return@entry=0x7fffffffd6c0, instance_and_params=instance_and_params@entry=0x7fffffffd5a0) at ../../../../gobject/gsignal.c:3635
    #16 0x00007ffff194c0af in g_signal_emit_valist (instance=<optimised out>, signal_id=<optimised out>, detail=<optimised out>, var_args=var_args@entry=0x7fffffffd770) at ../../../../gobject/gsignal.c:3401
#18 0x00007ffff69349f3 in SPCanvas::emitEvent(_GdkEvent*) (this=this@entry=0x5555579362d0 [SPCanvas], event=event@entry=0x5555587e6dc0) at ../src/display/sp-canvas.cpp:1333
#19 0x00007ffff6938883 in SPCanvas::handle_button(_GtkWidget*, _GdkEventButton*) (widget=<optimised out>, event=0x5555587e6dc0) at ../src/display/sp-canvas.cpp:1611
#20 0x00007ffff47938f7 in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x5555557e4610, return_value=0x7fffffffdaa0, instance=<optimised out>, args=<optimised out>, marshal_data=<optimised out>, n_params=<optimised out>, param_types=0x5555557e4640) at ../../../../gtk/gtkmarshalers.c:129
#21 0x00007ffff1931346 in _g_closure_invoke_va (closure=0x5555557e4610, return_value=0x7fffffffdaa0, instance=0x5555579362d0, args=0x7fffffffdb70, n_params=1, param_types=0x5555557e4640) at ../../../../gobject/gclosure.c:867
#22 0x00007ffff194c3cd in g_signal_emit_valist (instance=0x5555579362d0, signal_id=<optimised out>, detail=<optimised out>, var_args=var_args@entry=0x7fffffffdb70) at ../../../../gobject/gsignal.c:3300
#23 0x00007ffff194d12f in g_signal_emit (instance=instance@entry=0x5555579362d0, signal_id=<optimised out>, detail=detail@entry=0) at ../../../../gobject/gsignal.c:3447
#24 0x00007ffff48db534 in gtk_widget_event_internal (widget=widget@entry=0x5555579362d0 [SPCanvas], event=event@entry=0x5555587e6dc0) at ../../../../gtk/gtkwidget.c:7744
#25 0x00007ffff48dd5aa in gtk_widget_event (widget=widget@entry=0x5555579362d0 [SPCanvas], event=event@entry=0x5555587e6dc0) at ../../../../gtk/gtkwidget.c:7314
#26 0x00007ffff479086e in propagate_event_up (topmost=<optimised out>, event=<optimised out>, widget=0x5555579362d0 [SPCanvas]) at ../../../../gtk/gtkmain.c:2592
#27 0x00007ffff479086e in propagate_event (widget=<optimised out>, event=0x5555587e6dc0, captured=<optimised out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2694
#28 0x00007ffff4792948 in gtk_main_do_event (event=<optimised out>) at ../../../../gtk/gtkmain.c:1915
#29 0x00007fffeeb42765 in _gdk_event_emit (event=event@entry=0x5555587e6dc0) at ../../../../gdk/gdkevents.c:73
#30 0x00007fffeeb72f92 in gdk_event_source_dispatch (source=source@entry=0x5555557cef40, callback=<optimised out>, user_data=<optimised out>) at ../../../../../gdk/x11/gdkeventsource.c:367
#31 0x00007ffff5c2f417 in g_main_dispatch (context=0x5555557cf030) at ../../../../glib/gmain.c:3176
#32 0x00007ffff5c2f417 in g_main_context_dispatch (context=context@entry=0x5555557cf030) at ../../../../glib/gmain.c:3829
#33 0x00007ffff5c2f650 in g_main_context_iterate (context=context@entry=0x5555557cf030, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimised out>) at ../../../../glib/gmain.c:3902
#34 0x00007ffff5c2f6dc in g_main_context_iteration (context=context@entry=0x5555557cf030, may_block=may_block@entry=1) at ../../../../glib/gmain.c:3963
#35 0x00007ffff1c17e3d in g_application_run (application=0x5555557db2d0 [gtkmm__GtkApplication], argc=<optimised out>, argv=<optimised out>) at ../../../../gio/gapplication.c:2470
#36 0x0000555555556059 in main(int, char**) (argc=1, argv=0x7fffffffdfe8) at ../src/inkscape-main.cpp:171

What should have happened?

No crash, path deselected on second undo.

Inkscape Version and Operating System:

  • Inkscape 1.1-dev (8c16886a, 2020-01-06) build Linux Mint 19.1
  • Inkscape 1.0alpha (9dee831c, 2019-01-15) appimage Linux Mint 19.1
  • Not replicated in Inkscape 0.92.4 (36965ca6, 2019-12-05) Linux Mint 19.1
  • Edit: not replicated with pen tool.
Edited by Nathan Lee