Bug 459632 - Split Layer hangs when used directly on colorize mask
Summary: Split Layer hangs when used directly on colorize mask
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Layer Stack (other bugs)
Version First Reported In: 5.1.1
Platform: Microsoft Windows Microsoft Windows
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: triaged
: 452963 470854 (view as bug list)
Depends on:
Blocks:
 
Reported: 2022-09-25 08:40 UTC by Măcelaru Tiberiu
Modified: 2023-07-03 13:11 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
The Krita file which can trigger the bug (3.31 MB, application/x-krita)
2022-09-25 08:40 UTC, Măcelaru Tiberiu
Details
Krita system information (6.99 KB, text/plain)
2022-09-25 08:45 UTC, Măcelaru Tiberiu
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Măcelaru Tiberiu 2022-09-25 08:40:14 UTC
Created attachment 152403 [details]
The Krita file which can trigger the bug

SUMMARY
Split Layer cause application to stall when used directly on colorize mask layer.


STEPS TO REPRODUCE
1. Select de `Colorize Mask Bug` layer in the right panel.
2. In the top menu select Layer -> Split -> Split Layer . . .
3. In the Split Layer dialog set default settings (
  Put all layers in a group layer = True,
  Put every layer in its own, separate  group layer = False,
  Alpha-lock every new layer = True,
  Hide the original layer = False,
  Sort layers by amount of non-transparent pixels = True,
  Disregard opacity = False,
  Fuzziness = 20
)
4. Click Apply

OBSERVED RESULT
The `Colorize Mask Bug` layer disappears and a Colorize Mask 1 layer is created with all the color in a single layer.
The Split Layer operation never finishes and is stuck at 0% percent completion.
You can save during the process which causes the `Split into Layers` to have 50% percent completion.

EXPECTED RESULT
The `Split Layer` should work normally as if clicked on the parent of the `Colorize Mask` or disable the option if a `Colorize Mask` layer is selected.

SOFTWARE/OS VERSIONS
Windows: 10 Build 19044
Comment 1 Măcelaru Tiberiu 2022-09-25 08:45:04 UTC
Created attachment 152404 [details]
Krita system information
Comment 2 wolthera 2023-01-16 14:40:34 UTC
Hi, thank you for your report.

I get a crash with the Krita Version: 5.2.0-prealpha (git 5c98a72) Appimage with Qt 5.15.7, and got the following backtrace out of my local dev build:


----------------- GDB Backtrace --------------------------

ASSERT: "d" in file /home/wolthera/krita/src/libs/global/kis_shared_ptr.h, line 168
--Type <RET> for more, q to quit, c to continue without paging--

Thread 1 "krita" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) thread apply all backtrace

Thread 44 (Thread 0x7fff54efa700 (LWP 1229084)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff54ef9c90, clockid=<optimized out>, expected=0, futex_word=0x7fff68059bb0) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fff54ef9c90, clockid=<optimized out>, mutex=0x7fff68059b60, cond=0x7fff68059b88) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x7fff68059b88, mutex=0x7fff68059b60, abstime=0x7fff54ef9c90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 43 (Thread 0x7fff557fb700 (LWP 1228982)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff557fac90, clockid=<optimized out>, expected=0, futex_word=0x7fff68059ab0) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fff557fac90, clockid=<optimized out>, mutex=0x7fff68059a60, cond=0x7fff68059a88) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x7fff68059a88, mutex=0x7fff68059a60, abstime=0x7fff557fac90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 42 (Thread 0x7fff55ffc700 (LWP 1228981)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff55ffbc90, clockid=<optimized out>, expected=0, futex_word=0x7fff48005cd4) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fff55ffbc90, clockid=<optimized out>, mutex=0x7fff48005c80, cond=0x7fff48005ca8) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x7fff48005ca8, mutex=0x7fff48005c80, abstime=0x7fff55ffbc90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 41 (Thread 0x7fff567fd700 (LWP 1228972)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff567fcc90, clockid=<optimized out>, expected=0, futex_word=0x7fff4c00c194) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fff567fcc90, clockid=<optimized out>, mutex=0x7fff4c00c140, cond=0x7fff4c00c168) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x7fff4c00c168, mutex=0x7fff4c00c140, abstime=0x7fff567fcc90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 40 (Thread 0x7fff56ffe700 (LWP 1228971)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff56ffdc90, clockid=<optimized out>, expected=0, futex_word=0x7fff4c009de4) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fff56ffdc90, clockid=<optimized out>, mutex=0x7fff4c009d90, cond=0x7fff4c009db8) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x7fff4c009db8, mutex=0x7fff4c009d90, abstime=0x7fff56ffdc90) at pthread_cond_wait.c:665
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 39 (Thread 0x7fff577ff700 (LWP 1228970)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff577fec90, clockid=<optimized out>, expected=0, futex_word=0x7fff68055eb0) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fff577fec90, clockid=<optimized out>, mutex=0x7fff68055e60, cond=0x7fff68055e88) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x7fff68055e88, mutex=0x7fff68055e60, abstime=0x7fff577fec90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 38 (Thread 0x7fff6259e700 (LWP 1228860)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555560b97a40) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555560b979f0, cond=0x555560b97a18) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x555560b97a18, mutex=0x555560b979f0) at pthread_cond_wait.c:647
#3  0x00007fffec8b25eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#4  0x00007fffec8b21eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#5  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 37 (Thread 0x7fff63dff700 (LWP 1228851)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5555601509d0) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555560150980, cond=0x5555601509a8) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x5555601509a8, mutex=0x555560150980) at pthread_cond_wait.c:647
#3  0x00007fffec8b25eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#4  0x00007fffec8b21eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#5  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 36 (Thread 0x7fff70d46700 (LWP 1228844)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x55555f0b1270) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55555f0b1220, cond=0x55555f0b1248) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x55555f0b1248, mutex=0x55555f0b1220) at pthread_cond_wait.c:647
#3  0x00007fffec8b25eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#4  0x00007fffec8b21eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#5  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 35 (Thread 0x7fff71547700 (LWP 1228839)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff71546c90, clockid=<optimized out>, expected=0, futex_word=0x55555e1d3cc0) at ../sysdeps/nptl/futex-internal.h:320
--Type <RET> for more, q to quit, c to continue without paging--
#1  __pthread_cond_wait_common (abstime=0x7fff71546c90, clockid=<optimized out>, mutex=0x55555e1d3c70, cond=0x55555e1d3c98) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x55555e1d3c98, mutex=0x55555e1d3c70, abstime=0x7fff71546c90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 32 (Thread 0x7fff90bc4700 (LWP 1228743)):
#0  0x00007ffff531a99f in __GI___poll (fds=0x7fff78005030, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff2be336e in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffff2be34a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff5908b82 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff58acb3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c6342 in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffe6be467a in  () at /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#7  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 31 (Thread 0x7fff9290c700 (LWP 1228734)):
#0  0x00007ffff531a99f in __GI___poll (fds=0x7fff74004a30, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff2be336e in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffff2be34a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff5908b82 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff58acb3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c6342 in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffe6439919 in  () at /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
#7  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 30 (Thread 0x7fff9210b700 (LWP 1228713)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff56c99f0 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff56c9856 in QSemaphore::tryAcquire(int, int) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff6d74f97 in KisTileDataSwapper::waitForWork() (this=<optimized out>) at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:74
#4  0x00007ffff6d7519a in KisTileDataSwapper::run() (this=0x7ffff73257c0 <(anonymous namespace)::Q_QGS_s_instance::innerFunction()::holder+64>) at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:80
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 28 (Thread 0x7fff9310d700 (LWP 1228703)):
#0  0x00007ffff531a99f in __GI___poll (fds=0x7fff88004e60, nfds=2, timeout=135384) at ../sysdeps/unix/sysv/linux/poll.c:29
--Type <RET> for more, q to quit, c to continue without paging--
#1  0x00007ffff2be336e in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffff2be34a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff5908b82 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff58acb3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c6342 in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#8  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 26 (Thread 0x7fffa98ab700 (LWP 1228701)):
#0  0x00007ffff531a99f in __GI___poll (fds=0x7fff84004a60, nfds=2, timeout=135368) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff2be336e in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffff2be34a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff5908b82 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff58acb3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c6342 in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#8  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 25 (Thread 0x7fffaa4bf700 (LWP 1228700)):
#0  0x00007ffff531a99f in __GI___poll (fds=0x7fff8c004e60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff2be336e in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffff2be34a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff5908b82 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff58acb3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c6342 in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#8  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 24 (Thread 0x7fffc1ffb700 (LWP 1228314)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffc1ffac90, clockid=<optimized out>, expected=0, futex_word=0x55555647b254) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffc1ffac90, clockid=<optimized out>, mutex=0x55555647b200, cond=0x55555647b228) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x55555647b228, mutex=0x55555647b200, abstime=0x7fffc1ffac90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 23 (Thread 0x7fffc27fc700 (LWP 1228313)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffc27fbc90, clockid=<optimized out>, expected=0, futex_word=0x5555564770e0) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffc27fbc90, clockid=<optimized out>, mutex=0x555556477090, cond=0x5555564770b8) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x5555564770b8, mutex=0x555556477090, abstime=0x7fffc27fbc90) at pthread_cond_wait.c:665
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 22 (Thread 0x7fffc2ffd700 (LWP 1228312)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffc2ffcc90, clockid=<optimized out>, expected=0, futex_word=0x555556476fd0) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffc2ffcc90, clockid=<optimized out>, mutex=0x555556476f80, cond=0x555556476fa8) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x555556476fa8, mutex=0x555556476f80, abstime=0x7fffc2ffcc90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 21 (Thread 0x7fffc37fe700 (LWP 1228311)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffc37fdc90, clockid=<optimized out>, expected=0, futex_word=0x555556444b44) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffc37fdc90, clockid=<optimized out>, mutex=0x555556444af0, cond=0x555556444b18) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x555556444b18, mutex=0x555556444af0, abstime=0x7fffc37fdc90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 20 (Thread 0x7fffc3fff700 (LWP 1228310)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffc3ffec90, clockid=<optimized out>, expected=0, futex_word=0x5555565d0100) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffc3ffec90, clockid=<optimized out>, mutex=0x5555565d00b0, cond=0x5555565d00d8) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x5555565d00d8, mutex=0x5555565d00b0, abstime=0x7fffc3ffec90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 19 (Thread 0x7fffd8ab1700 (LWP 1228309)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffd8ab0c90, clockid=<optimized out>, expected=0, futex_word=0x5555564446b0) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffd8ab0c90, clockid=<optimized out>, mutex=0x555556444660, cond=0x555556444688) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x555556444688, mutex=0x555556444660, abstime=0x7fffd8ab0c90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
--Type <RET> for more, q to quit, c to continue without paging--

Thread 18 (Thread 0x7fffd92b2700 (LWP 1228308)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffd92b1c90, clockid=<optimized out>, expected=0, futex_word=0x55555634ef00) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffd92b1c90, clockid=<optimized out>, mutex=0x55555634eeb0, cond=0x55555634eed8) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x55555634eed8, mutex=0x55555634eeb0, abstime=0x7fffd92b1c90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 17 (Thread 0x7fffe595e700 (LWP 1228307)):
#0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffe595dc90, clockid=<optimized out>, expected=0, futex_word=0x55555634b1e4) at ../sysdeps/nptl/futex-internal.h:320
#1  __pthread_cond_wait_common (abstime=0x7fffe595dc90, clockid=<optimized out>, mutex=0x55555634b190, cond=0x55555634b1b8) at pthread_cond_wait.c:520
#2  __pthread_cond_timedwait (cond=0x55555634b1b8, mutex=0x55555634b190, abstime=0x7fffe595dc90) at pthread_cond_wait.c:665
#3  0x00007ffff56cd578 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff56caa91 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 15 (Thread 0x7fffe77fe700 (LWP 1228297)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555556086d80) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555556086d30, cond=0x555556086d58) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x555556086d58, mutex=0x555556086d30) at pthread_cond_wait.c:647
#3  0x00007fffec8b25eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#4  0x00007fffec8b21eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#5  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 13 (Thread 0x7fffeedc7700 (LWP 1228295)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555555f53ac8) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555555f53a78, cond=0x555555f53aa0) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x555555f53aa0, mutex=0x555555f53a78) at pthread_cond_wait.c:647
#3  0x00007fffec8b25eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#4  0x00007fffec8b21eb in  () at /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
#5  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 12 (Thread 0x7fffe7fff700 (LWP 1228290)):
#0  0x00007ffff531a99f in __GI___poll (fds=0x7fffe7ffec28, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff2aecc1a in  () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007ffff2aee90a in xcb_wait_for_event () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007fffefcf9e18 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#5  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fffef5c8700 (LWP 1228272)):
#0  0x00007ffff531a99f in __GI___poll (fds=0x7fffe801e9d0, nfds=4, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffff2be336e in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffff2be34a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff5908b82 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff58acb3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff56c6342 in QThread::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff28bef4b in  () at /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007ffff56c7543 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff355e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007ffff5327133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7ffff017a880 (LWP 1228049)):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff522a859 in __GI_abort () at abort.c:79
#2  0x00007ffff568bbd9 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff568afe5 in qt_assert_x(char const*, char const*, char const*, int) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007fff918d6cf0 in KisSharedPtr<KisNode>::operator->() (this=this@entry=0x7fffffffc3e0) at /home/wolthera/krita/src/libs/global/kis_shared_ptr.h:168
#5  0x00007fff918d6317 in LayerSplit::slotLayerSplit() (this=0x55555d658ba0) at /home/wolthera/krita/src/plugins/extensions/layersplit/layersplit.cpp:195
#6  0x00007ffff58e5324 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff638d986 in QAction::triggered(bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff6390038 in QAction::activate(QAction::ActionEvent) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff651d89a in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff6524fae in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff6526242 in QMenu::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff63d6db6 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff652885b in QMenu::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff6393e43 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff639ce47 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff7c2383e in KisApplication::notify(QObject*, QEvent*) (this=0x7fffffffd980, receiver=0x55555e8bcc80, event=0x7fffffffce30) at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:762
#17 0x00007ffff58ae03a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff639c147 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff63f2a3e in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff63f52c4 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff6393e43 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff639cc58 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff7c2383e in KisApplication::notify(QObject*, QEvent*) (this=0x7fffffffd980, receiver=0x55555be59320, event=0x7fffffffd330) at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:762
#24 0x00007ffff58ae03a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff5c947c0 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#26 0x00007ffff5c95e65 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#27 0x00007ffff5c6c6bc in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#28 0x00007fffefcfae3e in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#29 0x00007ffff2be317d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007ffff2be3400 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007ffff2be34a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007ffff5908b82 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#33 0x00007ffff58acb3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#34 0x00007ffff58b4ce4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#35 0x000055555555d92e in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/wolthera/krita/src/krita/main.cc:729
Comment 3 Dmitry Kazakov 2023-01-23 12:41:14 UTC
Git commit 91f4199445c137329d932bd557443b749701b8fb by Dmitry Kazakov.
Committed on 23/01/2023 at 12:40.
Pushed by dkazakov into branch 'master'.

Fix synchronization of actions in SplitLayer

In Split Layer action we should first flatten the colorize
mask, and only then split it using the split-layer action.

The implementation had two issues:

1) There were `return` calls in between override-cursor cursors

2) It relied on `viewManager()->activeNode()` pointing to the
   newly converted mask when the first part of the action
   completed. The patch removes this reliance on a global variable
   and uses std::future instead.

A  +41   -0    libs/global/KisFutureUtils.h     [License: GPL(v2.0+)]
M  +8    -2    libs/image/kis_layer_utils.cpp
M  +2    -1    libs/image/kis_layer_utils.h
M  +34   -2    libs/image/kis_processing_applicator.cpp
M  +8    -0    libs/image/kis_processing_applicator.h
M  +1    -1    libs/ui/kis_layer_manager.cc
M  +22   -16   plugins/extensions/layersplit/layersplit.cpp

https://invent.kde.org/graphics/krita/commit/91f4199445c137329d932bd557443b749701b8fb
Comment 4 Lynx3d 2023-06-15 02:24:32 UTC
*** Bug 452963 has been marked as a duplicate of this bug. ***
Comment 5 Dmitry Kazakov 2023-07-03 13:11:01 UTC
*** Bug 470854 has been marked as a duplicate of this bug. ***