Crash in Preferences Search with capital letters

Steps to reproduce:

  • open Inkscape (1.1-dev)
  • Open Preferences Dialog
  • Type 'S' in search bar (capital letter)

What happened?

  • Crash
(gdb) catch throw
Catchpoint 1 (throw)
(gdb) c
Continuing.

Thread 1 "inkscape" hit Catchpoint 1 (exception thrown), 0x00007ffff50e6762 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) set pagination off
(gdb) bt
#0  0x00007ffff50e6762 in __cxa_throw () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x00007ffff50dd3eb in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x00007ffff5a3869d in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_check(unsigned long, char const*) const (__s=0x7ffff5a41437 "basic_string::assign", __pos=<optimised out>, this=<optimised out>) at ustring.cc:103
#3  std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, unsigned long) (__n=<optimised out>, __pos=<optimised out>, __str=..., this=0x7fffffffd700) at /usr/include/c++/9/bits/basic_string.h:1405
#4  Glib::ustring::ustring(Glib::ustring const&, unsigned long, unsigned long) (this=0x7fffffffd700, src=..., i=<optimised out>, n=<optimised out>) at ustring.cc:299
#5  0x00007ffff744b044 in Glib::ustring::substr(unsigned long, unsigned long) const (n=1, i=18446744073709551615, this=0x7fffffffd640) at /usr/include/glibmm-2.4/glibmm/ustring.h:1343
#6  Inkscape::UI::Dialog::InkscapePreferences::add_highlight(Gtk::Label*, Glib::ustring const&) (this=this@entry=0x555558597c00, label=0x555558f730f0, key=...) at ../src/ui/dialog/inkscape-preferences.cpp:165
#7  0x00007ffff744e884 in Inkscape::UI::Dialog::InkscapePreferences::highlight_results(Glib::ustring const&, Gtk::TreeIter&) (this=this@entry=0x555558597c00, key=..., iter=...) at ../src/ui/dialog/inkscape-preferences.cpp:607
#8  0x00007ffff747c354 in Inkscape::UI::Dialog::InkscapePreferences::on_search_changed() (this=0x555558597c00) at ../src/ui/dialog/inkscape-preferences.cpp:415
#9  0x00007ffff74a0bad in sigc::bound_mem_functor0<void, Inkscape::UI::Dialog::InkscapePreferences>::operator()() const (this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/limit_reference.h:93
#10 sigc::adaptor_functor<sigc::bound_mem_functor0<void, Inkscape::UI::Dialog::InkscapePreferences> >::operator()() const (this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
#11 0x00007ffff74a0bc3 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, Inkscape::UI::Dialog::InkscapePreferences>, void>::call_it(sigc::internal::slot_rep*) (rep=<optimised out>) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:132
#12 0x00007ffff5a36a7c in sigc::slot0<void>::operator()() const (this=0x555558f63a68) at /usr/include/sigc++-2.0/sigc++/functors/slot_base.h:335
#13 Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) (self=<optimised out>, data=0x555558f63a60) at signalproxy.cc:103
#14 0x00007ffff43e5a56 in _g_closure_invoke_va (closure=0x555558f63ab0, return_value=0x0, instance=0x5555584d65b0, args=0x7fffffffdc80, n_params=0, param_types=0x0) at ../../../gobject/gclosure.c:873
#15 0x00007ffff4404b28 in g_signal_emit_valist (instance=0x5555584d65b0, signal_id=<optimised out>, detail=0, var_args=var_args@entry=0x7fffffffdc80) at ../../../gobject/gsignal.c:3407
#16 0x00007ffff44050d3 in g_signal_emit (instance=<error reading variable: value has been optimised out>, signal_id=<optimised out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3554
#17 0x00007ffff532942e in gtk_search_entry_changed_timeout_cb (user_data=<error reading variable: value has been optimised out>) at ../../../../gtk/gtksearchentry.c:295
#18 0x00007ffff6234a28 in g_timeout_dispatch (source=0x55555958ac00, callback=<optimised out>, user_data=<optimised out>) at ../../../glib/gmain.c:4800
#19 0x00007ffff6233e8e in g_main_dispatch (context=0x5555555eb9b0) at ../../../glib/gmain.c:3309
#20 g_main_context_dispatch (context=context@entry=0x5555555eb9b0) at ../../../glib/gmain.c:3974
#21 0x00007ffff6234240 in g_main_context_iterate (context=context@entry=0x5555555eb9b0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimised out>) at ../../../glib/gmain.c:4047
#22 0x00007ffff62342e3 in g_main_context_iteration (context=context@entry=0x5555555eb9b0, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
#23 0x00007ffff4513fd5 in g_application_run (application=0x5555557e6210 [gtkmm__GtkApplication], argc=<optimised out>, argv=<optimised out>) at ../../../gio/gapplication.c:2559
#24 0x0000555555557162 in main(int, char**) (argc=<optimised out>, argv=<optimised out>) at ../src/inkscape-main.cpp:232
(gdb) frame 6
#6  Inkscape::UI::Dialog::InkscapePreferences::add_highlight (this=this@entry=0x555558597c00, label=0x555558f730f0, key=...) at ../src/ui/dialog/inkscape-preferences.cpp:165

What should have happened?

  • No crash

Sample attachments:

Version Info:

Inkscape 1.1-dev (7fc10e4ad5, 2020-10-08) Linux Mint 20