Crash on Put on Path with Objects dialog open (debug build)
Migrated from: https://bugs.launchpad.net/inkscape/+bug/1810360
Steps to reproduce:
- Open Inkscape (Recent 1.0alpha debug build, Fedora 28+ dnf package, or flatpak 0.92.4 version)
- Open Objects Dialog
- Create some text and an ellipse
- Select all
- Place text on ellipse with Put on Text
- Crash.
Backtrace
/usr/include/c++/7/bits/stl_vector.h:815: std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = Inkscape::Text::Layout::Line; _Alloc = std::allocator<Inkscape::Text::Layout::Line>; std::vector<_Tp, _Alloc>::const_reference = const Inkscape::Text::Layout::Line&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' failed.
Thread 1 "inkscape" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff414de97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff414f801 in __GI_abort () at abort.c:79
#2 0x00007ffff6916f0c in std::__replacement_assert(char const*, int, char const*, char const*) (__file=__file@entry=0x7ffff759ca68 "/usr/include/c++/7/bits/stl_vector.h", __line=__line@entry=815, __function=__function@entry=0x7ffff7718fe0 <_ZZNKSt6vectorIN8Inkscape4Text6Layout4LineESaIS3_EEixEmE19__PRETTY_FUNCTION__> "std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = Inkscape::Text::Layout::Line; _Alloc = std::allocator<Inkscape::Te"..., __condition=__condition@entry=0x7ffff759ca38 "__builtin_expect(__n < this->size(), true)") at /usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h:472
#3 0x00007ffff7384bbd in std::vector<Inkscape::Text::Layout::Line, std::allocator<Inkscape::Text::Layout::Line> >::operator[](unsigned long) const (__n=1, this=0x5555570e59f0) at /usr/include/c++/7/bits/stl_vector.h:815
#4 0x00007ffff7384bbd in Inkscape::Text::Layout::chunkAnchorPoint(Inkscape::Text::Layout::iterator const&) const (this=this@entry=0x5555570e5920, it=...) at ../src/libnrtype/Layout-TNG-OutIter.cpp:295
#5 0x00007ffff6cabcad in SPText::rebuildLayout() (this=this@entry=0x5555570e56a0) at ../src/object/sp-text.cpp:853
#6 0x00007ffff6cac279 in SPText::write(Inkscape::XML::Document*, Inkscape::XML::Node*, unsigned int) (this=0x5555570e56a0, xml_doc=0x55555646cc18, repr=0x5555564bb2b8, flags=10) at ../src/object/sp-text.cpp:281
#7 0x00007ffff6c814df in SPObject::updateRepr(Inkscape::XML::Document*, Inkscape::XML::Node*, unsigned int) (this=this@entry=0x5555570e56a0, doc=0x55555646cc18, repr=<optimised out>, repr@entry=0x5555564bb2b8, flags=flags@entry=10) at ../src/object/sp-object.cpp:1158
#8 0x00007ffff6c8155b in SPObject::updateRepr(unsigned int) (this=this@entry=0x5555570e56a0, flags=flags@entry=10) at ../src/object/sp-object.cpp:1116
#9 0x00007ffff6c553d7 in SPGroup::write(Inkscape::XML::Document*, Inkscape::XML::Node*, unsigned int) (this=0x5555557be420, xml_doc=0x55555646cc18, repr=0x555556479d08, flags=10) at ../src/object/sp-item-group.cpp:251
#10 0x00007ffff6c814df in SPObject::updateRepr(Inkscape::XML::Document*, Inkscape::XML::Node*, unsigned int) (this=this@entry=0x5555557be420, doc=0x55555646cc18, repr=<optimised out>, repr@entry=0x555556479d08, flags=flags@entry=10) at ../src/object/sp-object.cpp:1158
#11 0x00007ffff6c8155b in SPObject::updateRepr(unsigned int) (this=this@entry=0x5555557be420, flags=flags@entry=10) at ../src/object/sp-object.cpp:1116
#12 0x00007ffff6ff7533 in Inkscape::UI::Dialog::ObjectsPanel::_setExpanded(Gtk::TreeIter const&, Gtk::TreePath const&, bool) (this=0x555558b35400, iter=..., isexpanded=<optimised out>) at ../src/ui/dialog/objects.cpp:1460
#13 0x00007ffff7005622 in sigc::bound_mem_functor3<void, Inkscape::UI::Dialog::ObjectsPanel, Gtk::TreeIter const&, Gtk::TreePath const&, bool>::operator()(Gtk::TreeIter const&, Gtk::TreePath const&, bool const&) const (_A_a3=<optimised out>, _A_a2=..., _A_a1=..., this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2222
#14 0x00007ffff7005622 in sigc::adaptor_functor<sigc::bound_mem_functor3<void, Inkscape::UI::Dialog::ObjectsPanel, Gtk::TreeIter const&, Gtk::TreePath const&, bool> >::operator()<Gtk::TreeIter const&, Gtk::TreePath const&, bool&>(Gtk::TreeIter const&, Gtk::TreePath const&, bool&) const (_A_arg3=<optimised out>, _A_arg2=..., _A_arg1=..., this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:128
#15 0x00007ffff7005622 in sigc::bind_functor<-1, sigc::bound_mem_functor3<void, Inkscape::UI::Dialog::ObjectsPanel, Gtk::TreeIter const&, Gtk::TreePath const&, bool>, bool, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()<Gtk::TreeIter const&, Gtk::TreePath const&>(Gtk::TreeIter const&, Gtk::TreePath const&) (_A_arg2=..., _A_arg1=..., this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1158
#16 0x00007ffff7005622 in sigc::internal::slot_call2<sigc::bind_functor<-1, sigc::bound_mem_functor3<void, Inkscape::UI::Dialog::ObjectsPanel, Gtk::TreeIter const&, Gtk::TreePath const&, bool>, bool, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void, Gtk::TreeIter const&, Gtk::TreePath const&>::call_it(sigc::internal::slot_rep*, Gtk::TreeIter const&, Gtk::TreePath const&) (rep=<optimised out>, a_1=..., a_2=...) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:184
#17 0x00007ffff58e12a0 in () at /usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1
#18 0x00007ffff1e7010d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007ffff1e82bf1 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ffff1e8b715 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff1e8c12f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007ffff4bde46d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#23 0x00007ffff4be6817 in gtk_tree_view_expand_row () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#24 0x00007ffff4be694b in gtk_tree_view_expand_to_path () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#25 0x00007ffff6ff8080 in Inkscape::UI::Dialog::ObjectsPanel::_addObject(SPObject*, Gtk::TreeRow*) (this=this@entry=0x555558b35400, obj=obj@entry=0x5555557be420, parentRow=parentRow@entry=0x7fffffffccd0) at ../src/ui/dialog/objects.cpp:378
#26 0x00007ffff6ff828c in Inkscape::UI::Dialog::ObjectsPanel::_addObject(SPObject*, Gtk::TreeRow*) (this=this@entry=0x555558b35400, obj=obj@entry=0x5555558f0e00, parentRow=parentRow@entry=0x0) at ../src/ui/dialog/objects.cpp:390
#27 0x00007ffff6ff9f02 in Inkscape::UI::Dialog::ObjectsPanel::_objectsChanged(SPObject*) (this=0x555558b35400) at ../src/ui/dialog/objects.cpp:329
#28 0x00007ffff7006732 in Inkscape::UI::Dialog::ObjectsPanel::ObjectWatcher::notifyChildAdded(Inkscape::XML::Node&, Inkscape::XML::Node&, Inkscape::XML::Node*) (this=<optimised out>) at ../src/ui/dialog/objects.cpp:144
#29 0x00007ffff71f5078 in Inkscape::XML::CompositeNodeObserver::notifyChildAdded(Inkscape::XML::Node&, Inkscape::XML::Node&, Inkscape::XML::Node*) (this=0x5555564bb238, node=..., child=..., prev=0x0) at ../src/xml/composite-node-observer.cpp:43
#30 0x00007ffff7206f0b in Inkscape::XML::SimpleNode::addChild(Inkscape::XML::Node*, Inkscape::XML::Node*) (this=<optimised out>, generic_child=<optimised out>, generic_ref=<optimised out>) at ../src/xml/simple-node.cpp:472
#31 0x00007ffff7321a63 in text_put_on_path() () at ../src/text-chemistry.cpp:158
#32 0x00007ffff733271c in Inkscape::SelectionVerb::perform(SPAction*, void*) (action=0x555557b10c80, data=0x4b) at ../src/verbs.cpp:1196
#33 0x00007ffff733e4ad in sigc::pointer_functor2<SPAction*, void*, void>::operator()(SPAction* const&, void* const&) const (_A_a2=<optimised out>, _A_a1=<optimised out>, this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:147
#34 0x00007ffff733e4ad in sigc::adaptor_functor<sigc::pointer_functor2<SPAction*, void*, void> >::operator()<SPAction*&, void*&>(SPAction*&, void*&) const (_A_arg2=<optimised out>, _A_arg1=<optimised out>, this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:108
#35 0x00007ffff733e4ad in sigc::bind_functor<-1, sigc::pointer_functor2<SPAction*, void*, void>, void*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()<SPAction*&>(SPAction*&) (_A_arg1=<optimised out>, this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1136
#36 0x00007ffff733e4ad in sigc::bind_functor<-1, sigc::bind_functor<-1, sigc::pointer_functor2<SPAction*, void*, void>, void*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, SPAction*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()() (this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1124
#37 0x00007ffff733e4ad in sigc::internal::slot_call<sigc::bind_functor<-1, sigc::bind_functor<-1, sigc::pointer_functor2<SPAction*, void*, void>, void*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, SPAction*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void>::call_it(sigc::internal::slot_rep*) (rep=<optimised out>) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:461
#38 0x00007ffff6a7a4f1 in sigc::internal::signal_emit0<void, sigc::nil>::emit(sigc::internal::signal_impl*) (impl=0x555557b1fca0) at /usr/include/sigc++-2.0/sigc++/signal.h:798
#39 0x00007ffff6a7a4f1 in sigc::signal0<void, sigc::nil>::emit() const (this=0x58) at /usr/include/sigc++-2.0/sigc++/signal.h:2804
#40 0x00007ffff6a7a4f1 in sp_action_perform(SPAction*, void*) (action=<optimised out>) at ../src/helper/action.cpp:139
#41 0x00007ffff6d0a184 in item_activate(Gtk::MenuItem*, SPAction*) (menuitem=<optimised out>, action=<optimised out>) at ../src/ui/desktop/menubar.cpp:62
#42 0x00007ffff6d0ce0e in sigc::pointer_functor2<Gtk::MenuItem*, SPAction*, void>::operator()(Gtk::MenuItem* const&, SPAction* const&) const (_A_a2=<optimised out>, _A_a1=<optimised out>, this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:147
#43 0x00007ffff6d0ce0e in sigc::adaptor_functor<sigc::pointer_functor2<Gtk::MenuItem*, SPAction*, void> >::operator()<Gtk::MenuItem*&, SPAction*&>(Gtk::MenuItem*&, SPAction*&) const (_A_arg2=<optimised out>, _A_arg1=<optimised out>, this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:108
#44 0x00007ffff6d0ce0e in sigc::bind_functor<-1, sigc::pointer_functor2<Gtk::MenuItem*, SPAction*, void>, Gtk::MenuItem*, SPAction*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()() (this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1340
#45 0x00007ffff6d0ce0e in sigc::internal::slot_call0<sigc::bind_functor<-1, sigc::pointer_functor2<Gtk::MenuItem*, SPAction*, void>, Gtk::MenuItem*, SPAction*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void>::call_it(sigc::internal::slot_rep*) (rep=<optimised out>) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:114
#46 0x00007fffef77a548 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () at /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
#47 0x00007ffff1e7010d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#48 0x00007ffff1e82bf1 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#49 0x00007ffff1e8b715 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#50 0x00007ffff1e8c12f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#51 0x00007ffff4c049b6 in gtk_widget_activate () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#52 0x00007ffff4ad6f56 in gtk_menu_shell_activate_item () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#53 0x00007ffff4ad71d2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#54 0x00007ffff4aba8d7 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#55 0x00007ffff1e70346 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#56 0x00007ffff1e8b3cd in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#57 0x00007ffff1e8c12f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#58 0x00007ffff4c02514 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#59 0x00007ffff4ab784e in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#60 0x00007ffff4ab9928 in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#61 0x00007fffeee03765 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#62 0x00007fffeee33f92 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#63 0x00007ffff5cd6387 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#64 0x00007ffff5cd65c0 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#65 0x00007ffff5cd664c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#66 0x00007ffff2156e3d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#67 0x0000555555554f39 in main(int, char**) (argc=1, argv=0x7fffffffe008) at ../src/inkscape-main.cpp:59
Inkscape Version and Operating System:
- 0.92.4 5da689c313, 2019-01-14 flatpak, Linux Mint 19.1
- 1.0alpha (master, 2019-04-27), Linux Mint 19.1
- Inkscape 0.92.3 (2405546, 2018-03-11) Fedora 29 (coredump posted in https://bugs.launchpad.net/inkscape/+bug/1810360, since not 1.0alpha bt, will just leave it linked)