SUMMARY Safe assert, probably caused by some hangup in the new bulk actions method. STEPS TO REPRODUCE 1. Create a text. 2. Open the glyph palette to insert a glyph alternate. (Note, most fonts have one for the letter "a": usually a superscript) 3. Change the text color with the color picker. 4. safe assert will popup... ADDITIONAL INFORMATION GDB backtrace: SAFE ASSERT (krita): "!d->bulkActionState" in file /home/appimage/persistent/krita/libs/flake/text/KoSvgTextShape.cpp, line 1976 --Type <RET> for more, q to quit, c to continue without paging-- Thread 1 "krita" received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff4eba859 in __GI_abort () at abort.c:79 #2 0x00007ffff53c7c0f in QMessageLogger::fatal(char const*, ...) const () from /home/appimage/appimage-workspace/deps/usr/lib/libQt5Core.so.5 #3 0x00007ffff66cbccb in kis_assert_common (assertion=<optimized out>, file=<optimized out>, line=<optimized out>, abort=<optimized out>, isIgnorable=<optimized out>) at /home/appimage/persistent/krita/libs/global/kis_assert.cpp:89 #4 0x00007ffff44e5471 in KoShapeBulkActionLockAdapter::lock (this=this@entry=0x7fffffffc2f0) at /home/appimage/persistent/krita/libs/flake/KoShapeBulkActionLock.cpp:55 #5 0x00007fffb8ee5163 in std::unique_lock<KoShapeBulkActionLockAdapter>::lock (this=0x7fffffffc338) at /usr/include/c++/11/bits/unique_lock.h:131 #6 std::unique_lock<KoShapeBulkActionLockAdapter>::unique_lock (__m=..., this=0x7fffffffc338) at /usr/include/c++/11/bits/unique_lock.h:69 #7 KisAdaptedLock<KoShapeBulkActionLockAdapter>::KisAdaptedLock<QList<KoShape*> > (object=..., this=0x7fffffffc2f0) at /home/appimage/persistent/krita/libs/global/KisAdaptedLock.h:35 #8 KoShapeBulkActionLock::KoShapeBulkActionLock<KoSvgTextShape, void> (shape=<optimized out>, this=0x7fffffffc2f0) at /home/appimage/persistent/krita/libs/flake/KoShapeBulkActionLock.h:48 #9 SvgTextMergePropertiesRangeCommand::redo (this=0x555568ded4d0) at /home/appimage/persistent/krita/plugins/tools/svgtexttool/SvgTextMergePropertiesRangeCommand.cpp:35 #10 0x00007ffff3e439ce in KUndo2QStack::push (this=0x555561126d50, cmd=<optimized out>) at /home/appimage/persistent/krita/libs/command/kundo2stack.cpp:724 #11 0x00007ffff6f03038 in KisLegacyUndoAdapter::addCommand (command=0x555568ded4d0, this=0x55556143c9b8) at /home/appimage/persistent/krita/libs/image/kis_legacy_undo_adapter.cpp:39 #12 KisLegacyUndoAdapter::addCommand (this=0x55556143c9b8, command=0x555568ded4d0) at /home/appimage/persistent/krita/libs/image/kis_legacy_undo_adapter.cpp:30 --Type <RET> for more, q to quit, c to continue without paging-- #13 0x00007ffff7582519 in KisCanvas2::addCommand (this=<optimized out>, command=0x555568ded4d0) at /home/appimage/persistent/krita/libs/ui/canvas/kis_canvas2.cpp:577 #14 0x00007fffb8e9d6c0 in SvgTextCursor::addCommandToUndoAdapter (cmd=0x555568ded4d0, this=0x5555567e7b98) at /home/appimage/persistent/krita/plugins/tools/svgtexttool/SvgTextCursor.cpp:1829 #15 SvgTextCursor::mergePropertiesIntoSelection (this=0x5555567e7b98, props=..., removeProperties=..., paragraphOnly=<optimized out>, selectWord=<optimized out>) at /home/appimage/persistent/krita/plugins/tools/svgtexttool/SvgTextCursor.cpp:691 #16 0x00007fffb8ea0ae3 in SvgTextCursor::canvasResourceChanged (this=0x5555567e7b98, key=<optimized out>, value=...) at /home/appimage/persistent/krita/plugins/tools/svgtexttool/SvgTextCursor.cpp:1300 #17 0x00007ffff5638028 in ?? () from /home/appimage/appimage-workspace/deps/usr/lib/libQt5Core.so.5 #18 0x00007ffff449acd7 in KoCanvasResourceProvider::canvasResourceChanged (this=<optimized out>, _t1=<optimized out>, _t2=...) at /home/appimage/appimage-workspace/krita-build/libs/flake/kritaflake_autogen/EWIEGA46WW/moc_KoCanvasResourceProvider.cpp:178 #19 0x00007ffff5637ff4 in ?? () from /home/appimage/appimage-workspace/deps/usr/lib/libQt5Core.so.5 #20 0x00007ffff449ae27 in KoResourceManager::resourceChanged (this=this@entry=0x555556bc3260, _t1=<optimized out>, _t1@entry=0, _t2=...) at /home/appimage/appimage-workspace/krita-build/libs/flake/kritaflake_autogen/EWIEGA46WW/moc_KoResourceManager_p.cpp:159 #21 0x00007ffff44b84a7 in KoResourceManager::notifyResourceChanged (this=0x555556bc3260, key=0, value=...) at /home/appimage/persistent/krita/libs/flake/KoResourceManager_p.cpp:88 #22 0x00007ffff44b8e5c in KoResourceManager::setResource (this=0x555556bc3260, key=0, value=...) at /home/appimage/persistent/krita/libs/flake/KoResourceManager_p.cpp:75 #23 0x00007ffff44bec7d in KoCanvasResourceProvider::setResource (this=<optimized out>, key=<optimized out>, value=...) at /home/appimage/persistent/krita/libs/flake/KoCanvasResourceProvider.cpp:70 --Type <RET> for more, q to quit, c to continue without paging-
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/2571
Git commit 5398eca0545e55158cf2f6a9358528d78d394d75 by Dmitry Kazakov, on behalf of Wolthera van Hövell tot Westerflier. Committed on 25/12/2025 at 14:54. Pushed by dkazakov into branch 'master'. Text: fix issues setting fore and background color. This firstly fixes the safe assert caused by infinite update loops by using KisAcyclicSignalConnector. Then it also tries to fix updating and setting the stroke and fill if these are not otherwise set. M +19 -10 plugins/tools/svgtexttool/SvgTextCursor.cpp M +3 -3 plugins/tools/svgtexttool/SvgTextCursor.h https://invent.kde.org/graphics/krita/-/commit/5398eca0545e55158cf2f6a9358528d78d394d75