Bug 408749 - Krita crashes when drawing on the canvas while animation is playing and no frames are added
Summary: Krita crashes when drawing on the canvas while animation is playing and no fr...
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Animation (show other bugs)
Version: 4.2.1
Platform: Appimage Linux
: NOR crash
Target Milestone: ---
Assignee: Dmitry Kazakov
URL:
Keywords:
: 409311 (view as bug list)
Depends on:
Blocks:
 
Reported: 2019-06-15 18:07 UTC by Kapyia
Modified: 2019-07-08 14:59 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kapyia 2019-06-15 18:07:23 UTC
SUMMARY
Krita crashes when drawing on the canvas while animation is playing but there are no frames are added.

STEPS TO REPRODUCE
1. Open up a new clean document and switch over to the Animation workspace
2. Immediately go over to the Animation docker and press Play
3. With the Freehand Brush Tool try to draw on the canvas while the Timeline is playing

OBSERVED RESULT
Krita instantly locks up, leaving no kritacrash.log file behind. 

EXPECTED RESULT
I would expect Krita to stop the animation and continue as if you'd never hit Play in the first place, possibly triggering a warning saying "No active animation frames could be found".

SOFTWARE/OS VERSIONS
Windows 10

ADDITIONAL INFORMATION
When there ARE active frames available in the Timeline, Krita prevents the lock up by switching over to an available frame, pausing the timeline, and drawing onto it. Perhaps the software gets stuck looking for active frames and not finding any to draw onto?
Comment 1 jpl.lloyd 2019-06-15 21:23:41 UTC
I can confirm this for the 4.2.1 AppImage file running on Ubuntu 16.04.
The bug goes as far back as at least 4.1.1, but is not present on 3.3.1.
Comment 2 Halla Rempt 2019-06-17 07:51:18 UTC
Let's confirm then.
Comment 3 Halla Rempt 2019-06-20 09:08:46 UTC
Thread dump:

Thread 7 (Thread 0x7ffb5e71e700 (LWP 13534)):
#0  0x00007ffba316abf9 in __GI___poll (fds=0x7ffb48003de0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffb9b32f4c9 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffb9b32f5dc in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffba3cc5daf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffba3c6703a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffba3a8e4ca in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffb88f38115 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
#7  0x00007ffba3a8fc72 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffb9cc2b6db in start_thread (arg=0x7ffb5e71e700) at pthread_create.c:463
#9  0x00007ffba317788f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7ffb5df1d700 (LWP 13533)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffba3a92630 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffba3a924a2 in QSemaphore::tryAcquire(int, int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffba5b01fb3 in KisTileDataSwapper::waitForWork (this=<optimized out>) at /home/boud/dev/krita/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#4  0x00007ffba5b0220a in KisTileDataSwapper::run (this=0x7ffba61b7e00 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder+64>) at /home/boud/dev/krita/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#5  0x00007ffba3a8fc72 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffb9cc2b6db in start_thread (arg=0x7ffb5df1d700) at pthread_create.c:463
#7  0x00007ffba317788f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7ffb6079f700 (LWP 13531)):
#0  0x00007ffba316abf9 in __GI___poll (fds=0x7ffb58004670, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffb9b32f4c9 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffb9b32f5dc in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffba3cc5daf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffba3c6703a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffba3a8e4ca in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffba3a8fc72 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffb9cc2b6db in start_thread (arg=0x7ffb6079f700) at pthread_create.c:463
#8  0x00007ffba317788f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7ffb8c2cd700 (LWP 13529)):
#0  0x00007ffb9cc319f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x564c8bccb718) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x564c8bccb6c8, cond=0x564c8bccb6f0) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x564c8bccb6f0, mutex=0x564c8bccb6c8) at pthread_cond_wait.c:655
#3  0x00007ffb7a479dcb in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#4  0x00007ffb7a479af7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#5  0x00007ffb9cc2b6db in start_thread (arg=0x7ffb8c2cd700) at pthread_create.c:463
#6  0x00007ffba317788f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7ffb792f4700 (LWP 13528)):
#0  0x00007ffba316abf9 in __GI___poll (fds=0x7ffb792f3c68, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffb9a0cd747 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007ffb9a0cf36a in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007ffb8ee82578 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007ffba3a8fc72 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffb9cc2b6db in start_thread (arg=0x7ffb792f4700) at pthread_create.c:463
#6  0x00007ffba317788f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7ffb81074700 (LWP 13522)):
#0  0x00007ffba316abf9 in __GI___poll (fds=0x7ffb7c01d4c0, nfds=4, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ffb9b32f4c9 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffb9b32f5dc in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffba3cc5daf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffba3c6703a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffba3a8e4ca in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffb9ce59015 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007ffba3a8fc72 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffb9cc2b6db in start_thread (arg=0x7ffb81074700) at pthread_create.c:463
#9  0x00007ffba317788f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7ffba86bf000 (LWP 13520)):
#0  0x00007ffba3a901bf in QMutex::unlock() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#1  0x00007ffba3a92d19 in QThreadPoolPrivate::reset() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffba3a92ed8 in QThreadPoolPrivate::waitForDone(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffba5c9f1df in KisUpdateScheduler::barrierLock (this=0x564c937ae460) at /home/boud/dev/krita/libs/image/kis_update_scheduler.cpp:375
#4  0x00007ffba5cc02e8 in KisImage::barrierLock (this=0x564c96505760, readOnly=readOnly@entry=true) at /home/boud/dev/krita/libs/image/kis_image.cc:598
#5  0x00007ffba74708e2 in KisAnimationPlayer::uploadFrame (this=0x564c965056f0, frame=34, forceSyncAudio=<optimized out>) at /home/boud/dev/krita/libs/ui/canvas/kis_animation_player.cpp:537
#6  0x00007ffba3c98875 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffba3ca5757 in QTimer::timeout(QTimer::QPrivateSignal) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffba3ca5ab8 in QTimer::timerEvent(QTimerEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007ffba3c9939b in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007ffba4a6465c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffba4a6bb90 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffba7382ab7 in KisApplication::notify (this=<optimized out>, receiver=0x564c96539f90, event=0x7ffc53326410) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:653
#13 0x00007ffba3c68d18 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007ffba3cc5219 in QTimerInfoList::activateTimers() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffba3cc59e1 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffb9b32f317 in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffb9b32f550 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007ffb9b32f5dc in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffba3cc5daf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007ffba3c6703a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007ffba3c70170 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x0000564c89e8e751 in main (argc=<optimized out>, argv=0x7ffc53326978) at /home/boud/dev/krita/krita/main.cc:546
Comment 4 Dmitry Kazakov 2019-06-25 16:11:15 UTC
Git commit 60895f2e1949158fdf632ae5bfd63a4bc24db45d by Dmitry Kazakov.
Committed on 25/06/2019 at 16:10.
Pushed by dkazakov into branch 'master'.

Fix hangup when trying to paint while playing **empty** image

M  +8    -6    libs/ui/canvas/kis_animation_player.cpp

https://invent.kde.org/kde/krita/commit/60895f2e1949158fdf632ae5bfd63a4bc24db45d
Comment 5 Halla Rempt 2019-07-01 10:19:39 UTC
*** Bug 409311 has been marked as a duplicate of this bug. ***
Comment 6 Halla Rempt 2019-07-08 14:59:28 UTC
Git commit ef363be47da66961821525d032050f1ce6014e2d by Boudewijn Rempt, on behalf of Dmitry Kazakov.
Committed on 08/07/2019 at 14:59.
Pushed by rempt into branch 'krita/4.2'.

Fix hangup when trying to paint while playing **empty** image

M  +8    -6    libs/ui/canvas/kis_animation_player.cpp

https://invent.kde.org/kde/krita/commit/ef363be47da66961821525d032050f1ce6014e2d