Bug 410387 - Krita suddenly closes while using the palettize filter
Summary: Krita suddenly closes while using the palettize filter
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Filters (show other bugs)
Version: nightly build (please specify the git hash!)
Platform: Microsoft Windows Microsoft Windows
: NOR crash
Target Milestone: ---
Assignee: krzysio.kurek
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-07-30 10:03 UTC by acc4commissions
Modified: 2019-11-07 13:54 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Screenshot. (28.47 KB, image/png)
2019-07-30 18:08 UTC, acc4commissions
Details
Palette file (10.22 KB, application/x-krita)
2019-07-30 19:03 UTC, acc4commissions
Details
GDB backtrace (20.70 KB, text/plain)
2019-11-06 22:30 UTC, M
Details

Note You need to log in before you can comment on or make changes to this bug.
Description acc4commissions 2019-07-30 10:03:40 UTC
SUMMARY
git 3aca33f

load any image, and select the 'Pastel 5x2' from the palette list. Krita closes as soon as you select it.

It doesn't 'crash' and doesn't seem usually generate the crash log either, but I've got this short one this evening :


Error occurred on Tuesday, July 30, 2019 at 18:56:00.

krita.exe caused an Access Violation at location 0000000077A22618 in module ntdll.dll Reading from location 00000512D6591228.

AddrPC           Params
0000000077A22618 0000000020093BA0 0000000000000040 0000000000000020  ntdll.dll



SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: 
Qt Version: 

ADDITIONAL INFORMATION
Comment 1 wolthera 2019-07-30 16:24:29 UTC
Can you share that palette?

I do get an asan backtrace with a totally different palette, but it'd be nice if we had the original palette.
================================================================
==24394==AddressSanitizer: while reporting a bug found another one. Ignoring.
==24394==ERROR: AddressSanitizer: heap-use-after-free on address 0x60400202f610 at pc 0x7fffe6224354 bp 0x7fff7abd09c0 sp 0x7fff7abd09b0
READ of size 4 at 0x60400202f610 thread T24 (Thread (pooled))
==24394==AddressSanitizer: while reporting a bug found another one. Ignoring.
==24394==AddressSanitizer: while reporting a bug found another one. Ignoring.
    #0 0x7fffe6224353 in std::__atomic_base<int>::load(std::memory_order) const /usr/include/c++/7/bits/atomic_base.h:396
    #1 0x7fffe6224353 in int QAtomicOps<int>::load<int>(std::atomic<int> const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:227
    #2 0x7fffe6221f3d in QBasicAtomicInteger<int>::load() const /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:103
    #3 0x7fffe621f1eb in QtPrivate::RefCount::ref() /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:55
    #4 0x7fffe6e3cab4 in QMap<int, KisSwatch>::QMap(QMap<int, KisSwatch> const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:624
    #5 0x7fffe6e3a3ed in QVector<QMap<int, KisSwatch> >::reallocData(int, int, QFlags<QArrayData::AllocationOption>) /usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:581
    #6 0x7fffe6e3b67f in QVector<QMap<int, KisSwatch> >::detach() /usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:390
    #7 0x7fffe6e394c6 in QVector<QMap<int, KisSwatch> >::data() /usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:127
    #8 0x7fffe6e375f2 in QVector<QMap<int, KisSwatch> >::operator[](int) /usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:438
    #9 0x7fffe6e34615 in KisSwatchGroup::checkEntry(int, int) const /home/wolthera/krita/src/libs/pigment/resources/KisSwatchGroup.cpp:83
    #10 0x7fffe6e03ea0 in KoColorSet::getColorGlobal(unsigned int, unsigned int) const /home/wolthera/krita/src/libs/pigment/resources/KoColorSet.cpp:308
    #11 0x7fffb9390e32 in KisFilterPalettize::processImpl(KisSharedPtr<KisPaintDevice>, QRect const&, KisPinnedSharedPtr<KisFilterConfiguration>, KoUpdater*) const /home/wolthera/krita/src/plugins/filters/palettize/palettize.cpp:201
    #12 0x7fffedacfd8c in KisFilter::process(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisSelection>, QRect const&, KisPinnedSharedPtr<KisFilterConfiguration>, KoUpdater*) const /home/wolthera/krita/src/libs/image/filter/kis_filter.cc:88
    #13 0x7fffedcf3b5c in KisUpdateOriginalVisitor::visit(KisAdjustmentLayer*) /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:127
    #14 0x7fffedbf30b4 in KisAdjustmentLayer::accept(KisNodeVisitor&) /home/wolthera/krita/src/libs/image/kis_adjustment_layer.cc:115
    #15 0x7fffede584dd in KisProjectionLeaf::accept(KisNodeVisitor&) /home/wolthera/krita/src/libs/image/kis_projection_leaf.cpp:245
    #16 0x7fffedce8623 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:265
    #17 0x7fffee39ba9b in KisUpdateJobItem::runMergeJob() /home/wolthera/krita/build/libs/image/kritaimage_autogen/EWIEGA46WW/../../../../../src/libs/image/kis_update_job_item.h:118
    #18 0x7fffee39b6b1 in KisUpdateJobItem::run() /home/wolthera/krita/build/libs/image/kritaimage_autogen/EWIEGA46WW/../../../../../src/libs/image/kis_update_job_item.h:86
    #19 0x7fffeb31e3e1  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xac3e1)
    #20 0x7fffeb319c71  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xa7c71)
    #21 0x7fffea2bc6da in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
    #22 0x7fffeaa0188e in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x12188e)

0x60400202f610 is located 0 bytes inside of 40-byte region [0x60400202f610,0x60400202f638)
freed by thread T24 (Thread (pooled)) here:
    #0 0x7ffff6efb9d8 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe19d8)
    #1 0x7fffe6e3e274 in QMapData<int, KisSwatch>::destroy() /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:251
    #2 0x7fffe6e3dfec in QMap<int, KisSwatch>::~QMap() /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:339
    #3 0x7fffe6e3ca49 in QVector<QMap<int, KisSwatch> >::destruct(QMap<int, KisSwatch>*, QMap<int, KisSwatch>*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:351
    #4 0x7fffe6e39227 in QVector<QMap<int, KisSwatch> >::freeData(QTypedArrayData<QMap<int, KisSwatch> >*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:542
    #5 0x7fffe6e3690f in QVector<QMap<int, KisSwatch> >::~QVector() /usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:73
    #6 0x7fffe6e39337 in KisSwatchGroup::Private::~Private() /home/wolthera/krita/src/libs/pigment/resources/KisSwatchGroup.cpp:24
    #7 0x7fffe6e39364 in QScopedPointerDeleter<KisSwatchGroup::Private>::cleanup(KisSwatchGroup::Private*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:60
    #8 0x7fffe6e37498 in QScopedPointer<KisSwatchGroup::Private, QScopedPointerDeleter<KisSwatchGroup::Private> >::reset(KisSwatchGroup::Private*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:159
    #9 0x7fffe6e343c0 in KisSwatchGroup::operator=(KisSwatchGroup const&) /home/wolthera/krita/src/libs/pigment/resources/KisSwatchGroup.cpp:62
    #10 0x7fffe6e03e83 in KoColorSet::getColorGlobal(unsigned int, unsigned int) const /home/wolthera/krita/src/libs/pigment/resources/KoColorSet.cpp:306
    #11 0x7fffb9390e32 in KisFilterPalettize::processImpl(KisSharedPtr<KisPaintDevice>, QRect const&, KisPinnedSharedPtr<KisFilterConfiguration>, KoUpdater*) const /home/wolthera/krita/src/plugins/filters/palettize/palettize.cpp:201
    #12 0x7fffedacfd8c in KisFilter::process(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisSelection>, QRect const&, KisPinnedSharedPtr<KisFilterConfiguration>, KoUpdater*) const /home/wolthera/krita/src/libs/image/filter/kis_filter.cc:88
    #13 0x7fffedcf3b5c in KisUpdateOriginalVisitor::visit(KisAdjustmentLayer*) /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:127
    #14 0x7fffedbf30b4 in KisAdjustmentLayer::accept(KisNodeVisitor&) /home/wolthera/krita/src/libs/image/kis_adjustment_layer.cc:115
    #15 0x7fffede584dd in KisProjectionLeaf::accept(KisNodeVisitor&) /home/wolthera/krita/src/libs/image/kis_projection_leaf.cpp:245
    #16 0x7fffedce8623 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:265
    #17 0x7fffee39ba9b in KisUpdateJobItem::runMergeJob() /home/wolthera/krita/build/libs/image/kritaimage_autogen/EWIEGA46WW/../../../../../src/libs/image/kis_update_job_item.h:118
    #18 0x7fffee39b6b1 in KisUpdateJobItem::run() /home/wolthera/krita/build/libs/image/kritaimage_autogen/EWIEGA46WW/../../../../../src/libs/image/kis_update_job_item.h:86
    #19 0x7fffeb31e3e1  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xac3e1)

previously allocated by thread T0 here:
    #0 0x7ffff6efa458 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0458)
    #1 0x7fffeb38951d in QMapDataBase::createData() (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x11751d)
    #2 0x7fffe6e3ccac in QMap<int, KisSwatch>::detach_helper() /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:1006
    #3 0x7fffe6e395fd in QMap<int, KisSwatch>::detach() /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:364
    #4 0x7fffe6e376c5 in QMap<int, KisSwatch>::operator[](int const&) /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:673
    #5 0x7fffe6e34545 in KisSwatchGroup::setEntry(KisSwatch const&, int, int) /home/wolthera/krita/src/libs/pigment/resources/KisSwatchGroup.cpp:75
    #6 0x7fffe6e26854 in KoColorSet::Private::loadKplGroup(QDomDocument const&, QDomElement const&, KisSwatchGroup*) /home/wolthera/krita/src/libs/pigment/resources/KoColorSet.cpp:1644
    #7 0x7fffe6e12dc9 in KoColorSet::Private::loadKpl() /home/wolthera/krita/src/libs/pigment/resources/KoColorSet.cpp:1001
    #8 0x7fffe6e0ae06 in KoColorSet::Private::init() /home/wolthera/krita/src/libs/pigment/resources/KoColorSet.cpp:718
    #9 0x7fffe6e01efa in KoColorSet::loadFromDevice(QIODevice*) /home/wolthera/krita/src/libs/pigment/resources/KoColorSet.cpp:161
    #10 0x7fffe6e0191f in KoColorSet::load() /home/wolthera/krita/src/libs/pigment/resources/KoColorSet.cpp:145
    #11 0x7fffe8374f09 in KoResourceServer<KoColorSet, PointerStoragePolicy<KoColorSet> >::loadResources(QStringList) /home/wolthera/krita/src/libs/widgets/KoResourceServer.h:203
    #12 0x7fffe8366aa1 in KoResourceServerProvider::KoResourceServerProvider() /home/wolthera/krita/src/libs/widgets/KoResourceServerProvider.cpp:137
    #13 0x7fffe8368084 in Holder /home/wolthera/krita/src/libs/widgets/KoResourceServerProvider.cpp:157
    #14 0x7fffe8368120 in innerFunction /home/wolthera/krita/src/libs/widgets/KoResourceServerProvider.cpp:157
    #15 0x7fffe83686f5 in operator QGlobalStatic<KoResourceServerProvider, (anonymous namespace)::Q_QGS_s_instance::innerFunction, (anonymous namespace)::Q_QGS_s_instance::guard>::Type* /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobalstatic.h:134
    #16 0x7fffe8368185 in KoResourceServerProvider::instance() /home/wolthera/krita/src/libs/widgets/KoResourceServerProvider.cpp:161
    #17 0x7ffff248f4e3 in KisApplication::loadResources() /home/wolthera/krita/src/libs/ui/KisApplication.cpp:287
    #18 0x7ffff249163c in KisApplication::start(KisApplicationArguments const&) /home/wolthera/krita/src/libs/ui/KisApplication.cpp:425
    #19 0x555557932893 in main /home/wolthera/krita/src/krita/main.cc:513
    #20 0x7fffea901b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

Thread T24 (Thread (pooled)) created by T21 (Thread (pooled)) here:
    #0 0x7ffff6e51d2f in __interceptor_pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x37d2f)
    #1 0x7fffeb3192ed in QThread::start(QThread::Priority) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xa72ed)

Thread T21 (Thread (pooled)) created by T0 here:
    #0 0x7ffff6e51d2f in __interceptor_pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x37d2f)
    #1 0x7fffeb3192ed in QThread::start(QThread::Priority) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xa72ed)

SUMMARY: AddressSanitizer: heap-use-after-free /usr/include/c++/7/bits/atomic_base.h:396 in std::__atomic_base<int>::load(std::memory_order) const
Shadow bytes around the buggy address:
  0x0c08803fde70: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fde80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fde90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fdea0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fdeb0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c08803fdec0: fa fa[fd]fd fd fd fd fa fa fa fa fa fa fa fa fa
  0x0c08803fded0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fdee0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fdef0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fdf00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c08803fdf10: fa fa 00 00 00 00 00 fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==24394==ABORTING
[Thread 0x7fff7617a700 (LWP 25230) exited]
[Thread 0x7fff7abd4700 (LWP 25229) exited]
[Thread 0x7fff7bbd6700 (LWP 25228) exited]
[Thread 0x7fff7a3d3700 (LWP 25227) exited]
[Thread 0x7fff7b3d5700 (LWP 25226) exited]
[Thread 0x7fff9d048700 (LWP 25016) exited]
[Thread 0x7fff9e0af700 (LWP 25003) exited]
[Thread 0x7fff93272700 (LWP 24816) exited]
[Thread 0x7fff95475700 (LWP 24810) exited]
[Thread 0x7fffc508c700 (LWP 24549) exited]
[Thread 0x7fffd3e21700 (LWP 24548) exited]
[Thread 0x7fffcf97d700 (LWP 24543) exited]
[Thread 0x7ffff7f8ce80 (LWP 24394) exited]
[Inferior 1 (process 24394) exited with code 01]
(gdb)
Comment 2 acc4commissions 2019-07-30 18:08:54 UTC
Created attachment 121846 [details]
Screenshot.

I'm not sure where it's stored. I didn't add it either, it's just included by default with the build.
Comment 3 wolthera 2019-07-30 18:15:53 UTC
Do you have the muses brush pack installed or something like that?
Comment 4 acc4commissions 2019-07-30 19:03:25 UTC
Created attachment 121847 [details]
Palette file

Oh, ok. Seems like It was a part the Digital Atelier brush bundle by Ramon Miranda(https://gumroad.com/l/sFbEb). The palette was gone when the bundle was inactive. Sorry for the confusion.

The palette file was also inside the bundle file.
Comment 5 Raghavendra kamath 2019-08-14 04:20:15 UTC
I have this crash with a palette created in newer version of Krita, The palette also has groups.

Unfortunately trying to get a backtrace in gdb hangs my entire system
Comment 6 wolthera 2019-08-14 12:52:17 UTC
I'll assign this to myself for now, once I know more I'll either fix it, or just write a debug report.
Comment 7 Halla Rempt 2019-09-02 10:49:13 UTC
I cannot reproduce this anymore. Can anyone else?
Comment 8 acc4commissions 2019-09-02 11:47:42 UTC
(In reply to Boudewijn Rempt from comment #7)
> I cannot reproduce this anymore. Can anyone else?

Still reproducable in the lastest nightly. :/
Comment 9 Halla Rempt 2019-09-02 11:57:44 UTC
Ah, now I get it, sorry, I was a bit confused...
Comment 10 Halla Rempt 2019-09-02 12:58:19 UTC
Git commit 5be3887e747a163d862c237d77cfa1e4f2a4e7af by Boudewijn Rempt.
Committed on 02/09/2019 at 12:58.
Pushed by rempt into branch 'master'.

Check the palette for valid entries

Somehow, this code is more complex than I think it should be...

M  +16   -2    libs/pigment/resources/KisSwatchGroup.cpp

https://invent.kde.org/kde/krita/commit/5be3887e747a163d862c237d77cfa1e4f2a4e7af
Comment 11 Halla Rempt 2019-09-10 08:27:58 UTC
Git commit d779201edad48879034ffd2121a1a1a0f0679bfd by Boudewijn Rempt.
Committed on 10/09/2019 at 08:25.
Pushed by rempt into branch 'krita/4.2'.

Check the palette for valid entries

Somehow, this code is more complex than I think it should be...

M  +16   -2    libs/pigment/resources/KisSwatchGroup.cpp

https://invent.kde.org/kde/krita/commit/d779201edad48879034ffd2121a1a1a0f0679bfd
Comment 12 acc4commissions 2019-09-11 14:59:41 UTC
It's still reproducable in the latest nightly... I'll post here when it's not anymore.

A short crashlog : 

Error occurred on Wednesday, September 11, 2019 at 23:53:51.

krita.exe caused an Access Violation at location 0000000077422618 in module ntdll.dll Reading from location 00000CB22D3A34C8.

AddrPC           Params
0000000077422618 00000000237D4C60 00000000373EE800 000000006FD084C2  ntdll.dll
Comment 13 Dmitry Kazakov 2019-09-21 09:15:48 UTC
Git commit d0108d29965446c4667daa1ab13a99bd8ea4a495 by Dmitry Kazakov, on behalf of Krzysztof Kurek.
Committed on 21/09/2019 at 09:15.
Pushed by dkazakov into branch 'master'.

Fix the TestKistSwatchGroup test

KisSwatchGroup now inserts the new KisSwatch into the first position not
containing a valid KisSwatch.

M  +14   -37   libs/pigment/resources/KisSwatchGroup.cpp
M  +3    -3    libs/pigment/tests/TestKisSwatchGroup.cpp

https://invent.kde.org/kde/krita/commit/d0108d29965446c4667daa1ab13a99bd8ea4a495
Comment 14 Dmitry Kazakov 2019-09-21 12:09:08 UTC
Git commit 20f6d33754a44d9295dff1ee5573dabbfcb213e1 by Dmitry Kazakov, on behalf of Krzysztof Kurek.
Committed on 21/09/2019 at 10:08.
Pushed by dkazakov into branch 'krita/4.2'.

Fix the TestKistSwatchGroup test

KisSwatchGroup now inserts the new KisSwatch into the first position not
containing a valid KisSwatch.

M  +14   -37   libs/pigment/resources/KisSwatchGroup.cpp
M  +3    -3    libs/pigment/tests/TestKisSwatchGroup.cpp

https://invent.kde.org/kde/krita/commit/20f6d33754a44d9295dff1ee5573dabbfcb213e1
Comment 15 krzysio.kurek 2019-09-22 15:55:51 UTC
This issue seems to be caused by multithreading and use of destroyed shared resources.
The crash can be prevented by adding the following line to `KisSwatchGroup::Private`:
~Private(){usleep(1);}
Somehow it causes just enough time to pass for crash not to occur, although there's still artefacts caused by use of invalid resources.
Comment 16 krzysio.kurek 2019-09-23 10:48:39 UTC
I've managed to identify the issue and it should be fixed in today's nightly.
Comment 17 Halla Rempt 2019-09-23 11:12:08 UTC
Yes, should be fixed in 9fd34885fcc808e4e5509105b5aed77e27d2e61b

I couldn't backport this fix to the 4.2 branch, that code is missing there.
Comment 18 krzysio.kurek 2019-09-23 13:35:01 UTC
The code in 4.2 branch will only crash in debug due to a misplaced Q_ASSERT, should I backport it anyway?
Comment 19 Halla Rempt 2019-09-23 13:37:03 UTC
Let's just remove that assert :-)
Comment 20 wolthera 2019-10-07 15:47:31 UTC
Uhm, gonna set this to confirmed if people are making bugfixes to it, at the very least.
Comment 21 M 2019-11-06 22:30:15 UTC
Created attachment 123765 [details]
GDB backtrace

So strangely enough, I can reliably produce a hang / crash when I choose the Pastel 5x2 or PixelArt 16 palettes in the filter with my build from master (git 33bc57f), but on the newest AppImage (also git 33bc57f) I only managed to provoke the same crash twice in about 10 restarted sessions.

I'll attach my GDB backtace in any case.
Comment 22 Halla Rempt 2019-11-07 13:54:52 UTC
Git commit 7104885cf0904dbfe03cd04346a3b46d2547effb by Boudewijn Rempt.
Committed on 07/11/2019 at 13:54.
Pushed by rempt into branch 'master'.

Make KoColorSet safer when accessing color groups

M  +11   -9    libs/pigment/resources/KoColorSet.cpp
M  +1    -1    libs/pigment/resources/KoColorSet.h

https://invent.kde.org/kde/krita/commit/7104885cf0904dbfe03cd04346a3b46d2547effb