Randomly plasmashell will start using 100% CPU time, causing noticeable performance and usability issues (such as the mouse skipping around). Restarting plasmashell tends to fix the issue until it happens again. I don't use any "3rd-party" widgets, only those that come with plasma-workstation, on the default panel. I do, however, have two extra panels, which provide a simple task manager for my 2nd and 3rd displays. Reproducible: Sometimes Steps to Reproduce: Issue seems to occur randomly Actual Results: Plasmashell hordes CPU time Expected Results: Plasmashell shouldn't be hording CPU time Backtrace taken while it was happening: (gdb) thread apply all bt Thread 8 (Thread 0x7f00e8596700 (LWP 3412)): #0 0x00000037952f757d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x0000003798e0a182 in _xcb_conn_wait (__timeout=-1, __nfds=1, __fds=0x7f00e8595bc0) at /usr/include/bits/poll2.h:46 #2 0x0000003798e0a182 in _xcb_conn_wait (c=c@entry=0x1444760, cond=cond@entry=0x14447a0, vector=vector@entry=0x0, count=count@entry=0x0) at xcb_conn.c:459 #3 0x0000003798e0bc77 in xcb_wait_for_event (c=0x1444760) at xcb_in.c:648 #4 0x00007f00e9493da9 in QXcbEventReader::run() (this=0x1452cb0) at qxcbconnection.cpp:1255 #5 0x0000003a65ea33de in QThreadPrivate::start(void*) (arg=0x1452cb0) at thread/qthread_unix.cpp:331 #6 0x0000003795a07555 in start_thread (arg=0x7f00e8596700) at pthread_create.c:333 #7 0x0000003795302ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 7 (Thread 0x7f00e602f700 (LWP 3539)): #0 0x00000037952f757d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x0000003797649dbc in g_main_context_iterate (priority=2147483647, n_fds=1, fds=0x7f00d8003070, timeout=<optimized out>, context=0x7f00d8000990) at gmain.c:4103 #2 0x0000003797649dbc in g_main_context_iterate (context=context@entry=0x7f00d8000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3803 #3 0x0000003797649ecc in g_main_context_iteration (context=0x7f00d8000990, may_block=may_block@entry=1) at gmain.c:3869 #4 0x0000003a660daeaf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f00d80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:418 #5 0x0000003a66081eca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f00e602eca0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #6 0x0000003a65e9e434 in QThread::exec() (this=this@entry=0x1534b60) at thread/qthread.cpp:503 #7 0x0000003a730d99b5 in QQmlThreadPrivate::run() (this=0x1534b60) at /usr/src/debug/qtdeclarative-opensource-src-5.5.1/src/qml/qml/ftw/qqmlthread.cpp:141 #8 0x0000003a65ea33de in QThreadPrivate::start(void*) (arg=0x1534b60) at thread/qthread_unix.cpp:331 #9 0x0000003795a07555 in start_thread (arg=0x7f00e602f700) at pthread_create.c:333 #10 0x0000003795302ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 6 (Thread 0x7f00dcc9c700 (LWP 3556)): #0 0x0000003795a0c540 in pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 #1 0x00007f00dfa066da in radeon_drm_cs_emit_ioctl (mtx=0x1661120, cond=0x1661148) at ../../../../../include/c11/threads_posix.h:154 #2 0x00007f00dfa066da in radeon_drm_cs_emit_ioctl (sema=0x1661120) at ../../../../../src/gallium/auxiliary/os/os_thread.h:259 #3 0x00007f00dfa066da in radeon_drm_cs_emit_ioctl (param=param@entry=0x1660df0) at radeon_drm_winsys.c:636 #4 0x00007f00dfa05e37 in impl_thrd_routine (p=<optimized out>) at ../../../../../include/c11/threads_posix.h:87 #5 0x0000003795a07555 in start_thread (arg=0x7f00dcc9c700) at pthread_create.c:333 #6 0x0000003795302ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 5 (Thread 0x7f00d4a2c700 (LWP 3563)): #0 0x00000037952f757d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x0000003797649dbc in g_main_context_iterate (priority=2147483647, n_fds=1, fds=0x7f00d0002e70, timeout=<optimized out>, context=0x7f00d0000990) at gmain.c:4103 #2 0x0000003797649dbc in g_main_context_iterate (context=context@entry=0x7f00d0000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3803 #3 0x0000003797649ecc in g_main_context_iteration (context=0x7f00d0000990, may_block=may_block@entry=1) at gmain.c:3869 #4 0x0000003a660daeaf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f00d00008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:418 #5 0x0000003a66081eca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f00d4a2bca0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #6 0x0000003a65e9e434 in QThread::exec() (this=this@entry=0x172a110) at thread/qthread.cpp:503 #7 0x0000003a730d99b5 in QQmlThreadPrivate::run() (this=0x172a110) at /usr/src/debug/qtdeclarative-opensource-src-5.5.1/src/qml/qml/ftw/qqmlthread.cpp:141 #8 0x0000003a65ea33de in QThreadPrivate::start(void*) (arg=0x172a110) at thread/qthread_unix.cpp:331 #9 0x0000003795a07555 in start_thread (arg=0x7f00d4a2c700) at pthread_create.c:333 #10 0x0000003795302ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 4 (Thread 0x7f00cf059700 (LWP 3573)): #0 0x00000037952f757d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x0000003797649dbc in g_main_context_iterate (priority=2147483647, n_fds=1, fds=0x7f00c8003070, timeout=<optimized out>, context=0x7f00c8000990) at gmain.c:4103 #2 0x0000003797649dbc in g_main_context_iterate (context=context@entry=0x7f00c8000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3803 #3 0x0000003797649ecc in g_main_context_iteration (context=0x7f00c8000990, may_block=may_block@entry=1) at gmain.c:3869 #4 0x0000003a660daeaf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f00c80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:418 #5 0x0000003a66081eca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f00cf058ca0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #6 0x0000003a65e9e434 in QThread::exec() (this=this@entry=0x17c83f0) at thread/qthread.cpp:503 #7 0x0000003a730d99b5 in QQmlThreadPrivate::run() (this=0x17c83f0) at /usr/src/debug/qtdeclarative-opensource-src-5.5.1/src/qml/qml/ftw/qqmlthread.cpp:141 #8 0x0000003a65ea33de in QThreadPrivate::start(void*) (arg=0x17c83f0) at thread/qthread_unix.cpp:331 #9 0x0000003795a07555 in start_thread (arg=0x7f00cf059700) at pthread_create.c:333 #10 0x0000003795302ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 3 (Thread 0x7f00cd6f4700 (LWP 3582)): #0 0x0000003795a0c540 in pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 #1 0x0000003a75f85514 in QTWTF::TCMalloc_PageHeap::scavengerThread() (this=0x3a7626de80) at /usr/src/debug/qtscript-opensource-src-5.5.1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2359 #2 0x0000003a75f85559 in QTWTF::TCMalloc_PageHeap::runScavengerThread(void*) (context=<optimized out>) at /usr/src/debug/qtscript-opensource-src-5.5.1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464 #3 0x0000003795a07555 in start_thread (arg=0x7f00cd6f4700) at pthread_create.c:333 #4 0x0000003795302ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 2 (Thread 0x7f0046fbb700 (LWP 3748)): #0 0x00000037952f757d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x0000003797649dbc in g_main_context_iterate (priority=2147483647, n_fds=1, fds=0x7f0040003120, timeout=<optimized out>, context=0x7f0040000990) at gmain.c:4103 #2 0x0000003797649dbc in g_main_context_iterate (context=context@entry=0x7f0040000990, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3803 #3 0x0000003797649ecc in g_main_context_iteration (context=0x7f0040000990, may_block=may_block@entry=1) at gmain.c:3869 #4 0x0000003a660daecb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f00400008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:420 #5 0x0000003a66081eca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f0046fbac50, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #6 0x0000003a65e9e434 in QThread::exec() (this=this@entry=0x1af20d0) at thread/qthread.cpp:503 #7 0x0000003a73ef68d6 in QQuickPixmapReader::run() (this=0x1af20d0) at /usr/src/debug/qtdeclarative-opensource-src-5.5.1/src/quick/util/qquickpixmapcache.cpp:760 #8 0x0000003a65ea33de in QThreadPrivate::start(void*) (arg=0x1af20d0) at thread/qthread_unix.cpp:331 #9 0x0000003795a07555 in start_thread (arg=0x7f0046fbb700) at pthread_create.c:333 #10 0x0000003795302ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 1 (Thread 0x7f00f0173900 (LWP 3410)): #0 0x00000037952f757d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x0000003797649dbc in g_main_context_iterate (priority=2147483647, n_fds=9, fds=0x28758c0, timeout=<optimized out>, context=0x7f00e00016f0) at gmain.c:4103 #2 0x0000003797649dbc in g_main_context_iterate (context=context@entry=0x7f00e00016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3803 #3 0x0000003797649ecc in g_main_context_iteration (context=0x7f00e00016f0, may_block=may_block@entry=1) at gmain.c:3869 #4 0x0000003a660daeaf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x149a000, flags=...) at kernel/qeventdispatcher_glib.cpp:418 #5 0x0000003a66081eca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffe9e02d2d0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #6 0x0000003a66089fac in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1229 #7 0x0000003a674e756c in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1527 #8 0x0000003a68d50855 in QApplication::exec() () at kernel/qapplication.cpp:2976 #9 0x00000000004314da in main(int, char**) (argc=2, argv=<optimized out>) at ../../shell/main.cpp:181
Same for me. Bug report - https://bugs.launchpad.net/ubuntu/+source/plasma-workspace/+bug/1592668 Plasmashell thread http://pastebin.com/CZtfCq7m Xorg thread http://pastebin.com/eAi9Ua9N
Was anything animating at the time of CPU spike? A busy logo spinning for example.
No. No animations, no blinking icons at the time of CPU spike. By the way, I found workaround - I just cleared all kde settings (~/.kde, ~/.config/<many files>, ~/.local/share/<something else>) and the problem has gone. All is working perfectly now.
I have recently encountered this problem again at my notebook. System info: plasmashell 5.5.5 OS: Kubuntu 16.04 Also, I have two (physical) monitors, and I noticed this problem began to arise after I detached/attached notebook from dock station or after hibernation Backtraces, perf top: I ran "top -H" and it said there are two threads on my system, which are eating CPU - plasmashell and Xorg, so here is "hottest" backtraces of these threads collected with perf top -t 3136 -d 5 --call-graph dwarf (where 3136 is thread Id from top output) Thread of plasmashell - http://pastebin.com/GPMkrWz8 (see text after RAW Paste Data) Thread of Xorg - http://pastebin.com/ZH0x7F7i (see text after RAW Paste Data)
Backtrace shows it literally idling. Thread 1 (Thread 0x7f00f0173900 (LWP 3410)): #0 0x00000037952f757d in poll () at ../sysdeps/unix/syscall-template.S:81 At the point in that snap it is not using any CPU. As for perf.top, it's the same as the rendering one, that I'm marking this as a dupe of. Sometimes between X, Mesa and Qt on some drivers it just starts drawing at infinite frames per second. It requires someone with the problem to spend some time putting in debug into all 3 parts at once to identify why. No log is going to help. Apparently running with "QSG_RENDER_LOOP=threaded plasmashell" doesn't hit this issue, and is ultimately much faster and where we're heading towards anyway. *** This bug has been marked as a duplicate of bug 356479 ***
One more observation. I have encountered this bug twice recently, and I managed to workaround this bug by erasing all user-specific config files of KDE