1.5-dev: Dragging sliders in Simply LPE hangs Inkscape

Summary:

Dragging the complexity sliders quickly to the left in the Simplify LPE makes Inkscape hang. (On subsequent crashes it seems that Inkscape has a hard time processing complexities under 0.5.) An attempt to crash Inkscape gives the following backtrace:

 0# Inkscape::Application::crash_handler(int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 1# 0x00007F5F8B243870 in /lib64/libc.so.6
 2# Path::AttemptSimplify(Path::fitting_tables&, double, PathDescrCubicTo&, int&) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 3# Path::DoSimplify(int, int, double) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 4# Path::Simplify(double) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 5# Inkscape::LivePathEffect::LPESimplify::doEffect(SPCurve*) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 6# SPLPEItem::performOnePathEffect(SPCurve*, SPShape*, Inkscape::LivePathEffect::Effect*, bool) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 7# SPLPEItem::performPathEffect(SPCurve*, SPShape*, bool) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 8# SPShape::update_patheffect(bool) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
 9# sp_lpe_item_update_patheffect(SPLPEItem*, bool, bool, bool) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
10# sigc::internal::signal_emit::emit(std::shared_ptr const&, SPObject* const&, unsigned int const&) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
11# SPObject::emitModified(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
12# SPDefs::modified(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
13# SPObject::emitModified(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
14# SPGroup::modified(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
15# SPRoot::modified(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
16# SPObject::emitModified(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
17# SPDocument::_emitModified(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
18# SPDocument::_updateDocument(int, unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
19# SPDocument::ensureUpToDate(unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
20# Inkscape::DocumentUndo::maybeDone(SPDocument*, char const*, Glib::ustring const&, Glib::ustring const&, unsigned int) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
21# Inkscape::UI::Widget::RegisteredScalar::on_value_changed() in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0
22# Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) in /usr/lib64/libglibmm-2.68.so.1
23# 0x00007F5F8E9FE861 in /usr/lib64/libgobject-2.0.so.0
24# 0x00007F5F8EA12DC2 in /usr/lib64/libgobject-2.0.so.0
25# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
26# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
27# 0x00007F5F8C845E44 in /usr/lib64/libgtk-4.so.1
28# g_closure_invoke in /usr/lib64/libgobject-2.0.so.0
29# 0x00007F5F8EA11359 in /usr/lib64/libgobject-2.0.so.0
30# 0x00007F5F8EA12C8E in /usr/lib64/libgobject-2.0.so.0
31# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
32# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
33# 0x00007F5F8C6FDAA7 in /usr/lib64/libgtk-4.so.1
34# 0x00007F5F8C80D61C in /usr/lib64/libgtk-4.so.1
35# 0x00007F5F8C6E53ED in /usr/lib64/libgtk-4.so.1
36# 0x00007F5F8E9FE861 in /usr/lib64/libgobject-2.0.so.0
37# 0x00007F5F8EA120CB in /usr/lib64/libgobject-2.0.so.0
38# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
39# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
40# 0x00007F5F8C80C564 in /usr/lib64/libgtk-4.so.1
41# 0x00007F5F8C80EB79 in /usr/lib64/libgtk-4.so.1
42# 0x00007F5F8C6E89FA in /usr/lib64/libgtk-4.so.1
43# 0x00007F5F8E9FE861 in /usr/lib64/libgobject-2.0.so.0
44# 0x00007F5F8EA12DC2 in /usr/lib64/libgobject-2.0.so.0
45# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
46# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
47# g_cclosure_marshal_VOID__BOXEDv in /usr/lib64/libgobject-2.0.so.0
48# 0x00007F5F8E9FE861 in /usr/lib64/libgobject-2.0.so.0
49# 0x00007F5F8EA12DC2 in /usr/lib64/libgobject-2.0.so.0
50# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
51# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
52# 0x00007F5F8C798BCD in /usr/lib64/libgtk-4.so.1
53# 0x00007F5F8C79BAFE in /usr/lib64/libgtk-4.so.1
54# 0x00007F5F8C76962A in /usr/lib64/libgtk-4.so.1
55# 0x00007F5F8C8AD04C in /usr/lib64/libgtk-4.so.1
56# 0x00007F5F8C7D8886 in /usr/lib64/libgtk-4.so.1
57# 0x00007F5F8C7D8DC3 in /usr/lib64/libgtk-4.so.1
58# 0x00007F5F8CA37D02 in /usr/lib64/libgtk-4.so.1
59# 0x00007F5F8CAC59B5 in /usr/lib64/libgtk-4.so.1
60# 0x00007F5F8E9FE861 in /usr/lib64/libgobject-2.0.so.0
61# 0x00007F5F8EA120CB in /usr/lib64/libgobject-2.0.so.0
62# g_signal_emit_valist in /usr/lib64/libgobject-2.0.so.0
63# g_signal_emit in /usr/lib64/libgobject-2.0.so.0
64# 0x00007F5F8CAC93F9 in /usr/lib64/libgtk-4.so.1
65# 0x00007F5F8CA4CC0A in /usr/lib64/libgtk-4.so.1
66# 0x00007F5F8E2FD7C5 in /usr/lib64/libglib-2.0.so.0
67# 0x00007F5F8E2FF7B7 in /usr/lib64/libglib-2.0.so.0
68# g_main_context_iteration in /usr/lib64/libglib-2.0.so.0
69# g_application_run in /usr/lib64/libgio-2.0.so.0
70# main in /usr/bin/inkscape
71# 0x00007F5F8B22AB17 in /lib64/libc.so.6
72# __libc_start_main in /lib64/libc.so.6
73# _start in /usr/bin/inkscape
System info Inkscape 1.5-dev (8478dd725e, 2025-06-03, custom)
                  Compile  (Run)
GLib version:     2.84.1
GTK version:      4.18.3 (4.18.3)
glibmm version:   2.84.0
gtkmm version:    4.18.0
libxml2 version:  2.13.7
libxslt version:  1.1.43
Cairo version:    1.18.4 (1.18.4)
Pango version:    1.56.3 (1.56.3)
HarfBuzz version: 11.0.0 (11.0.0)
Poppler version:  25.04.0

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

The second time I tried the crash it has a new line in the backtrace:

Path::RaffineTk(Geom::Point, Geom::Point, Geom::Point, Geom::Point, Geom::Point, double) in /usr/bin/../lib64/inkscape/libinkscape_base.so.1.5.0.0

Steps to reproduce:

  • open Inkscape
  • draw a rectangle
  • apply the Simplify LPE
  • drag the complexity slider quickly to the left

What happened?

Inkscape hangs.

What should have happened?

The operation doesn't hang Inkscape.

Version info

Inkscape 1.5-dev (8478dd725e, 2025-06-03, custom)

                      Compile  (Run)
    GLib version:     2.84.1
    GTK version:      4.18.3 (4.18.3)
    glibmm version:   2.84.0
    gtkmm version:    4.18.0
    libxml2 version:  2.13.7
    libxslt version:  1.1.43
    Cairo version:    1.18.4 (1.18.4)
    Pango version:    1.56.3 (1.56.3)
    HarfBuzz version: 11.0.0 (11.0.0)
    Poppler version:  25.04.0

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