Bug 473130

Summary: Crash when undoing image color space conversion
Product: [Applications] krita Reporter: Lynx3d <lynx.mw+kde>
Component: Tile managerAssignee: Dmitry Kazakov <dimula73>
Status: RESOLVED FIXED    
Severity: crash CC: dimula73
Priority: NOR Keywords: release_blocker
Version: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: KCrash report

Description Lynx3d 2023-08-08 02:47:55 UTC
Created attachment 160820 [details]
KCrash report

SUMMARY
Krita master, git commit 4b077697d0b5ecb2f45f79c86a1a48d36e57f423
Ubuntu Linux 22.04
This crash seems to require a decently large image (reproduced several times with 4096x4096, 2 paint layer), I couldn't reproduce with small ones. It may also require more than one layer, ond/or some editing like a simple brush stroke after the conversion, at least it seems to greatly increase the chance to crash for me.

STEPS TO REPRODUCE
1. Open a decently large image (4096x4096, 2 paint layers in my case)
2. Convert image color space e.g. from RGB 8-bit to 16-bit integer
3. Undo the conversion

OBSERVED RESULT
Krita may crash instantly, see attached KCrash info
Comment 1 Bug Janitor Service 2023-08-18 09:19:31 UTC
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1905
Comment 2 Dmitry Kazakov 2023-08-18 09:43:18 UTC
Git commit d75c3eff6f861ebffe4667e0d44e525e1a98315d by Dmitry Kazakov.
Committed on 18/08/2023 at 11:32.
Pushed by dkazakov into branch 'master'.

Fix Channels docker to generate thumbnails asynchronously

Now the docker basically reuses the strategy used in Overview docker,
so there should be no threading issues/crashes anymore.

M  +1    -0    libs/ui/CMakeLists.txt
R  +30   -26   libs/ui/KisImageThumbnailStrokeStrategy.cpp [from: plugins/dockers/overview/OverviewThumbnailStrokeStrategy.cpp - 056% similarity]
A  +72   -0    libs/ui/KisImageThumbnailStrokeStrategy.h     [License: GPL(v2.0+)]
M  +6    -1    plugins/dockers/channeldocker/CMakeLists.txt
A  +56   -0    plugins/dockers/channeldocker/KisChannelsThumbnailsStrokeStrategy.cpp     [License: GPL(v2.0+)]
A  +24   -0    plugins/dockers/channeldocker/KisChannelsThumbnailsStrokeStrategy.h  *
M  +45   -40   plugins/dockers/channeldocker/channeldocker_dock.cpp
M  +7    -8    plugins/dockers/channeldocker/channeldocker_dock.h
M  +51   -88   plugins/dockers/channeldocker/channelmodel.cpp
M  +7    -6    plugins/dockers/channeldocker/channelmodel.h
M  +1    -2    plugins/dockers/overview/CMakeLists.txt
D  +0    -58   plugins/dockers/overview/OverviewThumbnailStrokeStrategy.h
M  +3    -3    plugins/dockers/overview/overviewwidget.cc

The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page.


https://invent.kde.org/graphics/krita/-/commit/d75c3eff6f861ebffe4667e0d44e525e1a98315d
Comment 3 Dmitry Kazakov 2023-08-18 11:01:27 UTC
Git commit 665bf7ac7afc47e5e403f2b779ac3f68c201df9b by Dmitry Kazakov.
Committed on 18/08/2023 at 13:01.
Pushed by dkazakov into branch 'krita/5.2'.

Fix Channels docker to generate thumbnails asynchronously

Now the docker basically reuses the strategy used in Overview docker,
so there should be no threading issues/crashes anymore.


(cherry picked from commit d75c3eff6f861ebffe4667e0d44e525e1a98315d)

M  +1    -0    libs/ui/CMakeLists.txt
R  +30   -26   libs/ui/KisImageThumbnailStrokeStrategy.cpp [from: plugins/dockers/overview/OverviewThumbnailStrokeStrategy.cpp - 056% similarity]
A  +72   -0    libs/ui/KisImageThumbnailStrokeStrategy.h     [License: GPL(v2.0+)]
M  +6    -1    plugins/dockers/channeldocker/CMakeLists.txt
A  +56   -0    plugins/dockers/channeldocker/KisChannelsThumbnailsStrokeStrategy.cpp     [License: GPL(v2.0+)]
A  +24   -0    plugins/dockers/channeldocker/KisChannelsThumbnailsStrokeStrategy.h  *
M  +45   -40   plugins/dockers/channeldocker/channeldocker_dock.cpp
M  +7    -8    plugins/dockers/channeldocker/channeldocker_dock.h
M  +51   -88   plugins/dockers/channeldocker/channelmodel.cpp
M  +7    -6    plugins/dockers/channeldocker/channelmodel.h
M  +1    -2    plugins/dockers/overview/CMakeLists.txt
D  +0    -58   plugins/dockers/overview/OverviewThumbnailStrokeStrategy.h
M  +3    -3    plugins/dockers/overview/overviewwidget.cc

The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page.


https://invent.kde.org/graphics/krita/-/commit/665bf7ac7afc47e5e403f2b779ac3f68c201df9b