Bug 388699 - Crash after saving a .kra file with complicated vector shapes
Summary: Crash after saving a .kra file with complicated vector shapes
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Dmitry Kazakov
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2018-01-08 21:17 UTC by Halla Rempt
Modified: 2018-01-31 11:36 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Halla Rempt 2018-01-08 21:17:18 UTC
Application: krita (4.0.0-beta1 (git 4394a31))

Qt Version: 5.9.2
Frameworks Version: 5.40.0
Operating System: Linux 4.4.104-18.44-default x86_64
Distribution: "openSUSE Leap 42.2"

-- Information about the crash:
Crash after saving a .kra file with complicated vector shapes: I (well, not I, but anyway), merged two vector layers, undid that, then tried to save.

-- Backtrace:
Application: Krita (krita), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f3d7974a940 (LWP 26110))]

Thread 11 (Thread 0x7f3d13fff700 (LWP 28372)):
#0  0x00007f3d6cfe6468 in pthread_cond_timedwait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f3d6ebde348 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f3d6ebda6d0 in  () at /usr/lib64/libQt5Core.so.5
#3  0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#4  0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#5  0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 10 (Thread 0x7f3d11368700 (LWP 28371)):
[KCrash Handler]
#6  0x00007f3d76c76280 in KoPathPoint::activeControlPoint1() const (this=0x4040bb774c3cecfb) at /home/boud/dev/krita/libs/flake/KoPathPoint.cpp:240
#7  0x00007f3d76c6b835 in KoPathShape::toString(QTransform const&) const (this=this@entry=0x125f8db0, matrix=...) at /home/boud/dev/krita/libs/flake/KoPathShape.cpp:1393
#8  0x00007f3d76d55bb9 in SvgWriter::savePath(KoPathShape*, SvgSavingContext&) (this=<optimized out>, path=0x125f8db0, context=...) at /home/boud/dev/krita/libs/flake/svg/SvgWriter.cpp:235
#9  0x00007f3d76d56ad5 in SvgWriter::saveGroup(KoShapeGroup*, SvgSavingContext&) (this=this@entry=0x7f3d11367510, group=<optimized out>, context=...) at /home/boud/dev/krita/libs/flake/svg/SvgWriter.cpp:205
#10 0x00007f3d76d56a8b in SvgWriter::saveGroup(KoShapeGroup*, SvgSavingContext&) (this=this@entry=0x7f3d11367510, group=<optimized out>, context=...) at /home/boud/dev/krita/libs/flake/svg/SvgWriter.cpp:203
#11 0x00007f3d76d56a8b in SvgWriter::saveGroup(KoShapeGroup*, SvgSavingContext&) (this=this@entry=0x7f3d11367510, group=<optimized out>, context=...) at /home/boud/dev/krita/libs/flake/svg/SvgWriter.cpp:203
#12 0x00007f3d76d56a8b in SvgWriter::saveGroup(KoShapeGroup*, SvgSavingContext&) (this=this@entry=0x7f3d11367510, group=<optimized out>, context=...) at /home/boud/dev/krita/libs/flake/svg/SvgWriter.cpp:203
#13 0x00007f3d76d5718b in SvgWriter::saveShapes(QList<KoShape*>, SvgSavingContext&) (this=this@entry=0x7f3d11367510, shapes=..., savingContext=...) at /home/boud/dev/krita/libs/flake/svg/SvgWriter.cpp:162
#14 0x00007f3d76d57430 in SvgWriter::save(QIODevice&, QSizeF const&) (this=this@entry=0x7f3d11367510, outputDevice=..., pageSize=...) at /home/boud/dev/krita/libs/flake/svg/SvgWriter.cpp:122
#15 0x00007f3d78dc97a4 in KisShapeLayer::saveShapesToStore(KoStore*, QList<KoShape*>, QSizeF const&) (store=store@entry=0x7f3ccc00fbd0, shapes=..., sizeInPt=...) at /home/boud/dev/krita/libs/ui/flake/kis_shape_layer.cc:430
#16 0x00007f3d78dc9c2c in KisShapeLayer::saveLayer(KoStore*) const (this=this@entry=0xa933160, store=0x7f3ccc00fbd0) at /home/boud/dev/krita/libs/ui/flake/kis_shape_layer.cc:470
#17 0x00007f3d24b88ad5 in KisKraSaveVisitor::visit(KisExternalLayer*) (this=0x7f3d113678f0, layer=0xa933160) at /home/boud/dev/krita/plugins/impex/libkra/kis_kra_save_visitor.cpp:106
#18 0x00007f3d77c6347c in KisNodeVisitor::visitAllInverse(KisNode*, bool) (this=this@entry=0x7f3d113678f0, node=node@entry=0xfcb3000, breakOnFail=breakOnFail@entry=false) at /home/boud/dev/krita/libs/image/kis_node_visitor.cpp:49
#19 0x00007f3d24b890ed in KisKraSaveVisitor::visit(KisGroupLayer*) (this=0x7f3d113678f0, layer=0xfcb3000) at /home/boud/dev/krita/plugins/impex/libkra/kis_kra_save_visitor.cpp:140
#20 0x00007f3d24b806af in KisKraSaver::saveBinaryData(KoStore*, KisSharedPtr<KisImage>, QString const&, bool, bool) (this=0x7f3ccc0014d0, store=0x7f3ccc00fbd0, image=..., uri=..., external=external@entry=true, autosave=autosave@entry=false) at /home/boud/dev/krita/plugins/impex/libkra/kis_kra_saver.cpp:198
#21 0x00007f3d1b5fa0de in KraConverter::buildFile(QIODevice*) (this=this@entry=0x7f3d11367a60, io=io@entry=0x7f3d11367af0) at /home/boud/dev/krita/plugins/impex/kra/kra_converter.cpp:133
#22 0x00007f3d1b5f5ee1 in KraExport::convert(KisDocument*, QIODevice*, KisPinnedSharedPtr<KisPropertiesConfiguration>) (this=<optimized out>, document=0xe44bb60, io=0x7f3d11367af0) at /home/boud/dev/krita/plugins/impex/kra/kra_export.cpp:62
#23 0x00007f3d79051129 in KisImportExportManager::doExportImpl(QString const&, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>) (this=this@entry=0x123649a0, location=..., filter=..., exportConfiguration=...) at /home/boud/dev/krita/libs/ui/KisImportExportManager.cpp:608
#24 0x00007f3d79051228 in KisImportExportManager::doExport(QString const&, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool) (this=0x123649a0, location=..., filter=..., exportConfiguration=..., alsoAsKra=<optimized out>) at /home/boud/dev/krita/libs/ui/KisImportExportManager.cpp:572
#25 0x00007f3d79054bb5 in std::_Mem_fn<KisImportExportFilter::ConversionStatus (KisImportExportManager::*)(QString const&, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool)>::operator()<QString&, QSharedPointer<KisImportExportFilter>&, KisPinnedSharedPtr<KisPropertiesConfiguration>&, bool&, void> (__object=<optimized out>, this=0xec4c840) at /usr/include/c++/4.8/functional:601
#26 0x00007f3d79054bb5 in std::_Bind<std::_Mem_fn<KisImportExportFilter::ConversionStatus (KisImportExportManager::*)(const QString&, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool)>(KisImportExportManager*, QString, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool)>::__call<KisImportExportFilter::ConversionStatus, 0ul, 1ul, 2ul, 3ul, 4ul> (__args=..., this=0xec4c840) at /usr/include/c++/4.8/functional:1296
#27 0x00007f3d79054bb5 in std::_Bind<std::_Mem_fn<KisImportExportFilter::ConversionStatus (KisImportExportManager::*)(const QString&, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool)>(KisImportExportManager*, QString, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool)>::operator()<, KisImportExportFilter::ConversionStatus> (this=0xec4c840) at /usr/include/c++/4.8/functional:1355
#28 0x00007f3d79054bb5 in QtConcurrent::StoredFunctorCall0<KisImportExportFilter::ConversionStatus, std::_Bind<std::_Mem_fn<KisImportExportFilter::ConversionStatus (KisImportExportManager::*)(QString const&, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool)> (KisImportExportManager*, QString, QSharedPointer<KisImportExportFilter>, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool)> >::runFunctor() (this=0xec4c820) at /usr/include/qt5/QtConcurrent/qtconcurrentstoredfunctioncall.h:60
#29 0x00007f3d7905500f in QtConcurrent::RunFunctionTask<KisImportExportFilter::ConversionStatus>::run() (this=0xec4c820) at /usr/include/qt5/QtConcurrent/qtconcurrentrunbase.h:108
#30 0x00007f3d6ebda54e in  () at /usr/lib64/libQt5Core.so.5
#31 0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#32 0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#33 0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 9 (Thread 0x7f3d137fe700 (LWP 26374)):
#0  0x00007f3d6cfe60bf in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f3d6ebde3fb in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f3d6ebd7b6b in QSemaphore::acquire(int) () at /usr/lib64/libQt5Core.so.5
#3  0x00007f3d73448bf4 in  () at /usr/lib64/libQt5Network.so.5
#4  0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 8 (Thread 0x7f3d18ff9700 (LWP 26372)):
#0  0x00007f3d6dfcd20d in poll () at /lib64/libc.so.6
#1  0x00007f3d6a19c314 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f3d6a19c42c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f3d6ede7ddb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f3d6ed9501b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f3d6ebd8eaa in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#8  0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 7 (Thread 0x7f3d2d284700 (LWP 26118)):
#0  0x00007f3d6dfc928d in read () at /lib64/libc.so.6
#1  0x00007f3d694b5073 in  () at /usr/lib64/tls/libnvidia-tls.so.384.98
#2  0x00007f3d6a1dc670 in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f3d6a19be49 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f3d6a19c2a8 in  () at /usr/lib64/libglib-2.0.so.0
#5  0x00007f3d6a19c42c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#6  0x00007f3d6ede7ddb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#7  0x00007f3d6ed9501b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#8  0x00007f3d6ebd8eaa in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#9  0x00007f3d5a190ed2 in  () at /usr/lib64/libQt5Quick.so.5
#10 0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#11 0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#12 0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 6 (Thread 0x7f3d2eb4a700 (LWP 26117)):
#0  0x00007f3d6dfcd20d in poll () at /lib64/libc.so.6
#1  0x00007f3d6a19c314 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f3d6a19c42c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f3d6ede7ddb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f3d6ed9501b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f3d6ebd8eaa in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f3d59d35468 in  () at /usr/lib64/libQt5Qml.so.5
#7  0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 5 (Thread 0x7f3d3e210700 (LWP 26116)):
#0  0x00007f3d6cfe60bf in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f3d6ebde3fb in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f3d6fed1019 in  () at /usr/lib64/libQt5Widgets.so.5
#3  0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#4  0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#5  0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 4 (Thread 0x7f3d3da0f700 (LWP 26114)):
#0  0x00007f3d6dfa605d in nanosleep () at /lib64/libc.so.6
#1  0x00007f3d6ede783d in  () at /usr/lib64/libQt5Core.so.5
#2  0x00007f3d6ebdc9f5 in QThread::msleep(unsigned long) () at /usr/lib64/libQt5Core.so.5
#3  0x00007f3d77b33a3a in KisTileDataSwapper::run() (this=0x7f3d78002d20 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder+64>) at /home/boud/dev/krita/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:97
#4  0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7f3d56a8b700 (LWP 26112)):
#0  0x00007f3d6cfe8b1a in __lll_unlock_wake () at /lib64/libpthread.so.0
#1  0x00007f3d6cfe49c1 in __pthread_mutex_unlock_usercnt () at /lib64/libpthread.so.0
#2  0x00007f3d6b149b65 in  () at /usr/X11R6/lib64/libGL.so.1
#3  0x00007f3d6b14f298 in  () at /usr/X11R6/lib64/libGL.so.1
#4  0x00007f3d694b5102 in  () at /usr/lib64/tls/libnvidia-tls.so.384.98
#5  0x00007f3d6a1dc670 in  () at /usr/lib64/libglib-2.0.so.0
#6  0x00007f3d6a19be49 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#7  0x00007f3d6a19c2a8 in  () at /usr/lib64/libglib-2.0.so.0
#8  0x00007f3d6a19c42c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#9  0x00007f3d6ede7ddb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#10 0x00007f3d6ed9501b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#11 0x00007f3d6ebd8eaa in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#12 0x00007f3d7256d7e5 in  () at /usr/lib64/libQt5DBus.so.5
#13 0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#14 0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#15 0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f3d612b1700 (LWP 26111)):
#0  0x00007f3d6dfcd20d in poll () at /lib64/libc.so.6
#1  0x00007f3d721313c2 in  () at /usr/lib64/libxcb.so.1
#2  0x00007f3d72132faf in xcb_wait_for_event () at /usr/lib64/libxcb.so.1
#3  0x00007f3d631d3969 in  () at /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007f3d6ebdd5cd in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f3d6cfe1744 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f3d6dfd5aad in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f3d7974a940 (LWP 26110)):
#0  0x00007f3d6cfe60bf in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f3d6ebde3fb in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f3d6ebd92d5 in QThreadPoolPrivate::waitForDone(int) () at /usr/lib64/libQt5Core.so.5
#3  0x00007f3d6ebd9941 in QThreadPool::waitForDone(int) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f3d6ebd997c in QThreadPool::~QThreadPool() () at /usr/lib64/libQt5Core.so.5
#5  0x00007f3d6ebd99b9 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007f3d6df23139 in __run_exit_handlers () at /lib64/libc.so.6
#7  0x00007f3d6df23185 in  () at /lib64/libc.so.6
#8  0x00007f3d708a9065 in _XDefaultIOError () at /usr/lib64/libX11.so.6
#9  0x00007f3d631cc9de in  () at /usr/lib64/libQt5XcbQpa.so.5
#10 0x00007f3d708a929e in _XIOError () at /usr/lib64/libX11.so.6
#11 0x00007f3d708a73ea in _XReply () at /usr/lib64/libX11.so.6
#12 0x00007f3d6b11bd43 in  () at /usr/X11R6/lib64/libGL.so.1
#13 0x00007f3d6b11cad7 in  () at /usr/X11R6/lib64/libGL.so.1
#14 0x00007f3d6028febf in  () at /usr/lib64/qt5/plugins/xcbglintegrations/libqxcb-glx-integration.so
#15 0x00007f3d6f392fe8 in QOpenGLContext::makeCurrent(QSurface*) () at /usr/lib64/libQt5Gui.so.5
#16 0x00007f3d6fd2bc5e in QOpenGLWidget::makeCurrent() () at /usr/lib64/libQt5Widgets.so.5
#17 0x00007f3d6fd2be15 in  () at /usr/lib64/libQt5Widgets.so.5
#18 0x00007f3d6fd0e369 in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#19 0x00007f3d6fcd2cbc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#20 0x00007f3d6fcd9a10 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#21 0x00007f3d7902cb67 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0xa2de5e0, event=0x7ffe6331d8a0) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:600
#22 0x00007f3d6ed96d25 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#23 0x00007f3d6fd0744a in QWidgetPrivate::sendPaintEvent(QRegion const&) () at /usr/lib64/libQt5Widgets.so.5
#24 0x00007f3d6fce0c3c in  () at /usr/lib64/libQt5Widgets.so.5
#25 0x00007f3d6fce2269 in  () at /usr/lib64/libQt5Widgets.so.5
#26 0x00007f3d6fcf977f in QWidgetPrivate::syncBackingStore() () at /usr/lib64/libQt5Widgets.so.5
#27 0x00007f3d6fd0df84 in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#28 0x00007f3d6fe1c34b in QMainWindow::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#29 0x00007f3d760f3167 in KMainWindow::event(QEvent*) (this=this@entry=0x107e3f00, ev=ev@entry=0x12d91f00) at /home/boud/dev/krita/libs/widgetutils/xmlgui/kmainwindow.cpp:780
#30 0x00007f3d76124159 in KXmlGuiWindow::event(QEvent*) (this=0x107e3f00, ev=0x12d91f00) at /home/boud/dev/krita/libs/widgetutils/xmlgui/kxmlguiwindow.cpp:125
#31 0x00007f3d6fcd2cbc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#32 0x00007f3d6fcd9a10 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#33 0x00007f3d7902cb67 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x107e3f00, event=0x12d91f00) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:600
#34 0x00007f3d6ed96d25 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#35 0x00007f3d6ed99303 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5
#36 0x00007f3d6ede8593 in  () at /usr/lib64/libQt5Core.so.5
#37 0x00007f3d6a19c134 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#38 0x00007f3d6a19c388 in  () at /usr/lib64/libglib-2.0.so.0
#39 0x00007f3d6a19c42c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#40 0x00007f3d6ede7dbc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#41 0x00007f3d6ed9501b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#42 0x00007f3d6ed9d5e4 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#43 0x0000000000405851 in main(int, char**) (argc=1, argv=<optimized out>) at /home/boud/dev/krita/krita/main.cc:306

Reported using DrKonqi
Comment 1 Dmitry Kazakov 2018-01-31 11:36:17 UTC
Git commit 69e2e9e1e607e20988602c9a71df98ee0ca51723 by Dmitry Kazakov.
Committed on 31/01/2018 at 11:36.
Pushed by dkazakov into branch 'master'.

Fix a crash when doing Merge Down on shape layers

The patch fixes two problems:

1) KisShapeLayerCanvas::repaint() should be called from the context
   of the sheduler's thread when the repaint is initiated from the
   scheduler. Otherwise, it might conflict even with copy-ctor
   of KisShapeLayer, which calls addShape(), which causes a concurrent
   update to be issued.

2) QTextLayout's in KoSvgTextShape should be accessed exactly from the
   same thread they were created in. Internally, they use static text
   items, which contain FreeType glyphs, which are unique for each(!)
   thread (Qt uses QThreadStorage for managing FreeType library).

NOTE:

There is still a big problem that vector tools may access the shapes
while the scheduler is working on them (vector tools are not ported to
strokes yet). This problem should be addressed of course, but not in
this patch.

M  +26   -11   libs/flake/text/KoSvgTextShape.cpp
M  +4    -0    libs/image/kis_layer_utils.cpp
M  +63   -2    libs/ui/flake/kis_shape_layer_canvas.cpp
M  +2    -0    libs/ui/flake/kis_shape_layer_canvas.h

https://commits.kde.org/krita/69e2e9e1e607e20988602c9a71df98ee0ca51723