Bug 410776

Summary: Regular crashes
Product: [Applications] krita Reporter: adam
Component: GeneralAssignee: Dmitry Kazakov <dimula73>
Status: RESOLVED FIXED    
Severity: crash CC: adam, dimula73, griffinvalley, halla, manuel.snudl.zeidler
Priority: NOR Keywords: drkonqi
Version: 4.2.5   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: krita.log

Description adam 2019-08-10 00:38:53 UTC
Application: krita (4.2.5)

Qt Version: 5.13.0
Frameworks Version: 5.60.0
Operating System: Linux 5.2.6-arch1-1-ARCH x86_64
Distribution (Platform): Archlinux Packages

-- Information about the crash:
- What I was doing when the application crashed: working on a duplicated layer, converted to CMYK, crashed in the moment converting back to RGB. I have also experienced this sporatically while doing other things, but only and always while working on a duplicated layer. If I do not duplicate any layers while working in Krita the crash does not occur, it does not seem to be affected by creating a new empty layer. I've was able to reproduce the issue on another Arch Linux workstation.

The crash can be reproduced every time.

-- Backtrace:
Application: Krita (krita), signal: Aborted
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f3972bf1800 (LWP 11987))]

Thread 9 (Thread 0x7f393b7fd700 (LWP 12647)):
[KCrash Handler]
#5  0x00007f3978d6b755 in raise () at /usr/lib/libc.so.6
#6  0x00007f3978d56851 in abort () at /usr/lib/libc.so.6
#7  0x00007f397917d8b6 in  () at /usr/lib/libQt5Core.so.5
#8  0x00007f397a2e3faf in  () at /usr/lib/libkritaglobal.so.18
#9  0x00007f397a603999 in KisTiledExtentManager::notifyTileRemoved(int, int) () at /usr/lib/libkritaimage.so.18
#10 0x00007f397a5f9c33 in KisTiledDataManager::clear(QRect, unsigned char const*) () at /usr/lib/libkritaimage.so.18
#11 0x00007f397a7af0af in  () at /usr/lib/libkritaimage.so.18
#12 0x00007f397a7049e0 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool) () at /usr/lib/libkritaimage.so.18
#13 0x00007f397a5ee0d5 in  () at /usr/lib/libkritaimage.so.18
#14 0x00007f39791bb912 in  () at /usr/lib/libQt5Core.so.5
#15 0x00007f39791b8520 in  () at /usr/lib/libQt5Core.so.5
#16 0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#17 0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 8 (Thread 0x7f3947b2c700 (LWP 12011)):
#0  0x00007ffddc7f25fe in  ()
#1  0x00007f3978e3aee3 in clock_gettime () at /usr/lib/libc.so.6
#2  0x00007f39793dd2a2 in  () at /usr/lib/libQt5Core.so.5
#3  0x00007f39793dbb8a in QTimerInfoList::updateCurrentTime() () at /usr/lib/libQt5Core.so.5
#4  0x00007f39793dc156 in QTimerInfoList::timerWait(timespec&) () at /usr/lib/libQt5Core.so.5
#5  0x00007f39793dd6ff in  () at /usr/lib/libQt5Core.so.5
#6  0x00007f3976071360 in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0
#7  0x00007f39760719a6 in  () at /usr/lib/libglib-2.0.so.0
#8  0x00007f3976071b51 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#9  0x00007f39793dd9bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#10 0x00007f39793845ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#11 0x00007f39791b72f5 in QThread::exec() () at /usr/lib/libQt5Core.so.5
#12 0x00007f3957c6f61b in  () at /usr/lib/libQt5Quick.so.5
#13 0x00007f39791b8520 in  () at /usr/lib/libQt5Core.so.5
#14 0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#15 0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 7 (Thread 0x7f3957331700 (LWP 12010)):
#0  0x00007ffddc7f25fe in  ()
#1  0x00007f3978e3aee3 in clock_gettime () at /usr/lib/libc.so.6
#2  0x00007f39793dd2a2 in  () at /usr/lib/libQt5Core.so.5
#3  0x00007f39793dbb8a in QTimerInfoList::updateCurrentTime() () at /usr/lib/libQt5Core.so.5
#4  0x00007f39793dc156 in QTimerInfoList::timerWait(timespec&) () at /usr/lib/libQt5Core.so.5
#5  0x00007f39793dd6ff in  () at /usr/lib/libQt5Core.so.5
#6  0x00007f3976071360 in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0
#7  0x00007f39760719a6 in  () at /usr/lib/libglib-2.0.so.0
#8  0x00007f3976071b51 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#9  0x00007f39793dd9bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#10 0x00007f39793845ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#11 0x00007f39791b72f5 in QThread::exec() () at /usr/lib/libQt5Core.so.5
#12 0x00007f396064e8f9 in  () at /usr/lib/libQt5Qml.so.5
#13 0x00007f39791b8520 in  () at /usr/lib/libQt5Core.so.5
#14 0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#15 0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 6 (Thread 0x7f3956b30700 (LWP 12006)):
#0  0x00007f3978e27e3d in syscall () at /usr/lib/libc.so.6
#1  0x00007f39791babc1 in  () at /usr/lib/libQt5Core.so.5
#2  0x00007f39791baa26 in QSemaphore::tryAcquire(int, int) () at /usr/lib/libQt5Core.so.5
#3  0x00007f397a61643d in KisTileDataSwapper::run() () at /usr/lib/libkritaimage.so.18
#4  0x00007f39791b8520 in  () at /usr/lib/libQt5Core.so.5
#5  0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#6  0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 5 (Thread 0x7f3957b32700 (LWP 12004)):
#0  0x00007ffddc7f25fe in  ()
#1  0x00007f3978e3aee3 in clock_gettime () at /usr/lib/libc.so.6
#2  0x00007f39793dd2a2 in  () at /usr/lib/libQt5Core.so.5
#3  0x00007f39793dbb8a in QTimerInfoList::updateCurrentTime() () at /usr/lib/libQt5Core.so.5
#4  0x00007f39793dc156 in QTimerInfoList::timerWait(timespec&) () at /usr/lib/libQt5Core.so.5
#5  0x00007f39793dd6ff in  () at /usr/lib/libQt5Core.so.5
#6  0x00007f3976071360 in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0
#7  0x00007f39760719a6 in  () at /usr/lib/libglib-2.0.so.0
#8  0x00007f3976071b51 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#9  0x00007f39793dd9bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#10 0x00007f39793845ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#11 0x00007f39791b72f5 in QThread::exec() () at /usr/lib/libQt5Core.so.5
#12 0x00007f39791b8520 in  () at /usr/lib/libQt5Core.so.5
#13 0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#14 0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 4 (Thread 0x7f3963dfc700 (LWP 11996)):
#0  0x00007ffddc7f25fe in  ()
#1  0x00007f3978e3aee3 in clock_gettime () at /usr/lib/libc.so.6
#2  0x00007f39793dd2a2 in  () at /usr/lib/libQt5Core.so.5
#3  0x00007f39793dbb8a in QTimerInfoList::updateCurrentTime() () at /usr/lib/libQt5Core.so.5
#4  0x00007f39793dc156 in QTimerInfoList::timerWait(timespec&) () at /usr/lib/libQt5Core.so.5
#5  0x00007f39793dd6ff in  () at /usr/lib/libQt5Core.so.5
#6  0x00007f3976071360 in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0
#7  0x00007f39760719a6 in  () at /usr/lib/libglib-2.0.so.0
#8  0x00007f3976071b51 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#9  0x00007f39793dd9bc in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#10 0x00007f39793845ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#11 0x00007f39791b72f5 in QThread::exec() () at /usr/lib/libQt5Core.so.5
#12 0x00007f3976bb4b37 in  () at /usr/lib/libQt5DBus.so.5
#13 0x00007f39791b8520 in  () at /usr/lib/libQt5Core.so.5
#14 0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#15 0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 3 (Thread 0x7f3968d2d700 (LWP 11995)):
#0  0x00007f3978e1e18c in read () at /usr/lib/libc.so.6
#1  0x00007f39760229f0 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f3976070311 in g_main_context_check () at /usr/lib/libglib-2.0.so.0
#3  0x00007f3976071a28 in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007f3976072a63 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#5  0x00007f39701cda38 in  () at /usr/lib/libgio-2.0.so.0
#6  0x00007f397604ea31 in  () at /usr/lib/libglib-2.0.so.0
#7  0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#8  0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7f396952e700 (LWP 11994)):
#0  0x00007f3978e22667 in poll () at /usr/lib/libc.so.6
#1  0x00007f3976071a80 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f3976071b51 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#3  0x00007f3976071ba2 in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007f397604ea31 in  () at /usr/lib/libglib-2.0.so.0
#5  0x00007f3976b8557f in start_thread () at /usr/lib/libpthread.so.0
#6  0x00007f3978e2d0e3 in clone () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7f3972bf1800 (LWP 11987)):
#0  0x00007f3976b8b415 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f39791be5a0 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt5Core.so.5
#2  0x00007f39791bb008 in QThreadPoolPrivate::waitForDone(QDeadlineTimer const&) () at /usr/lib/libQt5Core.so.5
#3  0x00007f39791bb3e5 in QThreadPoolPrivate::waitForDone(int) () at /usr/lib/libQt5Core.so.5
#4  0x00007f397a71dbaf in KisUpdateScheduler::fullRefresh(KisSharedPtr<KisNode>, QRect const&, QRect const&) () at /usr/lib/libkritaimage.so.18
#5  0x00007f397a72ee86 in KisImage::refreshGraph(KisSharedPtr<KisNode>, QRect const&, QRect const&) () at /usr/lib/libkritaimage.so.18
#6  0x00007f397a72ef90 in KisImage::refreshGraph(KisSharedPtr<KisNode>) () at /usr/lib/libkritaimage.so.18
#7  0x00007f397a656ba2 in  () at /usr/lib/libkritaimage.so.18
#8  0x00007f3977f5a787 in KUndo2Command::redoMergedCommands() () at /usr/lib/libkritacommand.so.18
#9  0x00007f3977f5b465 in KUndo2QStack::push(KUndo2Command*) () at /usr/lib/libkritacommand.so.18
#10 0x00007f397a7f8c36 in KisLegacyUndoAdapter::addCommand(KUndo2Command*) () at /usr/lib/libkritaimage.so.18
#11 0x00007f397a7371a2 in KisImage::convertImageColorSpace(KoColorSpace const*, KoColorConversionTransformation::Intent, QFlags<KoColorConversionTransformation::ConversionFlag>) () at /usr/lib/libkritaimage.so.18
#12 0x00007f3960166997 in  () at /usr/lib/kritaplugins/kritacolorspaceconversion.so
#13 0x00007f39793b1a11 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5
#14 0x00007f3979d34e93 in QAction::triggered(bool) () at /usr/lib/libQt5Widgets.so.5
#15 0x00007f3979d37624 in QAction::activate(QAction::ActionEvent) () at /usr/lib/libQt5Widgets.so.5
#16 0x00007f3979ec28b3 in  () at /usr/lib/libQt5Widgets.so.5
#17 0x00007f3979eca0ec in  () at /usr/lib/libQt5Widgets.so.5
#18 0x00007f3979ecb133 in QMenu::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/libQt5Widgets.so.5
#19 0x00007f3979d7ecb6 in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#20 0x00007f3979ecd78c in QMenu::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#21 0x00007f3979d3b4d5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#22 0x00007f3979d44c6c in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#23 0x00007f397b850afa in KisApplication::notify(QObject*, QEvent*) () at /usr/lib/libkritaui.so.18
#24 0x00007f39793859c2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#25 0x00007f3979d43d4b in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#26 0x00007f3979d9bba8 in  () at /usr/lib/libQt5Widgets.so.5
#27 0x00007f3979d9e154 in  () at /usr/lib/libQt5Widgets.so.5
#28 0x00007f3979d3b4d5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#29 0x00007f3979d44a21 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#30 0x00007f397b850afa in KisApplication::notify(QObject*, QEvent*) () at /usr/lib/libkritaui.so.18
#31 0x00007f39793859c2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#32 0x00007f3979721789 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/libQt5Gui.so.5
#33 0x00007f397972305b in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/libQt5Gui.so.5
#34 0x00007f39796fb37c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Gui.so.5
#35 0x00007f3972a82fec in  () at /usr/lib/libQt5XcbQpa.so.5
#36 0x00007f397606fcf4 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#37 0x00007f3976071b11 in  () at /usr/lib/libglib-2.0.so.0
#38 0x00007f3976071b51 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#39 0x00007f39793dd9a3 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#40 0x00007f39793845ec in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#41 0x00007f397938c326 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#42 0x000055d3b4420b99 in main ()
[Inferior 1 (process 11987) detached]

Reported using DrKonqi
Comment 1 Halla Rempt 2019-08-10 08:39:00 UTC
Arch is always kind of a difficult system. I cannot reproduce the issue, and the crash itself seems to happen inside Qt. If you cannot reproduce it on another system, then I do suspect it's an issue with the system, and not a bug in Krita.

If you can consistently reproduce, please:

* install the debug symbols for Krita and Qt so the backtrace is more useful
* append the ~/.local/share/krita.log file as an attachment to this bug report.
Comment 2 adam 2019-08-14 01:26:19 UTC
Created attachment 122107 [details]
krita.log
Comment 3 adam 2019-08-14 02:26:51 UTC
Comment on attachment 122107 [details]
krita.log

This is consistent for the error between the two Arch systems I tested on. I also set up a KDE Neon system to test but was not able to reproduce the issue there.
Comment 4 Bug Janitor Service 2019-08-14 04:33:12 UTC
Thanks for your comment!

Automatically switching the status of this bug to REPORTED so that the KDE team
knows that the bug is ready to get confirmed.

In the future you may also do this yourself when providing needed information.
Comment 5 wolthera 2019-08-14 12:44:08 UTC
Offending line seems to be
"13 Aug 2019 20:22:52 -0500: ASSERT (krita): "m_buffer[currentIndex].loadAcquire() > 0" in file /build/krita/src/krita-4.2.5/libs/image/tiles3/KisTiledExtentManager.cpp, line 87"

which is here: https://invent.kde.org/kde/krita/blob/master/libs/image/tiles3/KisTiledExtentManager.cpp#L87

Given that this particular assert "Does nothing in case of a failure. Just continues execution.", I suspect the arch package is build with debug on(as in, a developer build) which might make a big difference in reproducability.
Comment 6 wolthera 2019-08-14 12:48:48 UTC
I still can't seem to reproduce this on KDE Neon, despite having a debug+asan build...

Maybe qt 5.13 is to blame???

------------------------
Krita

 Version: 4.3.0-prealpha (git 709ac34)
 Languages: en_US, en_GB, nl
 Hidpi: true

Qt

  Version (compiled): 5.12.3
  Version (loaded): 5.12.3

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 4.15.0-55-generic
  Pretty Productname: KDE neon User Edition 5.16
  Product Type: neon
  Product Version: 18.04


Hardware Information

  GPU Acceleration: auto
  Memory: 7725 Mb
  Number of Cores: 8
  Swap Location: /tmp
Comment 7 Dmitry Kazakov 2019-09-09 07:34:50 UTC
It might also be related that the reported tests 4.2 build. Master-branch has a few fixed in the tile data manager (which are "not related" though)
Comment 8 Dmitry Kazakov 2019-09-10 08:54:16 UTC
Hi, Adam!

Does that .tiff image that you are importing have any private data? If not, could you share it with me? (you can send it to my email, if it is not-for-sharing: dimula73 at gmail dot com).

If you cannot share if, could you tell the exact size of the image, its color model and the number of layers?
Comment 9 Dmitry Kazakov 2019-09-10 08:55:27 UTC
I'll mark the bug as waiting-for-info for now.
Comment 10 adam 2019-09-11 01:26:10 UTC
Greetings Dmitry,
The file is a bit too large to attach (4.1MB), here it is in Dropbox if that is alright: https://www.dropbox.com/s/7v3unu7cyh8h5al/MDS00048.tiff?dl=0

If it helps here is a brief video where I go back through my steps: https://youtu.be/plZN16_3md4

I click the draw area once while the colorspace is being converted. If I click while it is converting to CMYK I can make it crash immediately 19/20 times, the 1/20 it will crash later while I'm using the brush tool or converting the image space back to RGB. If I don't click it is maybe 50/50 making through the color conversion.

Original file is 1 layer. Krita doesn't crash if I don't duplicate the layer.

exiftool:
ExifTool Version Number         : 11.50
File Name                       : MDS00048.tiff
Directory                       : .
File Size                       : 3.9 MB
File Modification Date/Time     : 2019:08:07 19:03:55-05:00
File Access Date/Time           : 2019:09:10 19:24:44-05:00
File Inode Change Date/Time     : 2019:08:07 19:15:32-05:00
File Permissions                : rwxr-xr-x
File Type                       : TIFF
File Type Extension             : tif
MIME Type                       : image/tiff
Exif Byte Order                 : Little-endian (Intel, II)
Subfile Type                    : Full-resolution Image
Image Width                     : 3309
Image Height                    : 4937
Bits Per Sample                 : 8 8 8
Compression                     : JPEG
Photometric Interpretation      : RGB
Strip Offsets                   : (Binary data 4705 bytes, use -b option to extract)
Orientation                     : Horizontal (normal)
Samples Per Pixel               : 3
Rows Per Strip                  : 8
Strip Byte Counts               : (Binary data 3128 bytes, use -b option to extract)
X Resolution                    : 300
Y Resolution                    : 300
Planar Configuration            : Chunky
Resolution Unit                 : inches
JPEG Tables                     : (Binary data 289 bytes, use -b option to extract)
Image Size                      : 3309x4937
Megapixels                      : 16.3

I have been able to reproduce this on multiple Arch systems in 4.2.5, 4.2.6, and the 4.3.0 pre-alpha using various files and file types (TIFF, PNG, and JPG). The logs always end the same. 

I don't see this issue on other distro's, but I haven't tried updating Qt to 5.13 on those systems yet. Krita doesn't want to launch if I downgrade all the Qt packages to 5.12.x on Arch- a bit of a bear for me on what I'm missing there so I've been temporarily using a KDE Neon system for strictly Krita.
Comment 11 Dmitry Kazakov 2019-09-11 09:08:05 UTC
Hi, Adam!

Thank you for the testing image and video! With this image I can really reproduce the crash.
Comment 12 Dmitry Kazakov 2019-09-11 09:37:21 UTC
*** Bug 406250 has been marked as a duplicate of this bug. ***
Comment 13 Dmitry Kazakov 2019-09-11 17:15:23 UTC
Git commit a9b8a3a1fa2beca232710a37b4cf9dc6284a4ff8 by Dmitry Kazakov.
Committed on 11/09/2019 at 17:14.
Pushed by dkazakov into branch 'kazakov/convert-image-color-space-in-strokes'.

Fix random crashes when converting image color space

The patch basically ports image color space conversion into strokes
system. The crash happened becasue updates were initiated right when
the visitor was changing layers. With the strokes, this problem should
be resolved.

The patch also changed UIX: now 'Image->Properties->Color Space'
changes the entire color space of the image, but not only color space
of the root node (projection).

M  +1    -1    libs/image/CMakeLists.txt
D  +0    -155  libs/image/kis_colorspace_convert_visitor.cpp
D  +0    -94   libs/image/kis_colorspace_convert_visitor.h
M  +53   -26   libs/image/kis_image.cc
M  +6    -6    libs/image/kis_image.h
M  +0    -1    libs/image/kis_paint_device.cc
M  +3    -1    libs/image/kis_transform_mask.cpp
M  +3    -1    libs/image/lazybrush/kis_colorize_mask.cpp
A  +105  -0    libs/image/processing/kis_convert_color_space_processing_visitor.cpp     [License: GPL (v2+)]
A  +54   -0    libs/image/processing/kis_convert_color_space_processing_visitor.h     [License: GPL (v2+)]
M  +0    -1    libs/image/tests/CMakeLists.txt
D  +0    -46   libs/image/tests/kis_colorspace_convert_visitor_test.cpp
D  +0    -33   libs/image/tests/kis_colorspace_convert_visitor_test.h
M  +1    -2    libs/image/tests/kis_image_test.cpp
M  +1    -3    libs/libkis/Document.cpp
M  +3    -4    libs/libkis/Node.cpp
M  +3    -1    libs/ui/kis_image_manager.cc
M  +1    -13   plugins/extensions/colorspaceconversion/colorspaceconversion.cc
M  +1    -0    plugins/impex/psd/psd_saver.cpp
M  +2    -1    sdk/tests/filestest.h

https://invent.kde.org/kde/krita/commit/a9b8a3a1fa2beca232710a37b4cf9dc6284a4ff8
Comment 14 Dmitry Kazakov 2019-11-05 17:44:25 UTC
Git commit ccf5657ac87a92bef01aa69915e230ef7fec17db by Dmitry Kazakov.
Committed on 05/11/2019 at 17:44.
Pushed by dkazakov into branch 'master'.

Fix random crashes when converting image color space

The patch basically ports image color space conversion into strokes
system. The crash happened becasue updates were initiated right when
the visitor was changing layers. With the strokes, this problem should
be resolved.

The patch also changed UIX: now 'Image->Properties->Color Space'
changes the entire color space of the image, but not only color space
of the root node (projection).

M  +1    -1    libs/image/CMakeLists.txt
D  +0    -155  libs/image/kis_colorspace_convert_visitor.cpp
D  +0    -94   libs/image/kis_colorspace_convert_visitor.h
M  +53   -26   libs/image/kis_image.cc
M  +6    -6    libs/image/kis_image.h
M  +0    -1    libs/image/kis_paint_device.cc
M  +3    -1    libs/image/kis_transform_mask.cpp
M  +3    -1    libs/image/lazybrush/kis_colorize_mask.cpp
A  +105  -0    libs/image/processing/kis_convert_color_space_processing_visitor.cpp     [License: GPL (v2+)]
A  +54   -0    libs/image/processing/kis_convert_color_space_processing_visitor.h     [License: GPL (v2+)]
M  +0    -1    libs/image/tests/CMakeLists.txt
D  +0    -46   libs/image/tests/kis_colorspace_convert_visitor_test.cpp
D  +0    -33   libs/image/tests/kis_colorspace_convert_visitor_test.h
M  +1    -2    libs/image/tests/kis_image_test.cpp
M  +1    -3    libs/libkis/Document.cpp
M  +3    -4    libs/libkis/Node.cpp
M  +3    -1    libs/ui/kis_image_manager.cc
M  +1    -13   plugins/extensions/colorspaceconversion/colorspaceconversion.cc
M  +1    -0    plugins/impex/psd/psd_saver.cpp
M  +2    -1    sdk/tests/filestest.h

https://invent.kde.org/kde/krita/commit/ccf5657ac87a92bef01aa69915e230ef7fec17db
Comment 15 Dmitry Kazakov 2019-11-05 18:20:14 UTC
Git commit 6416c56796e1af5d619e06dc99a2ec91a67ccb0a by Dmitry Kazakov.
Committed on 05/11/2019 at 17:44.
Pushed by dkazakov into branch 'krita/4.2'.

Fix random crashes when converting image color space

The patch basically ports image color space conversion into strokes
system. The crash happened becasue updates were initiated right when
the visitor was changing layers. With the strokes, this problem should
be resolved.

The patch also changed UIX: now 'Image->Properties->Color Space'
changes the entire color space of the image, but not only color space
of the root node (projection).

M  +1    -1    libs/image/CMakeLists.txt
D  +0    -155  libs/image/kis_colorspace_convert_visitor.cpp
D  +0    -94   libs/image/kis_colorspace_convert_visitor.h
M  +53   -26   libs/image/kis_image.cc
M  +6    -6    libs/image/kis_image.h
M  +0    -1    libs/image/kis_paint_device.cc
M  +3    -1    libs/image/kis_transform_mask.cpp
M  +3    -1    libs/image/lazybrush/kis_colorize_mask.cpp
A  +105  -0    libs/image/processing/kis_convert_color_space_processing_visitor.cpp     [License: GPL (v2+)]
A  +54   -0    libs/image/processing/kis_convert_color_space_processing_visitor.h     [License: GPL (v2+)]
M  +0    -1    libs/image/tests/CMakeLists.txt
D  +0    -46   libs/image/tests/kis_colorspace_convert_visitor_test.cpp
D  +0    -33   libs/image/tests/kis_colorspace_convert_visitor_test.h
M  +1    -2    libs/image/tests/kis_image_test.cpp
M  +1    -3    libs/libkis/Document.cpp
M  +3    -4    libs/libkis/Node.cpp
M  +3    -1    libs/ui/kis_image_manager.cc
M  +1    -13   plugins/extensions/colorspaceconversion/colorspaceconversion.cc
M  +1    -0    plugins/impex/psd/psd_saver.cpp
M  +2    -1    sdk/tests/filestest.h

https://invent.kde.org/kde/krita/commit/6416c56796e1af5d619e06dc99a2ec91a67ccb0a