Bug 515166 - Crash when creating a vector layer, after switching to a session
Summary: Crash when creating a vector layer, after switching to a session
Status: REPORTED
Alias: None
Product: krita
Classification: Applications
Component: General (other bugs)
Version First Reported In: git master (please specify the git hash!)
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: regression, release_blocker
Depends on:
Blocks:
 
Reported: 2026-01-27 19:41 UTC by Luna
Modified: 2026-01-28 08:33 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Luna 2026-01-27 19:41:47 UTC
SUMMARY

Krita segfaults when creating a new vector layer, after switching to a session. 


STEPS TO REPRODUCE
1. Open a document
2. Switch to a previously saved session
3. Create a new vector layer

OBSERVED RESULT

This causes a segfault in the `DefaultTool::updateDistinctiveActions` call. Specifically what's happening here is the action group for the action `text_type_preformatted` is set to null after the session switch. Tho it only happens every other session switch.

BACKTRACE

#0  0x00007ffff5a59a3d in QActionGroup::setEnabled(bool) ()
   from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Gui.so.6
#1  0x00007fffa8bba870 in DefaultTool::updateDistinctiveActions (this=0x55555f67b0e0, 
    editableShapes=...)
    at /home/appimage/persistent/krita/plugins/tools/defaulttool/defaulttool/DefaultTool.cpp:2219
#2  0x00007fffa8bba1b2 in DefaultTool::updateActions (this=0x55555f67b0e0)
    at /home/appimage/persistent/krita/plugins/tools/defaulttool/defaulttool/DefaultTool.cpp:2165
#3  0x00007ffff501b55c in void doActivate<false>(QObject*, int, void**) ()
   from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#4  0x00007ffff7530a9f in KisCanvas2::KisCanvas2Private::setActiveShapeManager (
    shapeManager=<optimized out>, this=<optimized out>)
    at /home/appimage/persistent/krita/libs/ui/canvas/kis_canvas2.cpp:584
#5  KisCanvas2::KisCanvas2Private::setActiveShapeManager (shapeManager=<optimized out>, 
    this=<optimized out>) at /home/appimage/persistent/krita/libs/ui/canvas/kis_canvas2.cpp:580
#6  KisCanvas2::localShapeManager (this=<optimized out>)
    at /home/appimage/persistent/krita/libs/ui/canvas/kis_canvas2.cpp:665
#7  0x00007ffff7530ccd in KisCanvas2::shapeManager (this=0x555558d9a228)
    at /home/appimage/persistent/krita/libs/ui/canvas/kis_canvas2.cpp:590
#8  0x00007ffff3e594ac in KoToolManager::Private::postSwitchTool (this=0x55555823d980)
    at /home/appimage/persistent/krita/libs/flake/KoToolManager.cpp:556
#9  0x00007ffff7724e27 in KisNodeManager::slotUiActivatedNode (this=0x555563f5af40, node=...)
    at /home/appimage/persistent/krita/libs/ui/kis_node_manager.cpp:863
#10 0x00007ffff773ba66 in KisNodeSelectionAdapter::setActiveNode (this=<optimized out>, node=...)
    at /home/appimage/persistent/krita/libs/ui/kis_node_selection_adapter.cpp:34
#11 0x00007ffff774258c in KisNodeModel::setData (this=0x55555d757490, index=..., value=..., role=257)
    at /home/appimage/persistent/krita/libs/ui/kis_node_model.cpp:714
#12 0x00007ffff5263809 in QSortFilterProxyModel::setData(QModelIndex const&, QVariant const&, int) ()
   from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#13 0x00007fffa2fde358 in LayerBox::setCurrentNode (this=0x555561e76da0, node=...)
    at /home/appimage/persistent/krita/plugins/dockers/layerdocker/LayerBox.cpp:759
#14 0x00007fffa2fe2590 in LayerBox::qt_static_metacall (_o=0x555561e76da0, _c=<optimized out>, 
    _id=<optimized out>, _a=<optimized out>)
    at /home/appimage/appimage-workspace/krita-build/plugins/dockers/layerdocker/kritalayerdocker_static_autogen/include/moc_LayerBox.cpp:352
#15 0x00007ffff501b55c in void doActivate<false>(QObject*, int, void**) ()
   from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#16 0x00007ffff74bd109 in KisNodeManager::sigUiNeedChangeActiveNode (this=this@entry=0x555563f5af40, 
    _t1=...)
    at /home/appimage/appimage-workspace/krita-build/libs/ui/kritaui_autogen/EWIEGA46WW/moc_kis_node_manager.cpp:807
#17 0x00007ffff772271e in KisNodeManager::slotSomethingActivatedNodeImpl (this=0x555563f5af40, 
    node=...) at /home/appimage/persistent/krita/libs/ui/kis_node_manager.cpp:803
#18 0x00007ffff77229c0 in KisNodeManager::slotNonUiActivatedNode (this=0x555563f5af40, node=...)
    at /home/appimage/persistent/krita/libs/ui/kis_node_manager.cpp:825
#19 0x00007ffff74d7caa in KisNodeManager::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, 
    _id=<optimized out>, _a=0x7fffffffd460)
    at /home/appimage/appimage-workspace/krita-build/libs/ui/kritaui_autogen/EWIEGA46WW/moc_kis_node_manager.cpp:550
#20 0x00007ffff501b55c in void doActivate<false>(QObject*, int, void**) ()
   from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#21 0x00007ffff74bbf69 in KisDummiesFacadeBase::sigActivateNode (this=this@entry=0x555558b705c0, 
    _t1=...)
    at /home/appimage/appimage-workspace/krita-build/libs/ui/kritaui_autogen/QUY67KCZCL/moc_kis_dummies_facade_base.cpp:311
#22 0x00007ffff7659090 in KisDummiesFacadeBase::slotNodeActivationRequested (this=0x555558b705c0, 
    node=..., flags=...)
    at /home/appimage/persistent/krita/libs/ui/flake/kis_dummies_facade_base.cpp:162
#23 0x00007ffff765d2d6 in boost::_mfi::mf2<void, KisDummiesFacadeBase, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >::operator() (this=<optimized out>, a1=..., a2=..., p=<optimized out>)
    at /home/appimage/appimage-workspace/deps/usr/include/boost/bind/mem_fn_template.hpp:280
#24 boost::_bi::list3<boost::_bi::value<KisDummiesFacadeBase*>, boost::arg<1>, boost::arg<2> >::operator()<boost::_mfi::mf2<void, KisDummiesFacadeBase, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >, boost::_bi::rrlist2<KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> > > (a=<synthetic pointer>..., 
    f=..., this=<optimized out>)
    at /home/appimage/appimage-workspace/deps/usr/include/boost/bind/bind.hpp:377
--Type <RET> for more, q to quit, c to continue without paging--
#25 boost::_bi::bind_t<void, boost::_mfi::mf2<void, KisDummiesFacadeBase, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >, boost::_bi::list3<boost::_bi::value<KisDummiesFacadeBase*>, boost::arg<1>, boost::arg<2> > >::operator()<KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> > (a2=..., a1=..., this=<optimized out>) at /home/appimage/appimage-workspace/deps/usr/include/boost/bind/bind.hpp:1297
#26 std::__invoke_impl<void, boost::_bi::bind_t<void, boost::_mfi::mf2<void, KisDummiesFacadeBase, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >, boost::_bi::list3<boost::_bi::value<KisDummiesFacadeBase*>, boost::arg<1>, boost::arg<2> > >&, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> > (__f=...) at /usr/include/c++/13/bits/invoke.h:61
#27 std::__invoke_r<void, boost::_bi::bind_t<void, boost::_mfi::mf2<void, KisDummiesFacadeBase, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >, boost::_bi::list3<boost::_bi::value<KisDummiesFacadeBase*>, boost::arg<1>, boost::arg<2> > >&, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> > (__fn=...) at /usr/include/c++/13/bits/invoke.h:111
#28 std::_Function_handler<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>), boost::_bi::bind_t<void, boost::_mfi::mf2<void, KisDummiesFacadeBase, KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >, boost::_bi::list3<boost::_bi::value<KisDummiesFacadeBase*>, boost::arg<1>, boost::arg<2> > > >::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>&&, QFlags<KisNodeAdditionFlag>&&) (__functor=..., __args#0=..., 
    __args#1=...) at /usr/include/c++/13/bits/std_function.h:290
#29 0x00007ffff765dd72 in std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>::operator()(KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>) const (__args#1=..., __args#0=..., 
    this=0x55555932e5d8) at /usr/include/c++/13/bits/std_function.h:591
#30 std::__invoke_impl<void, std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, KisSharedPtr<KisNode>&, QFlags<KisNodeAdditionFlag>&>(std::__invoke_other, std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, KisSharedPtr<KisNode>&, QFlags<KisNodeAdditionFlag>&) (__f=...) at /usr/include/c++/13/bits/invoke.h:61
#31 std::__invoke<std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, KisSharedPtr<KisNode>&, QFlags<KisNodeAdditionFlag>&>(std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, KisSharedPtr<KisNode>&, QFlags<KisNodeAdditionFlag>&) (__fn=...) at /usr/include/c++/13/bits/invoke.h:96
#32 std::__apply_impl<std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, std::tuple<KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >&, 0ul, 1ul>(std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, std::tuple<KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >&, std::integer_sequence<unsigned long, 0ul, 1ul>) (__t=..., __f=...) at /usr/include/c++/13/tuple:2288
#33 std::apply<std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, std::tuple<KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >&>(std::function<void (KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag>)>&, std::tuple<KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >&) (__t=..., __f=...) at /usr/include/c++/13/tuple:2299
#34 KisSynchronizedConnection<KisSharedPtr<KisNode>, QFlags<KisNodeAdditionFlag> >::deliverEventToReceiver (this=0x55555932e5c8) at /home/appimage/persistent/krita/libs/global/KisSynchronizedConnection.h:234
#35 0x00007ffff65d099a in KisSynchronizedConnectionBase::event (event=0x555564c84260, this=0x55555932e5c8) at /home/appimage/persistent/krita/libs/global/KisSynchronizedConnection.cpp:101
#36 KisSynchronizedConnectionBase::event (this=0x55555932e5c8, event=0x555564c84260) at /home/appimage/persistent/krita/libs/global/KisSynchronizedConnection.cpp:94
#37 0x00007ffff5f226b5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Widgets.so.6
#38 0x00007ffff7b26e65 in KisApplication::notify (this=0x7fffffffdf80, receiver=0x55555932e5c8, event=0x555564c84260) at /home/appimage/persistent/krita/libs/ui/KisApplication.cpp:912
#39 0x00007ffff4fbb258 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#40 0x00007ffff4fbef43 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#41 0x00007ffff5295d27 in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#42 0x00007ffff2271d3b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#43 0x00007ffff22c72b8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#44 0x00007ffff226f3e3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#45 0x00007ffff5295480 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#46 0x00007ffff4fc7bb2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#47 0x00007ffff4fc3786 in QCoreApplication::exec() () from /home/appimage/appimage-workspace/deps/usr/lib/libQt6Core.so.6
#48 0x000055555555d1cb in main (argc=<optimized out>, argv=<optimized out>) at /home/appimage/persistent/krita/krita/main.cc:783