Bug 395224

Summary: GDB Backtrace -- Crash when trying to edit a transform mask
Product: [Applications] krita Reporter: wolthera <griffinvalley>
Component: Tile managerAssignee: Dmitry Kazakov <dimula73>
Status: RESOLVED FIXED    
Severity: crash CC: dimula73, halla
Priority: NOR Keywords: regression, release_blocker
Version: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:

Description wolthera 2018-06-10 20:52:31 UTC
I hid and unhid the transform mask, and then tried to edit it with the transform tool.

I had, an hour earlier or so, when I had finished the initial transform on the mask, extended the canvas.

ASSERT (krita): "0 && "sanity check failed: the tile has already been removed!"" in file /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp, line 53

Thread 8500 "Thread (pooled)" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fff617fc700 (LWP 27643)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) thread apply all backtrace

Thread 8501 (Thread 0x7fff54ffc700 (LWP 27644)):
#0  0x00007ffff4325a49 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4c378c5 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff1f5935d in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x7fff7c0a8908, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:200
#3  0x00007ffff1f5935d in KisTiledExtentManager::extent() const (this=0x7fff7c0a8908) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:129
#4  0x00007ffff1f4fab9 in KisTiledDataManager::extent() const (this=<optimized out>) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.cc:666
#5  0x00007ffff1f4fadb in KisTiledDataManager::extent(int&, int&, int&, int&) const (this=<optimized out>, x=@0x7fff54ffb640: 2081276832, y=@0x7fff54ffb644: 32767, w=@0x7fff54ffb648: -954166784, h=@0x7fff54ffb64c: 1100989079) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.cc:660
#6  0x00007ffff20cc88a in KisDataManager::extent(int&, int&, int&, int&) const (h=@0x7fff54ffb64c: 1100989079, w=@0x7fff54ffb648: -954166784, y=@0x7fff54ffb644: 32767, x=@0x7fff54ffb640: 2081276832, this=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_datamanager.h:159
#7  0x00007ffff20cc88a in KisPaintDevice::Private::KisPaintDeviceStrategy::extent() const (this=0x7fff7c11bd10) at /home/wolthera/krita/src/libs/image/kis_paint_device_strategies.h:50
#8  0x00007ffff2030d72 in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:253
#9  0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
#10 0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#11 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#12 0x00007ffff20884b8 in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>) (this=<optimized out>, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer_projection_plane.cpp:47
#13 0x00007ffff20408e6 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) (this=0x55557349cdb8, walker=..., notifyClones=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:266
#14 0x00007ffff21a5b64 in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#15 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007fffee01a7fc in start_thread (arg=0x7fff54ffc700) at pthread_create.c:465
#18 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8500 (Thread 0x7fff617fc700 (LWP 27643)):
#0  0x00007ffff424e0bb in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff424ff5d in __GI_abort () at abort.c:90
#2  0x00007ffff4c2b107 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff64e49c9 in kis_assert_common(char const*, char const*, int, bool, bool) (assertion=assertion@entry=0x7ffff21a7390 "0 && \"sanity check failed: the tile has already been removed!\"", file=file@entry=0x7ffff21a7318 "/home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp", line=line@entry=53, throwException=throwException@entry=false, isIgnorable=isIgnorable@entry=false) at /home/wolthera/krita/src/libs/global/kis_assert.cpp:90
#4  0x00007ffff64e4ada in kis_assert_recoverable(char const*, char const*, int) (assertion=assertion@entry=0x7ffff21a7390 "0 && \"sanity check failed: the tile has already been removed!\"", file=file@entry=0x7ffff21a7318 "/home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp", line=line@entry=53) at /home/wolthera/krita/src/libs/global/kis_assert.cpp:103
#5  0x00007ffff1f59698 in (anonymous namespace)::removeTileFromMap (map=0x7fff7c0a8910, index=15) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:53
#6  0x00007ffff1f59698 in KisTiledExtentManager::notifyTileRemoved(int, int) (this=0x7fff7c0a8908, col=15, row=8) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:94
#7  0x00007ffff1f52aa3 in KisTiledDataManager::purge(QRect const&) (this=this@entry=0x7fff7c0a88d0, area=...) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.cc:297
#8  0x00007ffff20bc37e in KisDataManager::purge(QRect const&) (area=..., this=0x7fff7c0a88d0) at /home/wolthera/krita/src/libs/image/kis_datamanager.h:133
#9  0x00007ffff20bc37e in KisPaintDevice::purgeDefaultPixels() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1449
#10 0x00007ffff20f11f1 in KisTransformWorker::runPartial(QRect const&) (this=this@entry=0x7fff617fb4b0, processRect=...) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:410
#11 0x00007ffff20f19c4 in KisTransformWorker::run() (this=this@entry=0x7fff617fb4b0) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:237
#12 0x00007fffc08eac38 in KisTransformUtils::transformDevice(ToolTransformArgs const&, KisSharedPtr<KisPaintDevice>, KisProcessingVisitor::ProgressHelper*) (config=..., device=..., helper=helper@entry=0x7fff617fb670) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_utils.cpp:287
#13 0x00007fffc08baa20 in KisTransformMaskAdapter::transformDevice(KisSharedPtr<KisNode>, KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>) const (this=0x55556bde9580, node=..., s---Type <return> to continue, or q <return> to quit---
rc=..., dst=...) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_mask_adapter.cpp:71
#14 0x00007ffff2030d1a in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:252
#15 0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
#16 0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#17 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#18 0x00007ffff20884b8 in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>) (this=<optimized out>, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer_projection_plane.cpp:47
#19 0x00007ffff20408e6 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) (this=0x5555730ab5d8, walker=..., notifyClones=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:266
#20 0x00007ffff21a5b64 in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#21 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007fffee01a7fc in start_thread (arg=0x7fff617fc700) at pthread_create.c:465
#24 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8499 (Thread 0x7fff61ffd700 (LWP 27642)):
#0  0x00007ffff4325a49 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4c378c5 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff1f59bfa in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x7fff7c0a8908, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:200
#3  0x00007ffff1f59bfa in KisTiledExtentManager::notifyTileAdded(int, int) (this=0x7fff7c0a8908, col=7, row=6) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:76
#4  0x00007ffff1f650af in KisTiledDataManager::getTile(int, int, bool) (writable=<optimized out>, row=6, col=7, this=0x7fff7c0a88d0)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.h:116
#5  0x00007ffff1f650af in KisTiledDataManager::getTilesPair(int, int, bool, KisSharedPtr<KisTile>*, KisSharedPtr<KisTile>*) (oldTile=0x7fff88049b30, tile=0x7fff88049b28, writable=<optimized out>, row=6, col=7, this=0x7fff7c0a88d0) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.h:101
#6  0x00007ffff1f650af in KisVLineIterator2::fetchTileDataForCache(KisVLineIterator2::KisTileInfo&, int, int) (this=this@entry=0x7fff880f0510, kti=..., col=col@entry=7, row=row@entry=6)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_vline_iterator.cpp:208
#7  0x00007ffff1f65e30 in KisVLineIterator2::KisVLineIterator2(KisDataManager*, int, int, int, int, int, bool, KisIteratorCompleteListener*) (this=0x7fff880f0510, dataManager=0x7fff7c0a88d0, x=<optimized out>, y=<optimized out>, h=<optimized out>, offsetX=0, offsetY=0, writable=true, completeListener=0x7fff7c177fb0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_vline_iterator.cpp:67
#8  0x00007ffff20cbb9a in KisPaintDevice::Private::KisPaintDeviceStrategy::createVLineIteratorNG(int, int, int) (this=<optimized out>, x=502, y=205, w=826)
    at /home/wolthera/krita/src/libs/image/kis_paint_device_strategies.h:102
#9  0x00007ffff20bcedc in KisPaintDevice::createVLineIteratorNG(int, int, int) (this=this@entry=0x7fff7c0dc3a0, x=x@entry=502, y=y@entry=205, w=w@entry=826)
    at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1764
#10 0x00007ffff20f3f0f in tmp::createIterator<KisSharedPtr<KisVLineIteratorNG> >(KisSharedPtr<KisPaintDevice>, int, int, int) (len=826, lineNum=502, start=205, dev=...)
    at /home/wolthera/krita/src/libs/image/kis_filter_weights_applicator.h:43
#11 0x00007ffff20f3f0f in KisFilterWeightsApplicator::processLine<KisSharedPtr<KisVLineIteratorNG> >(KisFilterWeightsApplicator::LinePos, int, KisFilterWeightsBuffer*, double) (filterSupport=<optimized out>, buffer=0x7fff61ffbf20, line=502, srcLine=..., this=<synthetic pointer>, this=<optimized out>, this=<optimized out>, this=<optimized out>, this=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_filter_weights_applicator.h:262
#12 0x00007ffff20f3f0f in KisTransformWorker::transformPass<KisSharedPtr<KisVLineIteratorNG> >(KisPaintDevice*, KisPaintDevice*, double, double, double, KisFilterStrategy*, int) (this=this@entry=0x7fff61ffc4b0, src=0x7fff7c0dc3a0, dst=0x7fff7c0dc3a0, floatscale=floatscale@entry=1.4142135623730954, shear=shear@entry=-1.0000000000000004, dx=dx@entry=538.99999999999989, filterStrategy=0x5555683cf040, portion=portion@entry=50) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:219
#13 0x00007ffff20f11bb in KisTransformWorker::runPartial(QRect const&) (this=this@entry=0x7fff61ffc4b0, processRect=...) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:359
#14 0x00007ffff20f19c4 in KisTransformWorker::run() (this=this@entry=0x7fff61ffc4b0) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:237
#15 0x00007fffc08eac38 in KisTransformUtils::transformDevice(ToolTransformArgs const&, KisSharedPtr<KisPaintDevice>, KisProcessingVisitor::ProgressHelper*) (config=..., device=..., helper=helper@entry=0x7fff61ffc670) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_utils.cpp:287
---Type <return> to continue, or q <return> to quit---
#16 0x00007fffc08baa20 in KisTransformMaskAdapter::transformDevice(KisSharedPtr<KisNode>, KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>) const (this=0x55556bde9580, node=..., src=..., dst=...) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_mask_adapter.cpp:71
#17 0x00007ffff2030d1a in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:252
#18 0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
#19 0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#20 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#21 0x00007ffff20884b8 in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>) (this=<optimized out>, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer_projection_plane.cpp:47
#22 0x00007ffff20408e6 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) (this=0x5555731ada48, walker=..., notifyClones=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:266
#23 0x00007ffff21a5b64 in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#24 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#26 0x00007fffee01a7fc in start_thread (arg=0x7fff61ffd700) at pthread_create.c:465
#27 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8498 (Thread 0x7fff72794700 (LWP 27641)):
#0  0x00007ffff4325a49 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4c378c5 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff1f59bfa in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x7fff7c0a8908, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:200
#3  0x00007ffff1f59bfa in KisTiledExtentManager::notifyTileAdded(int, int) (this=0x7fff7c0a8908, col=15, row=11) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:76
#4  0x00007ffff1f650af in KisTiledDataManager::getTile(int, int, bool) (writable=<optimized out>, row=11, col=15, this=0x7fff7c0a88d0)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.h:116
#5  0x00007ffff1f650af in KisTiledDataManager::getTilesPair(int, int, bool, KisSharedPtr<KisTile>*, KisSharedPtr<KisTile>*) (oldTile=0x7fff78038d90, tile=0x7fff78038d88, writable=<optimized out>, row=11, col=15, this=0x7fff7c0a88d0) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.h:101
#6  0x00007ffff1f650af in KisVLineIterator2::fetchTileDataForCache(KisVLineIterator2::KisTileInfo&, int, int) (this=this@entry=0x7fff780f9740, kti=..., col=col@entry=15, row=row@entry=11)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_vline_iterator.cpp:208
#7  0x00007ffff1f65e30 in KisVLineIterator2::KisVLineIterator2(KisDataManager*, int, int, int, int, int, bool, KisIteratorCompleteListener*) (this=0x7fff780f9740, dataManager=0x7fff7c0a88d0, x=<optimized out>, y=<optimized out>, h=<optimized out>, offsetX=0, offsetY=0, writable=true, completeListener=0x7fff7c177fb0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_vline_iterator.cpp:67
#8  0x00007ffff20cbb9a in KisPaintDevice::Private::KisPaintDeviceStrategy::createVLineIteratorNG(int, int, int) (this=<optimized out>, x=976, y=448, w=290)
    at /home/wolthera/krita/src/libs/image/kis_paint_device_strategies.h:102
#9  0x00007ffff20bcedc in KisPaintDevice::createVLineIteratorNG(int, int, int) (this=this@entry=0x7fff7c0dc3a0, x=x@entry=976, y=y@entry=448, w=w@entry=290)
    at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1764
#10 0x00007ffff20f3d1f in tmp::createIterator<KisSharedPtr<KisVLineIteratorNG> >(KisSharedPtr<KisPaintDevice>, int, int, int) (len=<optimized out>, lineNum=976, start=<optimized out>, dev=...) at /home/wolthera/krita/src/libs/image/kis_filter_weights_applicator.h:43
#11 0x00007ffff20f3d1f in KisFilterWeightsApplicator::processLine<KisSharedPtr<KisVLineIteratorNG> >(KisFilterWeightsApplicator::LinePos, int, KisFilterWeightsBuffer*, double) (filterSupport=<optimized out>, buffer=0x7fff72792f20, line=976, srcLine=..., this=<synthetic pointer>, this=<optimized out>, this=<optimized out>, this=<optimized out>, this=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_filter_weights_applicator.h:235
#12 0x00007ffff20f3d1f in KisTransformWorker::transformPass<KisSharedPtr<KisVLineIteratorNG> >(KisPaintDevice*, KisPaintDevice*, double, double, double, KisFilterStrategy*, int) (this=this@entry=0x7fff727934b0, src=0x7fff7c0dc3a0, dst=0x7fff7c0dc3a0, floatscale=floatscale@entry=1.4142135623730954, shear=shear@entry=-1.0000000000000004, dx=dx@entry=538.99999999999989, filterStrategy=0x5555683cf040, portion=portion@entry=50) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:219
#13 0x00007ffff20f11bb in KisTransformWorker::runPartial(QRect const&) (this=this@entry=0x7fff727934b0, processRect=...) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:359
#14 0x00007ffff20f19c4 in KisTransformWorker::run() (this=this@entry=0x7fff727934b0) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:237
#15 0x00007fffc08eac38 in KisTransformUtils::transformDevice(ToolTransformArgs const&, KisSharedPtr<KisPaintDevice>, KisProcessingVisitor::ProgressHelper*) (config=..., device=..., helper=h---Type <return> to continue, or q <return> to quit---
elper@entry=0x7fff72793670) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_utils.cpp:287
#16 0x00007fffc08baa20 in KisTransformMaskAdapter::transformDevice(KisSharedPtr<KisNode>, KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>) const (this=0x55556bde9580, node=..., src=..., dst=...) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_mask_adapter.cpp:71
#17 0x00007ffff2030d1a in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:252
#18 0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
#19 0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#20 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#21 0x00007ffff20884b8 in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>) (this=<optimized out>, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer_projection_plane.cpp:47
#22 0x00007ffff20408e6 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) (this=0x555572a6aef8, walker=..., notifyClones=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:266
#23 0x00007ffff21a5b64 in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#24 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#26 0x00007fffee01a7fc in start_thread (arg=0x7fff72794700) at pthread_create.c:465
#27 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8497 (Thread 0x7fff6cb66700 (LWP 27640)):
#0  0x00007ffff4325a49 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4c378c5 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff1f591ec in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x7fff7c0a8908, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:200
#3  0x00007ffff1f591ec in KisTiledExtentManager::clear() (this=0x7fff7c0a8908) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:119
#4  0x00007ffff1f507b7 in KisTiledDataManager::clear() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.cc:434
#5  0x00007ffff20c48a8 in KisDataManager::clear() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_datamanager.h:208
#6  0x00007ffff20c48a8 in KisPaintDeviceData::prepareClone(KisPaintDeviceData const*, bool) (this=0x7fff7c177f00, srcData=srcData@entry=0x7fff9c024010, copyContent=copyContent@entry=false)
    at /home/wolthera/krita/src/libs/image/kis_paint_device_data.h:207
#7  0x00007ffff20cca17 in KisPaintDevice::Private::prepareCloneImpl(KisSharedPtr<KisPaintDevice>, KisPaintDeviceData*) (this=this@entry=0x7fff7c030990, src=..., srcData=0x7fff9c024010)
    at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:527
#8  0x00007ffff20bf9c7 in KisPaintDevice::Private::prepareClone(KisSharedPtr<KisPaintDevice>) (src=..., this=0x7fff7c030990) at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:194
#9  0x00007ffff20bf9c7 in KisPaintDevice::prepareClone(KisSharedPtr<KisPaintDevice>) (this=this@entry=0x7fff7c0dc3a0, src=...)
    at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1067
#10 0x00007ffff20bfa65 in KisPaintDevice::makeCloneFrom(KisSharedPtr<KisPaintDevice>, QRect const&) (this=this@entry=0x7fff7c0dc3a0, src=..., rect=...)
    at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1073
#11 0x00007fffc08ba9c9 in KisTransformMaskAdapter::transformDevice(KisSharedPtr<KisNode>, KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>) const (this=0x55556bde9580, node=..., src=..., dst=...) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_mask_adapter.cpp:68
#12 0x00007ffff2030d1a in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:252
#13 0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
#14 0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#15 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#16 0x00007ffff20884b8 in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>) (this=<optimized out>, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer_projection_plane.cpp:47
---Type <return> to continue, or q <return> to quit---
#17 0x00007ffff20408e6 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) (this=0x5555730adff8, walker=..., notifyClones=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:266
#18 0x00007ffff21a5b64 in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#19 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007fffee01a7fc in start_thread (arg=0x7fff6cb66700) at pthread_create.c:465
#22 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8496 (Thread 0x7fff60ffb700 (LWP 27639)):
#0  0x00007ffff4325a49 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4c378c5 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff1f5935d in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x7fff7c0a8908, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:200
#3  0x00007ffff1f5935d in KisTiledExtentManager::extent() const (this=0x7fff7c0a8908) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:129
#4  0x00007ffff1f4fab9 in KisTiledDataManager::extent() const (this=<optimized out>) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.cc:666
#5  0x00007ffff1f4fadb in KisTiledDataManager::extent(int&, int&, int&, int&) const (this=<optimized out>, x=@0x7fff60ffa640: 2081276832, y=@0x7fff60ffa644: 32767, w=@0x7fff60ffa648: -954166784, h=@0x7fff60ffa64c: 1100989079) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.cc:660
#6  0x00007ffff20cc88a in KisDataManager::extent(int&, int&, int&, int&) const (h=@0x7fff60ffa64c: 1100989079, w=@0x7fff60ffa648: -954166784, y=@0x7fff60ffa644: 32767, x=@0x7fff60ffa640: 2081276832, this=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_datamanager.h:159
#7  0x00007ffff20cc88a in KisPaintDevice::Private::KisPaintDeviceStrategy::extent() const (this=0x7fff7c11bd10) at /home/wolthera/krita/src/libs/image/kis_paint_device_strategies.h:50
#8  0x00007ffff2030d72 in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:253
#9  0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
#10 0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#11 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#12 0x00007ffff20884b8 in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>) (this=<optimized out>, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer_projection_plane.cpp:47
#13 0x00007ffff20408e6 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) (this=0x5555730a7c18, walker=..., notifyClones=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:266
#14 0x00007ffff21a5b64 in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#15 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007fffee01a7fc in start_thread (arg=0x7fff60ffb700) at pthread_create.c:465
#18 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8495 (Thread 0x7fff59ffe700 (LWP 27638)):
#0  0x00007ffff4325a49 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4c378c5 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff1f591ec in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x7fff7c0a8908, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:200
#3  0x00007ffff1f591ec in KisTiledExtentManager::clear() (this=0x7fff7c0a8908) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:119
#4  0x00007ffff1f507b7 in KisTiledDataManager::clear() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.cc:434
#5  0x00007ffff20bccad in KisDataManager::clear() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_datamanager.h:208
#6  0x00007ffff20bccad in KisPaintDevice::clear() (this=0x7fff7c0dc3a0) at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1468
#7  0x00007ffff2030cb0 in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:251
#8  0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
---Type <return> to continue, or q <return> to quit---
#9  0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#10 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#11 0x00007ffff20884b8 in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>) (this=<optimized out>, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer_projection_plane.cpp:47
#12 0x00007ffff20408e6 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) (this=0x55557368dad8, walker=..., notifyClones=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_async_merger.cpp:266
#13 0x00007ffff21a5b64 in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#14 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007fffee01a7fc in start_thread (arg=0x7fff59ffe700) at pthread_create.c:465
#17 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8494 (Thread 0x7fff597fd700 (LWP 27637)):
#0  0x00007ffff4325a49 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff4c378c5 in QBasicMutex::lockInternal() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff1f59bfa in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x7fff7c0a8908, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:200
#3  0x00007ffff1f59bfa in KisTiledExtentManager::notifyTileAdded(int, int) (this=0x7fff7c0a8908, col=9, row=8) at /home/wolthera/krita/src/libs/image/tiles3/KisTiledExtentManager.cpp:76
#4  0x00007ffff1f63a7f in KisTiledDataManager::getTile(int, int, bool) (writable=<optimized out>, row=8, col=9, this=0x7fff7c0a88d0)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.h:116
#5  0x00007ffff1f63a7f in KisTiledDataManager::getTilesPair(int, int, bool, KisSharedPtr<KisTile>*, KisSharedPtr<KisTile>*) (oldTile=0x7fff9c04fbd0, tile=0x7fff9c04fbc8, writable=<optimized out>, row=8, col=9, this=0x7fff7c0a88d0) at /home/wolthera/krita/src/libs/image/tiles3/kis_tiled_data_manager.h:101
#6  0x00007ffff1f63a7f in KisHLineIterator2::fetchTileDataForCache(KisHLineIterator2::KisTileInfo&, int, int) (this=this@entry=0x7fff9c120280, kti=..., col=col@entry=9, row=row@entry=8)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_hline_iterator.cpp:206
#7  0x00007ffff1f647c8 in KisHLineIterator2::KisHLineIterator2(KisDataManager*, int, int, int, int, int, bool, KisIteratorCompleteListener*) (this=0x7fff9c120280, dataManager=0x7fff7c0a88d0, x=586, y=<optimized out>, w=<optimized out>, offsetX=<optimized out>, offsetY=0, writable=true, competionListener=0x7fff7c177fb0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>)
    at /home/wolthera/krita/src/libs/image/tiles3/kis_hline_iterator.cpp:63
#8  0x00007ffff20cbd19 in KisPaintDevice::Private::KisPaintDeviceStrategy::createHLineIteratorNG(KisDataManager*, int, int, int, int, int) (this=this@entry=0x7fff7c11bd10, dataManager=0x7fff7c0a88d0, x=x@entry=586, y=y@entry=572, w=w@entry=502, offsetX=0, offsetY=0) at /home/wolthera/krita/src/libs/image/kis_paint_device_strategies.h:92
#9  0x00007ffff20bce3a in KisPaintDevice::createHLineIteratorNG(int, int, int) (this=this@entry=0x7fff7c0dc3a0, x=x@entry=586, y=y@entry=572, w=w@entry=502)
    at /home/wolthera/krita/src/libs/image/kis_paint_device.cc:1753
#10 0x00007ffff20f292f in tmp::createIterator<KisSharedPtr<KisHLineIteratorNG> >(KisSharedPtr<KisPaintDevice>, int, int, int) (len=<optimized out>, lineNum=572, start=<optimized out>, dev=...) at /home/wolthera/krita/src/libs/image/kis_filter_weights_applicator.h:37
#11 0x00007ffff20f292f in KisFilterWeightsApplicator::processLine<KisSharedPtr<KisHLineIteratorNG> >(KisFilterWeightsApplicator::LinePos, int, KisFilterWeightsBuffer*, double) (filterSupport=<optimized out>, buffer=0x7fff597fbe60, line=572, srcLine=..., this=<synthetic pointer>, this=<optimized out>, this=<optimized out>, this=<optimized out>, this=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_filter_weights_applicator.h:235
#12 0x00007ffff20f292f in KisTransformWorker::transformPass<KisSharedPtr<KisHLineIteratorNG> >(KisPaintDevice*, KisPaintDevice*, double, double, double, KisFilterStrategy*, int) (this=this@entry=0x7fff597fc3f0, src=0x7fff7c0dc3a0, dst=0x7fff7c0dc3a0, floatscale=0.70710678118654735, shear=0.70710678118654768, dx=-211, filterStrategy=0x5555683cf040, portion=portion@entry=50)
    at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:219
#13 0x00007ffff20f1188 in KisTransformWorker::runPartial(QRect const&) (this=this@entry=0x7fff597fc3f0, processRect=...) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:356
#14 0x00007ffff20f19c4 in KisTransformWorker::run() (this=this@entry=0x7fff597fc3f0) at /home/wolthera/krita/src/libs/image/kis_transform_worker.cc:237
#15 0x00007fffc08eac38 in KisTransformUtils::transformDevice(ToolTransformArgs const&, KisSharedPtr<KisPaintDevice>, KisProcessingVisitor::ProgressHelper*) (config=..., device=..., helper=helper@entry=0x7fff597fc5b0) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_utils.cpp:287
#16 0x00007fffc08baa20 in KisTransformMaskAdapter::transformDevice(KisSharedPtr<KisNode>, KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>) const (this=0x55556bde9580, node=..., src=..., dst=...) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_transform_mask_adapter.cpp:71
#17 0x00007ffff2030d1a in KisTransformMask::decorateRect(KisSharedPtr<KisPaintDevice>&, KisSharedPtr<KisPaintDevice>&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, src=..., dst=..., rc=..., maskPos=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:252
#18 0x00007ffff209e95d in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const (this=0x555570aeb3a0, projection=..., applyRect=..., need---Type <return> to continue, or q <return> to quit---
Rect=..., maskPos=maskPos@entry=KisNode::N_FILTHY) at /home/wolthera/krita/src/libs/image/kis_mask.cc:302
#19 0x00007ffff2085137 in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const (this=this@entry=0x55556f9abb00, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...) at /home/wolthera/krita/src/libs/image/kis_layer.cc:689
#20 0x00007ffff2085706 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>) (this=this@entry=0x55556f9abb00, rect=..., filthyNode=...)
    at /home/wolthera/krita/src/libs/image/kis_layer.cc:721
#21 0x00007ffff2030a0d in KisTransformMask::recaclulateStaticImage() (this=0x555570aeb3a0) at /home/wolthera/krita/src/libs/image/kis_transform_mask.cpp:219
#22 0x00007ffff20346c4 in KisRecalculateTransformMaskJob::run() (this=this@entry=0x7fff597fcb30) at /home/wolthera/krita/src/libs/image/kis_recalculate_transform_mask_job.cpp:49
#23 0x00007fffc08ebb96 in KisModifyTransformMaskCommand::updateMask(bool) (this=this@entry=0x7fff9c08dc30, isHidden=<optimized out>)
    at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_modify_transform_mask_command.cpp:83
#24 0x00007fffc08ebfa6 in KisModifyTransformMaskCommand::undo() (this=0x7fff9c08dc30) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_modify_transform_mask_command.cpp:69
#25 0x00007ffff2049daa in KisStrokeStrategyUndoCommandBased::doStrokeCallback(KisStrokeJobData*) (this=0x555570aecfc0, data=<optimized out>)
    at /home/wolthera/krita/src/libs/image/kis_stroke_strategy_undo_command_based.cpp:118
#26 0x00007ffff21a5a5b in non-virtual thunk to KisUpdateJobItem::run() () at /home/wolthera/krita/inst/lib/x86_64-linux-gnu/libkritaimage.so.17
#27 0x00007ffff4c3c581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007fffee01a7fc in start_thread (arg=0x7fff597fd700) at pthread_create.c:465
#30 0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7fffbc671700 (LWP 10541)):
#0  0x00007ffff431f951 in __GI___poll (fds=0x7fffb4000b10, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffec9f9169 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffec9f927c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff4e7647f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4e1be3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4c3b3ca in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffd9d32f45 in  () at /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
#7  0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffee01a7fc in start_thread (arg=0x7fffbc671700) at pthread_create.c:465
#9  0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7fffbbe70700 (LWP 10507)):
#0  0x00007fffee021072 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555565a23fc0) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee021072 in __pthread_cond_wait_common (abstime=0x0, mutex=0x555565a23f70, cond=0x555565a23f98) at pthread_cond_wait.c:502
#2  0x00007fffee021072 in __pthread_cond_wait (cond=0x555565a23f98, mutex=0x555565a23f70) at pthread_cond_wait.c:655
#3  0x00007ffff4c416cb in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4c39f83 in QSemaphore::tryAcquire(int, int) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff1f6b093 in KisTileDataSwapper::waitForWork() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#6  0x00007ffff1f6b2ba in KisTileDataSwapper::run() (this=0x7ffff2465fa0 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder+64>)
    at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#7  0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffee01a7fc in start_thread (arg=0x7fffbbe70700) at pthread_create.c:465
#9  0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7fffd4430700 (LWP 10333)):
#0  0x00007ffff431f951 in __GI___poll (fds=0x7fffcc018ed0, nfds=4, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffec9f9169 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffec9f927c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff4e7647f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4e1be3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
---Type <return> to continue, or q <return> to quit---
#5  0x00007ffff4c3b3ca in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffee247e45 in  () at /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffee01a7fc in start_thread (arg=0x7fffd4430700) at pthread_create.c:465
#9  0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fffe0f72700 (LWP 10328)):
#0  0x00007ffff431f951 in __GI___poll (fds=0x7fffe0f71bb8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff26c5747 in  () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007ffff26c753a in xcb_wait_for_event () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007fffe32bcf09 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007ffff4c4029d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007fffee01a7fc in start_thread (arg=0x7fffe0f72700) at pthread_create.c:465
#6  0x00007ffff432bb5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7ffff7fa2440 (LWP 10218)):
#0  0x00007fffee021072 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555567aae034) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee021072 in __pthread_cond_wait_common (abstime=0x0, mutex=0x555567aadfe0, cond=0x555567aae008) at pthread_cond_wait.c:502
#2  0x00007fffee021072 in __pthread_cond_wait (cond=0x555567aae008, mutex=0x555567aadfe0) at pthread_cond_wait.c:655
#3  0x00007ffff4c416cb in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff4c3bb42 in QThreadPoolPrivate::waitForDone(int) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff4c3c231 in QThreadPool::waitForDone(int) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff2059e9d in KisUpdateScheduler::waitForDone() (this=0x55556744c1c8) at /home/wolthera/krita/src/libs/image/kis_update_scheduler.cpp:360
#7  0x00007ffff206beaa in KisImage::waitForDone() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/kis_image.cc:1264

#8  0x00007fffc08c09d2 in KisToolTransform::tryFetchArgsFromCommandAndUndo(ToolTransformArgs*, ToolTransformArgs::TransformMode, KisSharedPtr<KisNode>) (this=this@entry=0x5555683e3010, args=args@entry=0x7fffffffcf40, mode=mode@entry=ToolTransformArgs::FREE_TRANSFORM, currentNode=...) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_tool_transform.cc:673
#9  0x00007fffc08c48d9 in KisToolTransform::startStroke(ToolTransformArgs::TransformMode, bool) (this=this@entry=0x5555683e3010, mode=ToolTransformArgs::FREE_TRANSFORM, forceReset=forceReset@entry=false) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_tool_transform.cc:865
#10 0x00007fffc08c594d in KisToolTransform::beginActionImpl(KoPointerEvent*, bool, KisTool::AlternateAction) (this=0x5555683e3010, event=0x7fffffffd100, usePrimaryAction=<optimized out>, action=KisTool::NONE) at /home/wolthera/krita/src/plugins/tools/tool_transform2/kis_tool_transform.cc:280
#11 0x00007ffff71403a9 in KisToolProxy::forwardToTool(KisToolProxy::ActionState, KisTool::ToolAction, QEvent*, QPointF const&) (this=this@entry=0x55556744fc88, state=state@entry=KisToolProxy::BEGIN, action=action@entry=KisTool::Primary, event=event@entry=0x7fffffffd8e0, docPoint=...) at /home/wolthera/krita/src/libs/ui/canvas/kis_tool_proxy.cpp:167

#12 0x00007ffff71405d6 in KisToolProxy::forwardEvent(KisToolProxy::ActionState, KisTool::ToolAction, QEvent*, QEvent*) (this=0x55556744fc88, state=state@entry=KisToolProxy::BEGIN, action=action@entry=KisTool::Primary, event=event@entry=0x7fffffffd8e0, originalEvent=originalEvent@entry=0x7fffffffd8e0) at /home/wolthera/krita/src/libs/ui/canvas/kis_tool_proxy.cpp:138

#13 0x00007ffff7400925 in KisToolInvocationAction::begin(int, QEvent*) (this=this@entry=0x55556394f2d0, shortcut=<optimized out>, event=event@entry=0x7fffffffd8e0)
    at /home/wolthera/krita/src/libs/ui/input/kis_tool_invocation_action.cpp:108

#14 0x00007ffff740c417 in KisShortcutMatcher::tryRunReadyShortcut(Qt::MouseButton, QEvent*) (this=this@entry=0x5555650aea90, button=<optimized out>, event=event@entry=0x7fffffffd8e0)
    at /home/wolthera/krita/src/libs/ui/input/kis_shortcut_matcher.cpp:495

#15 0x00007ffff740cbc7 in KisShortcutMatcher::buttonPressed(Qt::MouseButton, QEvent*) (this=0x5555650aea90, button=<optimized out>, event=event@entry=0x7fffffffd8e0)
    at /home/wolthera/krita/src/libs/ui/input/kis_shortcut_matcher.cpp:209

#16 0x00007ffff73f3364 in KisInputManager::eventFilterImpl(QEvent*) (this=0x55556506e130, event=0x7fffffffd8e0) at /home/wolthera/krita/src/libs/ui/input/kis_input_manager.cpp:271
#17 0x00007ffff4e1dacc in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff5b98445 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff5ba028f in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5

#20 0x00007ffff7467cb7 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55556834b930, event=0x7fffffffd8e0)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:627
#21 0x00007ffff4e1dde8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff5b9f262 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
    at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
---Type <return> to continue, or q <return> to quit---
#23 0x00007ffff5bf394b in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff5bf5fba in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff5b9846c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff5b9fd34 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5

#27 0x00007ffff7467cb7 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55556391dd50, event=0x7fffffffdd50)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:627
#28 0x00007ffff4e1dde8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007ffff53dcf43 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#30 0x00007ffff53dea25 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#31 0x00007ffff53b6cab in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#32 0x00007fffe331f5a0 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#33 0x00007fffec9f8fb7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007fffec9f91f0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007fffec9f927c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007ffff4e7647f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#37 0x00007ffff4e1be3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007ffff4e24da4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#39 0x0000555555e8c745 in main(int, char**) (argc=<optimized out>, argv=0x7fffffffe3c8) at /home/wolthera/krita/src/krita/main.cc:395
(gdb) 
(gdb) 
(gdb) 
(gdb) 
(gdb) 
(gdb) 
(gdb)
Comment 1 wolthera 2018-06-11 09:19:39 UTC
I've had this crash once more, but again, it happens randomly as far as I can tell.
Comment 2 Dmitry Kazakov 2018-06-11 11:57:40 UTC
Yes, I can reproduce, that you very much for the steps! :)
Comment 3 Dmitry Kazakov 2018-06-12 08:38:56 UTC
Git commit 3ecf377c522a1f5b8b8311d400d139cab30e47fd by Dmitry Kazakov.
Committed on 12/06/2018 at 08:19.
Pushed by dkazakov into branch 'master'.

Fix crash when editing transform mask too actively

1) Now KisSpontaneousJob has an 'exclusive' property, which guarantees
   that now other update jobs are not running in parallel

2) KisModifyTransformMaskCommand mush not call m_mask->recaclulateStaticImage()
   directly, it doesn't guarantee exclusive access to a paint device, which
   can cause a crash (because the transform worker calls KisPaintDevice::purge(),
   which demands exclusive access).

M  +25   -7    libs/image/kis_recalculate_transform_mask_job.cpp
C  +9    -16   libs/image/kis_spontaneous_job.cpp [from: libs/image/kis_spontaneous_job.h - 054% similarity]
M  +11   -0    libs/image/kis_spontaneous_job.h
M  +12   -0    libs/image/kis_transform_mask.cpp
M  +7    -0    libs/image/kis_transform_mask.h
M  +1    -1    libs/image/kis_update_job_item.h
M  +2    -30   plugins/tools/tool_transform2/kis_modify_transform_mask_command.cpp
M  +0    -3    plugins/tools/tool_transform2/kis_modify_transform_mask_command.h

https://commits.kde.org/krita/3ecf377c522a1f5b8b8311d400d139cab30e47fd
Comment 4 Halla Rempt 2018-06-13 11:51:37 UTC
Git commit 45dc6137bf395cbb9e860973645f475d2e05d12a by Boudewijn Rempt, on behalf of Dmitry Kazakov.
Committed on 13/06/2018 at 11:48.
Pushed by rempt into tag 'v4.0.4'.

Fix crash when editing transform mask too actively

1) Now KisSpontaneousJob has an 'exclusive' property, which guarantees
   that now other update jobs are not running in parallel

2) KisModifyTransformMaskCommand mush not call m_mask->recaclulateStaticImage()
   directly, it doesn't guarantee exclusive access to a paint device, which
   can cause a crash (because the transform worker calls KisPaintDevice::purge(),
   which demands exclusive access).
(cherry picked from commit 3ecf377c522a1f5b8b8311d400d139cab30e47fd)

M  +25   -7    libs/image/kis_recalculate_transform_mask_job.cpp
C  +9    -16   libs/image/kis_spontaneous_job.cpp [from: libs/image/kis_spontaneous_job.h - 054% similarity]
M  +11   -0    libs/image/kis_spontaneous_job.h
M  +12   -0    libs/image/kis_transform_mask.cpp
M  +7    -0    libs/image/kis_transform_mask.h
M  +1    -1    libs/image/kis_update_job_item.h
M  +2    -30   plugins/tools/tool_transform2/kis_modify_transform_mask_command.cpp
M  +0    -3    plugins/tools/tool_transform2/kis_modify_transform_mask_command.h

https://commits.kde.org/krita/45dc6137bf395cbb9e860973645f475d2e05d12a
Comment 5 Andrey 2018-06-26 15:10:54 UTC
Git commit ee35a0584194c3071865b8855855196896dff308 by Andrey Kamakin, on behalf of Dmitry Kazakov.
Committed on 26/06/2018 at 14:18.
Pushed by akamakin into branch 'akamakin/T8628-multithreading-optimization'.

Fix crash when editing transform mask too actively

1) Now KisSpontaneousJob has an 'exclusive' property, which guarantees
   that now other update jobs are not running in parallel

2) KisModifyTransformMaskCommand mush not call m_mask->recaclulateStaticImage()
   directly, it doesn't guarantee exclusive access to a paint device, which
   can cause a crash (because the transform worker calls KisPaintDevice::purge(),
   which demands exclusive access).

M  +25   -7    libs/image/kis_recalculate_transform_mask_job.cpp
C  +9    -16   libs/image/kis_spontaneous_job.cpp [from: libs/image/kis_spontaneous_job.h - 054% similarity]
M  +11   -0    libs/image/kis_spontaneous_job.h
M  +12   -0    libs/image/kis_transform_mask.cpp
M  +7    -0    libs/image/kis_transform_mask.h
M  +1    -1    libs/image/kis_update_job_item.h
M  +2    -30   plugins/tools/tool_transform2/kis_modify_transform_mask_command.cpp
M  +0    -3    plugins/tools/tool_transform2/kis_modify_transform_mask_command.h

https://commits.kde.org/krita/ee35a0584194c3071865b8855855196896dff308