Bug 425784 - Crash on a brush without the brush tip appearing in the brush history
Summary: Crash on a brush without the brush tip appearing in the brush history
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Brush engines (show other bugs)
Version: git master (please specify the git hash!)
Platform: Mint (Ubuntu based) Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2020-08-25 15:10 UTC by Tiar
Modified: 2020-10-16 02:10 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
kritarc file that includes the Blender_1 preset in the brush history (26.94 KB, text/plain)
2020-08-25 15:10 UTC, Tiar
Details
Preset without the brush tip (49.75 KB, image/png)
2020-08-25 15:12 UTC, Tiar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tiar 2020-08-25 15:10:44 UTC
Created attachment 131168 [details]
kritarc file that includes the Blender_1 preset in the brush history

SUMMARY
If in the brush history there is a brush that has no brush tip, there is an assert on trying to create a canvas.

STEPS TO REPRODUCE
1. Select a brush, requirements:
    - brush tip doesn't exist
    - possibly the brush tip has to be .gbr?
2. Possibly: select some other brush
3. Open Krita again
4. Create a new document/open a file etc.

OBSERVED RESULT
Assert (actually it's a bit worse; it's a freeze on assert?)

EXPECTED RESULT
No assert

Steps to reproduce with the submitted files:
--------
I will attach both the kritarc file and the faulty preset. Then the steps to reproduce are less guessy and look like that:

1. replace kritarc file with the one I added. The important thing is that the Blender_1.kpp preset appears in the Brush History.
2. Put the Blender_1.kpp file in the {resource folder}/painttoppresets
3. Open Krita
4. Create a new document

PROBLEM
In function `KisBrushSP KisPredefinedBrushFactory::createBrush(const QDomElement& brushDefinition, KisResourcesInterfaceSP resourcesInterface)` there is a bit of code that looks like this:

```
    else if (brushDefinition.hasAttribute("ColorAsMask")) {
        KIS_SAFE_ASSERT_RECOVER_NOOP(colorfulBrush);
```

Problem is that a bit earlier there is a check if the brush tip got retrieved; if it was, there is a different brush tip that might not follow the `brushDefinition` anymore.

Easy fix would be to remove this assert, but I believe there might be some deeper issue with the fallback brush tip and RGBA code. I for example don't understand why all brushes that have "ColorAsMask" must be `KisColorfulBrush`es. That's why I'm making a bug report instead of removing the assert myself. 

SOFTWARE/OS VERSIONS
Krita Version: 5.0.0-prealpha (git d6aa0db)

ASSERT LOG
#0  0x00007ffff3f442e9 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff466ec25 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007fffd443eb38 in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x55555aecdca8, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:206
#3  0x00007fffd443eb38 in KoResourceServer<KisPaintOpPreset>::resourceByName(QString const&) const (name=..., this=0x55555aecdc80) at /home/tymon/kritadev/krita/libs/resources/KoResourceServer.h:275
#4  0x00007fffd443eb38 in PresetHistoryDock::setCanvas(KoCanvasBase*) (this=0x55555d8ee490, canvas=<optimized out>) at /home/tymon/kritadev/krita/plugins/dockers/presethistory/presethistory_dock.cpp:97
#5  0x00007ffff2f1c5b0 in KoCanvasControllerWidget::Private::activate() (this=0x55555c736060) at /home/tymon/kritadev/krita/libs/flake/KoCanvasControllerWidget.cpp:142
#6  0x00007ffff484df92 in QObject::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff5221c6b in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff52c4e7e in QFrame::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff52c7ac4 in QAbstractScrollArea::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff51e34a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff51eaae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff7013587 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555e287e68, event=0x55555918e4b0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:746
#13 0x00007ffff4824499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007ffff482748b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff4876b23 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff07d5d5e in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff07d5ff8 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007ffff07d608c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff4876143 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007fffea90ce51 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#21 0x00007ffff482316b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff53ce22d in QDialog::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff540198d in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5

``` RELEVANT PART ```
#24 0x00007ffff5744a53 in kis_assert_common(char const*, char const*, int, bool, bool) (assertion=0x7ffff3df11a4 "colorfulBrush", file=0x7ffff3df1078 "/home/tymon/kritadev/krita/libs/brush/kis_predefined_brush_factory.cpp", line=95, throwException=false, isIgnorable=true) at /usr/include/KF5/KI18n/klocalizedstring.h:1402
#25 0x00007ffff5744cdd in kis_safe_assert_recoverable(char const*, char const*, int) (assertion=assertion@entry=0x7ffff3df11a4 "colorfulBrush", file=file@entry=0x7ffff3df1078 "/home/tymon/kritadev/krita/libs/brush/kis_predefined_brush_factory.cpp", line=line@entry=95) at /home/tymon/kritadev/krita/libs/global/kis_assert.cpp:117
#26 0x00007ffff3db3aa8 in KisPredefinedBrushFactory::createBrush(QDomElement const&, QSharedPointer<KisResourcesInterface>) (this=<optimized out>, brushDefinition=..., resourcesInterface=...)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qdebug.h:125
#27 0x00007ffff3dc1f0d in KisBrushRegistry::createBrush(QDomElement const&, QSharedPointer<KisResourcesInterface>) (this=0x7ffff3e04200 <(anonymous namespace)::Q_QGS_s_instance::innerFunction()::holder>, element=..., resourcesInterface=...) at /usr/include/c++/8/bits/atomic_base.h:295
#28 0x00007ffff3dbc36e in KisBrush::fromXML(QDomElement const&, QSharedPointer<KisResourcesInterface>) (element=..., resourcesInterface=...) at /usr/include/c++/8/bits/atomic_base.h:295
#29 0x00007fffd54da0bc in KisBrushOptionProperties::prepareLinkedResourcesImpl(KisPropertiesConfiguration const*, QSharedPointer<KisResourcesInterface>) const (this=<optimized out>, settings=<optimized out>, resourcesInterface=...)
    at /usr/include/c++/8/bits/atomic_base.h:295
```   ```
#30 0x00007fffd54cb17a in KisPaintopPropertiesCanvasResourcesBase::prepareLinkedResources<KisPinnedSharedPtr<KisPaintOpSettings> >(KisPinnedSharedPtr<KisPaintOpSettings>, QSharedPointer<KisResourcesInterface>) const (resourcesInterface=..., settings=..., this=0x7fffffffa9d0) at /usr/include/c++/8/bits/atomic_base.h:295
#31 0x00007fffd54cb17a in KisBrushBasedPaintOp::prepareLinkedResources(KisPinnedSharedPtr<KisPaintOpSettings>, QSharedPointer<KisResourcesInterface>) (settings=..., resourcesInterface=...)
    at /home/tymon/kritadev/krita/plugins/paintops/libpaintop/kis_brush_based_paintop.cpp:122
#32 0x00007fffd55bf55c in detail::prepareLinkedResources<KisColorSmudgeOp>(KisPinnedSharedPtr<KisPaintOpSettings>, QSharedPointer<KisResourcesInterface>, std::enable_if<detail::has_prepare_linked_resources<KisColorSmudgeOp, void>::value, void>::type*) (resourcesInterface=..., settings=...) at /usr/include/c++/8/bits/atomic_base.h:295
#33 0x00007fffd55bf55c in KisSimplePaintOpFactory<KisColorSmudgeOp, KisColorSmudgeOpSettings, KisColorSmudgeOpSettingsWidget>::prepareLinkedResources(KisPinnedSharedPtr<KisPaintOpSettings>, QSharedPointer<KisResourcesInterface>) (this=<optimized out>, settings=..., resourcesInterface=...) at /home/tymon/kritadev/krita/plugins/paintops/libpaintop/kis_simple_paintop_factory.h:147
#34 0x00007ffff5ad537b in KisPaintOpPreset::linkedResources(QSharedPointer<KisResourcesInterface>) const (this=0x555562900b00, globalResourcesInterface=...) at /usr/include/c++/8/bits/atomic_base.h:295
#35 0x00007ffff582d0f0 in KoResource::requiredResources(QSharedPointer<KisResourcesInterface>) const (this=0x555562900b00, globalResourcesInterface=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:167
#36 0x00007ffff57eb9f8 in KisResourceLocator::loadRequiredResources(QSharedPointer<KoResource>) (this=0x555559672430, resource=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:312
#37 0x00007ffff57ec947 in KisResourceLocator::resource(QString, QString const&, QString const&) (this=0x555559672430, storageLocation=..., resourceType=..., filename=...)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:330
#38 0x00007ffff57ecd1c in KisResourceLocator::resourceForId(int) (this=0x555559672430, resourceId=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:60
#39 0x00007ffff57f7d5c in KisResourceModel::resourceForName(QString) const (this=<optimized out>, name=...) at /home/tymon/kritadev/krita/libs/resources/KisResourceModel.cpp:366
#40 0x00007fffd443ef71 in KoResourceServer<KisPaintOpPreset>::resourceByName(QString const&) const (name=..., this=0x55555aecdc80) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:60
#41 0x00007fffd443ef71 in PresetHistoryDock::setCanvas(KoCanvasBase*) (this=0x55555d8ee490, canvas=<optimized out>) at /home/tymon/kritadev/krita/plugins/dockers/presethistory/presethistory_dock.cpp:97
#42 0x00007ffff2f1c5b0 in KoCanvasControllerWidget::Private::activate() (this=0x55555c736060) at /home/tymon/kritadev/krita/libs/flake/KoCanvasControllerWidget.cpp:142
#43 0x00007ffff708c7a0 in KisViewManager::setCurrentView(KisView*) (this=0x555559a9f720, view=<optimized out>) at /usr/include/c++/8/bits/atomic_base.h:390
---Type <return> to continue, or q <return> to quit---
#44 0x00007ffff7046ac9 in KisMainWindow::setActiveView(KisView*) (this=this@entry=0x55555af20880, view=view@entry=0x555559197800) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:1511
#45 0x00007ffff704aedb in KisMainWindow::setActiveSubWindow(QWidget*) (window=<optimized out>, this=0x55555af20880) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:2402
#46 0x00007ffff704aedb in KisMainWindow::setActiveSubWindow(QWidget*) (this=0x55555af20880, window=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:2391
#47 0x00007ffff704b185 in KisMainWindow::subWindowActivated() (this=0x55555af20880) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:2148
#48 0x00007ffff70569e1 in KisMainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x55555af20880, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/tymon/kritadev/build/libs/ui/kritaui_autogen/include/moc_KisMainWindow.cpp:357
#49 0x00007ffff484d6db in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#50 0x00007ffff5335ecf in QMdiArea::subWindowActivated(QMdiSubWindow*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#51 0x00007ffff533a226 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#52 0x00007ffff533ae64 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#53 0x00007ffff533be5d in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#54 0x00007ffff484d6db in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#55 0x00007ffff534148c in QMdiSubWindow::windowStateChanged(QFlags<Qt::WindowState>, QFlags<Qt::WindowState>) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#56 0x00007ffff53498b9 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#57 0x00007ffff534a602 in QMdiSubWindow::eventFilter(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#58 0x00007ffff48241ab in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#59 0x00007ffff51e3491 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#60 0x00007ffff51eaae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#61 0x00007ffff7013587 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x555559197800, event=0x7fffffffbbb0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:746
#62 0x00007ffff4824499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#63 0x00007ffff521e1e8 in QWidgetPrivate::show_helper() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#64 0x00007ffff522137b in QWidget::setVisible(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#65 0x00007ffff521e158 in QWidgetPrivate::showChildren(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#66 0x00007ffff521e1bf in QWidgetPrivate::show_helper() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#67 0x00007ffff522137b in QWidget::setVisible(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#68 0x00007ffff534a0c1 in QMdiSubWindow::changeEvent(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#69 0x00007ffff522171d in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#70 0x00007ffff534aa33 in QMdiSubWindow::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#71 0x00007ffff51e34a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#72 0x00007ffff51eaae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#73 0x00007ffff7013587 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555b9d1ff0, event=0x7fffffffc1c0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:746
#74 0x00007ffff4824499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#75 0x00007ffff521d805 in QWidget::setWindowState(QFlags<Qt::WindowState>) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#76 0x00007ffff521df11 in QWidget::showMaximized() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#77 0x00007ffff534a8c6 in QMdiSubWindow::eventFilter(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#78 0x00007ffff48241ab in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#79 0x00007ffff51e3491 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#80 0x00007ffff51eaae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#81 0x00007ffff7013587 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x555559197800, event=0x7fffffffc590) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:746
#82 0x00007ffff4824499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#83 0x00007ffff521d805 in QWidget::setWindowState(QFlags<Qt::WindowState>) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#84 0x00007ffff521df11 in QWidget::showMaximized() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#85 0x00007ffff704a9ed in KisMainWindow::showView(KisView*, QMdiSubWindow*) (this=0x55555af20880, imageView=0x555559197800, subwin=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:700
#86 0x00007ffff7045ff7 in KisMainWindow::addView(KisView*, QMdiSubWindow*) (this=this@entry=0x55555af20880, view=view@entry=0x555559197800, subWindow=subWindow@entry=0x0) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:647
#87 0x00007ffff7046150 in KisMainWindow::addViewAndNotifyLoadingCompleted(KisDocument*, QMdiSubWindow*) (this=this@entry=0x55555af20880, document=document@entry=0x55555db89f70, subWindow=subWindow@entry=0x0)
    at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:1067
#88 0x00007ffff7046b89 in KisMainWindow::slotLoadCompleted() (this=0x55555af20880) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:1089
#89 0x00007ffff7056a7d in KisMainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x55555af20880, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/tymon/kritadev/build/libs/ui/kritaui_autogen/include/moc_KisMainWindow.cpp:365
#90 0x00007ffff484d6db in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#91 0x00007ffff702d308 in KisDocument::openUrlInternal(QUrl const&) (this=0x55555db89f70, url=...) at /home/tymon/kritadev/krita/libs/ui/KisDocument.cpp:2059
#92 0x00007ffff702d812 in KisDocument::openUrl(QUrl const&, QFlags<KisDocument::OpenFlag>) (this=0x55555db89f70, _url=..., flags=...) at /home/tymon/kritadev/krita/libs/ui/KisDocument.cpp:1449
#93 0x00007ffff7046345 in KisMainWindow::openDocumentInternal(QUrl const&, QFlags<KisMainWindow::OpenFlag>) (this=0x55555af20880, url=..., flags=...) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:1015
#94 0x00007ffff704de7e in KisMainWindow::openDocument(QUrl const&, QFlags<KisMainWindow::OpenFlag>) (this=0x55555af20880, url=..., flags=...) at /home/tymon/kritadev/krita/libs/ui/KisMainWindow.cpp:986
---Type <return> to continue, or q <return> to quit---
#95 0x00007ffff6dfb8dc in KisWelcomePageWidget::recentDocumentClicked(QModelIndex) (this=<optimized out>, index=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qflags.h:120
#96 0x00007ffff712347d in KisWelcomePageWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_c=QMetaObject::InvokeMetaMethod, _a=<optimized out>, _id=<optimized out>, _o=<optimized out>)
    at /home/tymon/kritadev/build/libs/ui/kritaui_autogen/EWIEGA46WW/moc_KisWelcomePageWidget.cpp:101
#97 0x00007ffff712347d in KisWelcomePageWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/tymon/kritadev/build/libs/ui/kritaui_autogen/EWIEGA46WW/moc_KisWelcomePageWidget.cpp:90
#98 0x00007ffff484d6db in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#99 0x00007ffff54297c5 in QAbstractItemView::clicked(QModelIndex const&) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#100 0x00007ffff542ce3e in QAbstractItemView::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#101 0x00007ffff546d55f in QListView::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#102 0x00007ffff52217d8 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#103 0x00007ffff52c4e7e in QFrame::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#104 0x00007ffff543619b in QAbstractItemView::viewportEvent(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#105 0x00007ffff48241ab in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#106 0x00007ffff51e3491 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#107 0x00007ffff51ead28 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#108 0x00007ffff7013587 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555ab53a40, event=0x7fffffffd4a0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:746
#109 0x00007ffff4824499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#110 0x00007ffff51ea029 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#111 0x00007ffff523c304 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#112 0x00007ffff523ee8e in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#113 0x00007ffff51e34a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#114 0x00007ffff51eaae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#115 0x00007ffff7013587 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555981d6f0, event=0x7fffffffd920) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:746
#116 0x00007ffff4824499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#117 0x00007ffff4c2953b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#118 0x00007ffff4c2b435 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#119 0x00007ffff4c05b6b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#120 0x00007fffea90ce5b in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#121 0x00007ffff482316b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#122 0x00007ffff482b2e2 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#123 0x0000555555e28e5f in main (argc=<optimized out>, argv=0x7fffffffdec8) at /home/tymon/kritadev/krita/krita/main.cc:614
#124 0x00007ffff3e53b6b in __libc_start_main (main=0x555555e27450 <main>, argc=1, argv=0x7fffffffdec8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdeb8) at ../csu/libc-start.c:308
#125 0x0000555555e29cfa in _start () at /home/tymon/kritadev/krita/krita/main.cc:488
Comment 1 Tiar 2020-08-25 15:12:01 UTC
Created attachment 131169 [details]
Preset without the brush tip

Note: for the steps to reproduce to work, you must need to make sure that Krita_3_default_resources bundle is *inactive* (it contains the brush tip that the preset tried to find).
Comment 2 voronwe13 2020-08-25 21:07:51 UTC
I just submitted MR 478 to fix issue (https://invent.kde.org/graphics/krita/-/merge_requests/478).  Since I haven't managed to replicate the actual crash, I can't say for sure it fixes it, so it will need to be checked before it's merged and this is marked resolved.
Comment 3 Tiar 2020-08-27 12:27:44 UTC
Git commit 7da1e44c436259333a27d3a08a76af4e53a08685 by Agata Cacko, on behalf of Peter Schatz.
Committed on 27/08/2020 at 12:26.
Pushed by tymond into branch 'krita/4.3'.

Fix bug with brushes that can't find brushtip

Fix for bug 425784.  Brush presets that can't find the brushtip potentially
trip an ASSERT statement when loading a new document if the preset is in
the user's history.  Fix changes brush preset loading to always set the
brush application to ALPHAMASK if the brushtip isn't found.

M  +6    -2    libs/brush/kis_predefined_brush_factory.cpp

https://invent.kde.org/graphics/krita/commit/7da1e44c436259333a27d3a08a76af4e53a08685
Comment 4 Tiar 2020-10-16 02:10:50 UTC
Git commit 626ef301e3e8b46a66fadbfb1a3d5103926a6103 by Agata Cacko, on behalf of Peter Schatz.
Committed on 16/10/2020 at 01:06.
Pushed by tymond into branch 'master'.

Fix bug with brushes that can't find brushtip

Fix for bug 425784.  Brush presets that can't find the brushtip potentially
trip an ASSERT statement when loading a new document if the preset is in
the user's history.  Fix changes brush preset loading to always set the
brush application to ALPHAMASK if the brushtip isn't found.

M  +6    -2    libs/brush/kis_predefined_brush_factory.cpp

https://invent.kde.org/graphics/krita/commit/626ef301e3e8b46a66fadbfb1a3d5103926a6103