Creating a topic on the forum as per guidelines.
When using a performance intensive brush (exaggerated in the video) and drawing in the scratchpad, if the stroke is lagging, clearing the scratchpad will cause Krita to crash to desktop.
My pc specs are pretty decent (ryzen 5 5600), so I assume this is more likely to happen on slower machines or laptops, or when using fancier brushes.
How to reproduce:
- Use a performance intensive brush. The brush used in the video has smudging enabled and increasing the brush size makes the stroke lag a bit.
- While the stroke is lagging behind, press the button to clear the scratchpad.
Krita 5.2.2-10 (from repository)
Also tested on Krita 5.2.3-Beta1 (from appimage)
Arch Linux 6.6.33-1-lts using xorg
Before reporting the bug on the bug tracker, I will wait to see if people here can reproduce the issue. Since my machine has been a bit iffy lately, I cannot exclude that this is on my end.
Edit: Added backtrace from gdb (please do tell if this is unusable)
Thread 111 "Thread (pooled)" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffefe8866c0 (LWP 10320)]
0x00007ffff5d8986b in qDeleteAll<QList<KUndo2Command*>::const_iterator> (begin=..., end=...) at /usr/include/qt/QtCore/qalgorithms.h:320
320	        delete *begin;
#0  0x00007ffff5d8986b in qDeleteAll<QList<KUndo2Command*>::const_iterator> (begin=..., end=...) at /usr/include/qt/QtCore/qalgorithms.h:320
#1  qDeleteAll<QList<KUndo2Command*> > (c=...) at /usr/include/qt/QtCore/qalgorithms.h:328
#2  KUndo2Command::~KUndo2Command (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/command/kundo2stack.cpp:162
#3  0x00007ffff5d89966 in KUndo2Command::~KUndo2Command (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/command/kundo2stack.cpp:164
#4  0x00007fffa766aee3 in QScopedPointerDeleter<KUndo2Command>::cleanup (pointer=<optimized out>) at /usr/include/qt/QtCore/qscopedpointer.h:104
#5  QScopedPointer<KUndo2Command, QScopedPointerDeleter<KUndo2Command> >::~QScopedPointer (this=<optimized out>, this=<optimized out>) at /usr/include/qt/QtCore/qscopedpointer.h:107
#6  KisColorSmudgeInterstrokeData::~KisColorSmudgeInterstrokeData (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/plugins/paintops/colorsmudge/KisColorSmudgeInterstrokeData.cpp:30
#7  0x00007fffa766af45 in KisColorSmudgeInterstrokeData::~KisColorSmudgeInterstrokeData (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/plugins/paintops/colorsmudge/KisColorSmudgeInterstrokeData.cpp:30
#8  0x00007ffff71abf91 in QtSharedPointer::ExternalRefCountData::destroy (this=0x7ffef4002580) at /usr/include/qt/QtCore/qsharedpointer_impl.h:149
#9  QSharedPointer<KisProjectionUpdatesFilter>::deref (dd=0x7ffef4002580) at /usr/include/qt/QtCore/qsharedpointer_impl.h:464
#10 QSharedPointer<KisInterstrokeData>::deref (dd=<optimized out>, dd=<optimized out>) at /usr/include/qt/QtCore/qsharedpointer_impl.h:460
#11 QSharedPointer<KisInterstrokeData>::deref (this=<optimized out>, this=<optimized out>) at /usr/include/qt/QtCore/qsharedpointer_impl.h:459
#12 QSharedPointer<KisInterstrokeData>::~QSharedPointer (this=<optimized out>, this=<optimized out>) at /usr/include/qt/QtCore/qsharedpointer_impl.h:316
#13 (anonymous namespace)::BeginInterstrokeDataTransactionCommand::~BeginInterstrokeDataTransactionCommand (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/image/KisInterstrokeDataTransactionWrapperFactory.cpp:20
#14 (anonymous namespace)::BeginInterstrokeDataTransactionCommand::~BeginInterstrokeDataTransactionCommand (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/image/KisInterstrokeDataTransactionWrapperFactory.cpp:20
#15 0x00007ffff71af25b in QScopedPointerDeleter<KUndo2Command>::cleanup (pointer=<optimized out>) at /usr/include/qt/QtCore/qscopedpointer.h:104
#16 QScopedPointer<KUndo2Command, QScopedPointerDeleter<KUndo2Command> >::~QScopedPointer (this=<optimized out>, this=<optimized out>) at /usr/include/qt/QtCore/qscopedpointer.h:107
#17 OptionalInterstrokeInfo::~OptionalInterstrokeInfo (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/image/kis_transaction_data.cpp:30
#18 QScopedPointerDeleter<OptionalInterstrokeInfo>::cleanup (pointer=0x7ffef4001960) at /usr/include/qt/QtCore/qscopedpointer.h:60
#19 QScopedPointerDeleter<OptionalInterstrokeInfo>::cleanup (pointer=0x7ffef4001960) at /usr/include/qt/QtCore/qscopedpointer.h:52
#20 QScopedPointer<OptionalInterstrokeInfo, QScopedPointerDeleter<OptionalInterstrokeInfo> >::~QScopedPointer (this=<optimized out>, this=<optimized out>) at /usr/include/qt/QtCore/qscopedpointer.h:107
#21 KisTransactionData::Private::~Private (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/image/kis_transaction_data.cpp:37
#22 KisTransactionData::~KisTransactionData (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/image/kis_transaction_data.cpp:120
#23 0x00007ffff71af3d6 in KisTransactionData::~KisTransactionData (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/image/kis_transaction_data.cpp:121
#24 0x00007ffff5d899ce in qDeleteAll<QTypedArrayData<KUndo2Command*>::const_iterator> (begin=..., end=...) at /usr/include/qt/QtCore/qalgorithms.h:320
#25 qDeleteAll<QVector<KUndo2Command*> > (c=...) at /usr/include/qt/QtCore/qalgorithms.h:328
#26 KisCommandUtils::CompositeCommand::~CompositeCommand (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/command/kis_command_utils.cpp:177
#27 0x00007ffff5d89a36 in KisCommandUtils::CompositeCommand::~CompositeCommand (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/command/kis_command_utils.cpp:178
#28 0x00007ffff5d8986e in qDeleteAll<QList<KUndo2Command*>::const_iterator> (begin=..., end=...) at /usr/include/qt/QtCore/qalgorithms.h:320
#29 qDeleteAll<QList<KUndo2Command*> > (c=...) at /usr/include/qt/QtCore/qalgorithms.h:328
#30 KUndo2Command::~KUndo2Command (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/command/kundo2stack.cpp:162
#31 0x00007ffff7922519 in (anonymous namespace)::MergeableStrokeUndoCommand::~MergeableStrokeUndoCommand (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/ui/tool/strokes/kis_painter_based_stroke_strategy.cpp:357
#32 (anonymous namespace)::MergeableStrokeUndoCommand::~MergeableStrokeUndoCommand (this=<optimized out>, this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/ui/tool/strokes/kis_painter_based_stroke_strategy.cpp:357
#33 0x00007ffff7733cba in QtSharedPointer::ExternalRefCountData::destroy (this=0x7ffef48976a0) at /usr/include/qt/QtCore/qsharedpointer_impl.h:149
#34 QSharedPointer<KoID::KoIDPrivate>::deref(QtSharedPointer::ExternalRefCountData*) [clone .part.0] [clone .lto_priv.0] [clone .lto_priv.0] (dd=0x7ffef48976a0) at /usr/include/qt/QtCore/qsharedpointer_impl.h:464
#35 0x00007ffff7922b15 in QSharedPointer<KUndo2Command>::deref (dd=<optimized out>, dd=<optimized out>) at /usr/include/qt/QtCore/qsharedpointer_impl.h:460
#36 QSharedPointer<KUndo2Command>::deref (this=<optimized out>, this=<optimized out>) at /usr/include/qt/QtCore/qsharedpointer_impl.h:459
#37 QSharedPointer<KUndo2Command>::~QSharedPointer (this=<optimized out>, this=<optimized out>) at /usr/include/qt/QtCore/qsharedpointer_impl.h:316
#38 KisPainterBasedStrokeStrategy::finishStrokeCallback (this=<optimized out>) at /usr/src/debug/krita/krita-5.2.2/libs/ui/tool/strokes/kis_painter_based_stroke_strategy.cpp:469
#39 0x00007ffff6fae6a3 in KisUpdateJobItem::runImpl (this=0x5555591a2c80) at /usr/src/debug/krita/build/libs/image/kritaimage_autogen/EWIEGA46WW/../../../../../krita-5.2.2/libs/image/kis_update_job_item.h:100
#40 KisUpdateJobItem::run (this=0x5555591a2c80) at /usr/src/debug/krita/build/libs/image/kritaimage_autogen/EWIEGA46WW/../../../../../krita-5.2.2/libs/image/kis_update_job_item.h:49
#41 0x00007ffff58f3945 in QThreadPoolThread::run (this=0x555561c45790) at thread/qthreadpool.cpp:100
#42 0x00007ffff58f261b in operator() (__closure=<optimized out>) at thread/qthread_unix.cpp:350
#43 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=...) at thread/qthread_unix.cpp:287
#44 QThreadPrivate::start (arg=0x555561c45790) at thread/qthread_unix.cpp:310
#45 0x00007ffff52a6ded in start_thread (arg=<optimized out>) at pthread_create.c:447
#46 0x00007ffff532a0dc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Reported on the bug tracker:
https://bugs.kde.org/show_bug.cgi?id=488800