Bug 395278 - Krita gets locked into GUI thread. (GDB backtrace)
Summary: Krita gets locked into GUI thread. (GDB backtrace)
Status: RESOLVED DUPLICATE of bug 405879
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: git master (please specify the git hash!)
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: triaged
Depends on:
Blocks:
 
Reported: 2018-06-12 15:11 UTC by wolthera
Modified: 2019-05-13 15:53 UTC (History)
3 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 wolthera 2018-06-12 15:11:33 UTC
I unhid a layer in an animation. Krita then froze up. As far as GDB was concerned, nothing was wrong, Krita had just made a new thread. As far as the Task Manager was concerned, Krita was requesting 100% cpu of a single core. I kept this going for 5 minutes, but the GUI didn't even update(like, alt-tab away and alt-tab back, only see the title bar, nothing else).

Eventually I gave up and ctrl+c in gbd.

This gave the following backtrace:
----------------------------------------------------------------
Thread 1 "krita" received signal SIGINT, Interrupt.
KisStrokesQueue::checkStrokeState (this=this@entry=0x55556777f070, hasStrokeJobsRunning=hasStrokeJobsRunning@entry=false, runningLevelOfDetail=runningLevelOfDetail@entry=-1)
    at /home/wolthera/krita/src/libs/image/kis_strokes_queue.cpp:721
721         bool hasLodCompatibility = checkLevelOfDetailProperty(runningLevelOfDetail);
(gdb) thread apply all backtrace

Thread 6 (Thread 0x7fffbc671700 (LWP 10939)):
#0  0x00007ffff431f951 in __GI___poll (fds=0x7fffa4002de0, 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 10904)):
#0  0x00007fffee021072 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555565448784) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  0x00007fffee021072 in __pthread_cond_wait_common (abstime=0x0, mutex=0x555565448730, cond=0x555565448758) at pthread_cond_wait.c:502
#2  0x00007fffee021072 in __pthread_cond_wait (cond=0x555565448758, mutex=0x555565448730) 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 10711)):
#0  0x00007ffff431f951 in __GI___poll (fds=0x7fffcc018da0, 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
#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 10706)):
#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 10596)):

---Type <return> to continue, or q <return> to quit---
#0  0x00007ffff2051b82 in KisStrokesQueue::checkStrokeState(bool, int) (this=this@entry=0x55556777f070, hasStrokeJobsRunning=hasStrokeJobsRunning@entry=false, runningLevelOfDetail=runningLevelOfDetail@entry=-1) at /home/wolthera/krita/src/libs/image/kis_strokes_queue.cpp:721
#1  0x00007ffff2051ee7 in KisStrokesQueue::processOneJob(KisUpdaterContext&, bool) (this=this@entry=0x55556777f070, updaterContext=..., externalJobsPending=externalJobsPending@entry=false)
    at /home/wolthera/krita/src/libs/image/kis_strokes_queue.cpp:699
#2  0x00007ffff2052005 in KisStrokesQueue::processQueue(KisUpdaterContext&, bool) (this=0x55556777f070, updaterContext=..., externalJobsPending=false)
    at /home/wolthera/krita/src/libs/image/kis_strokes_queue.cpp:559
#3  0x00007ffff2059c48 in KisUpdateScheduler::processQueues() (this=this@entry=0x7fffdc014588) at /home/wolthera/krita/src/libs/image/kis_update_scheduler.cpp:408
#4  0x00007ffff2059f9b in KisUpdateScheduler::barrierLock() (this=0x7fffdc014588) at /home/wolthera/krita/src/libs/image/kis_update_scheduler.cpp:385
#5  0x00007ffff206be38 in KisImage::barrierLock(bool) (this=0x555564220860, readOnly=readOnly@entry=false) at /home/wolthera/krita/src/libs/image/kis_image.cc:486
#6  0x00007ffff210b696 in KisLegacyUndoAdapter::addCommand(KUndo2Command*) (this=0x7fffdc0144f0, command=0x55556de2dec0)
    at /home/wolthera/krita/src/libs/image/kis_legacy_undo_adapter.cpp:51
#7  0x00007ffff724bfa7 in KisNodeCommandsAdapter::setOpacity(KisSharedPtr<KisNode>, int) (this=<optimized out>, node=..., opacity=opacity@entry=255)
    at /home/wolthera/krita/src/libs/ui/kis_node_commands_adapter.cpp:92
#8  0x00007ffff724d164 in KisNodeManager::setNodeOpacity(KisSharedPtr<KisNode>, int, bool) (this=0x55556456ac08, node=..., opacity=255, finalChange=<optimized out>)
    at /home/wolthera/krita/src/libs/ui/kis_node_manager.cpp:725
#9  0x00007ffff724d435 in KisNodeManager::nodeOpacityChanged(double, bool) (this=0x55556456ac08, opacity=100, finalChange=finalChange@entry=true)
    at /home/wolthera/krita/src/libs/ui/kis_node_manager.cpp:787
#10 0x00007fffbf2e5a25 in KisLayerBox::slotOpacityChanged() (this=0x555566a3bc80) at /home/wolthera/krita/src/plugins/dockers/defaultdockers/kis_layer_box.cpp:701
#11 0x00007fffbf2ebe75 in KisLayerBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x555566a3bc80, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/wolthera/krita/build/plugins/dockers/defaultdockers/kritadefaultdockers_autogen/include/moc_kis_layer_box.cpp:238
#12 0x00007ffff4e4c8e5 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007ffff4e593b7 in QTimer::timeout(QTimer::QPrivateSignal) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007ffff4e59718 in QTimer::timerEvent(QTimerEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff4e4d40b in QObject::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff5b9846c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff5b9fd34 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff7467cb7 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x555566a3bd40, event=0x7fffffffdeb0)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:627
#19 0x00007ffff4e1dde8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007ffff4e7591e in QTimerInfoList::activateTimers() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007ffff4e76119 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007fffec9f8fb7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007fffec9f91f0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007fffec9f927c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x00007ffff4e7647f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#26 0x00007ffff4e1be3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#27 0x00007ffff4e24da4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x0000555555e8c745 in main(int, char**) (argc=<optimized out>, argv=0x7fffffffe3c8) at /home/wolthera/krita/src/krita/main.cc:395
(gdb) 
(gdb) 
-----------------------------------------------------------

Hopefully this is useful.
Comment 1 Andrew Crouthamel 2018-10-02 16:34:11 UTC
I'm moving this to crash severity.
Comment 2 Jaime Torres 2018-10-06 11:31:13 UTC
Perhaps this bug is related. https://bugs.kde.org/show_bug.cgi?id=399363
Comment 3 Dmitry Kazakov 2019-05-13 15:53:36 UTC
The hangup happened when changing opacity of the layer. This bug has recently been fixed in b10a1bbb6d665243717998a5f46756f0755c8600

*** This bug has been marked as a duplicate of bug 405879 ***