Bug 389283

Summary: Plasma hangs and uses 100% of a CPU core [0x00007f339e7bc7c5 in QV4::PersistentValueStorage::allocate (this=0x55711959f670) at jsruntime/qv4persistent.cpp:189...]
Product: [Plasma] plasmashell Reporter: Germano Massullo <germano.massullo>
Component: generalAssignee: David Edmundson <kde>
Status: RESOLVED WORKSFORME    
Severity: crash CC: plasma-bugs, rdieter
Priority: NOR    
Version: 5.11.5   
Target Milestone: 1.0   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Germano Massullo 2018-01-21 15:31:27 UTC
plasmashell process hangs and uses 100% of a CPU core

$ gdb plasmashell 1326
GNU gdb (GDB) Fedora 8.0.1-33.fc27
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from plasmashell...Reading symbols from /usr/lib/debug/usr/bin/plasmashell-5.11.5-2.fc27.x86_64.debug...done.
done.
Attaching to program: /usr/bin/plasmashell, process 1326
[New LWP 1404]
[New LWP 1579]
[New LWP 1630]
[New LWP 1706]
[New LWP 1753]
[New LWP 1811]
[New LWP 1921]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
0x00007f339e7bc7c5 in QV4::PersistentValueStorage::allocate (this=0x55711959f670) at jsruntime/qv4persistent.cpp:189
189             if (p->header.freeList != -1)
(gdb) thread apply all backtrace

Thread 8 (Thread 0x7f32cb85d700 (LWP 1921)):
#0  0x00007f3399a3136b in __GI___poll (fds=0x7f32c4006070, nfds=1, timeout=3499955) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f3391cdaed9 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f32c4006070, timeout=<optimized out>, 
    context=0x7f32c4000bf0) at gmain.c:4187
#2  g_main_context_iterate (context=context@entry=0x7f32c4000bf0, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=<optimized out>) at gmain.c:3881
#3  0x00007f3391cdafec in g_main_context_iteration (context=0x7f32c4000bf0, may_block=may_block@entry=1) at gmain.c:3947
#4  0x00007f339a89c33f in QEventDispatcherGlib::processEvents (this=0x7f32c4000b20, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f339a84a0ea in QEventLoop::exec (this=this@entry=0x7f32cb85cc20, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#6  0x00007f339a69b8ba in QThread::exec (this=<optimized out>) at thread/qthread.cpp:515
#7  0x00007f32ce1cd577 in KCupsConnection::run (this=0x55711c4a05e0)
    at /usr/src/debug/kde-print-manager-17.08.1-1.fc27.x86_64/libkcups/KCupsConnection.cpp:304
#8  0x00007f339a69fb92 in QThreadPrivate::start (arg=0x55711c4a05e0) at thread/qthread_unix.cpp:368
#9  0x00007f3398d6d61b in start_thread (arg=0x7f32cb85d700) at pthread_create.c:465
---Type <return> to continue, or q <return> to quit---
#10 0x00007f3399a3d91f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7f32e05db700 (LWP 1811)):
#0  0x00007f3399a3136b in __GI___poll (fds=0x7f32d80050f0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f3391cdaed9 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f32d80050f0, timeout=<optimized out>, 
    context=0x7f32d8000bf0) at gmain.c:4187
#2  g_main_context_iterate (context=context@entry=0x7f32d8000bf0, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=<optimized out>) at gmain.c:3881
#3  0x00007f3391cdafec in g_main_context_iteration (context=0x7f32d8000bf0, may_block=may_block@entry=1) at gmain.c:3947
#4  0x00007f339a89c33f in QEventDispatcherGlib::processEvents (this=0x7f32d8000b20, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f339a84a0ea in QEventLoop::exec (this=this@entry=0x7f32e05dabf0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#6  0x00007f339a69b8ba in QThread::exec (this=this@entry=0x557119ee0ba0) at thread/qthread.cpp:515
#7  0x00007f339f49f1f6 in QQuickPixmapReader::run (this=0x557119ee0ba0) at util/qquickpixmapcache.cpp:868
#8  0x00007f339a69fb92 in QThreadPrivate::start (arg=0x557119ee0ba0) at thread/qthread_unix.cpp:368
#9  0x00007f3398d6d61b in start_thread (arg=0x7f32e05db700) at pthread_create.c:465
---Type <return> to continue, or q <return> to quit---
#10 0x00007f3399a3d91f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7f336ffff700 (LWP 1753)):
#0  0x00007f3398d73c4b in futex_wait_cancelable (private=<optimized out>, expected=0, 
    futex_word=0x7f33a1aba478 <QTWTF::pageheap_memory+57592>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7f33a1aba428 <QTWTF::pageheap_memory+57512>, 
    cond=0x7f33a1aba450 <QTWTF::pageheap_memory+57552>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7f33a1aba450 <QTWTF::pageheap_memory+57552>, mutex=0x7f33a1aba428 <QTWTF::pageheap_memory+57512>)
    at pthread_cond_wait.c:655
#3  0x00007f33a17c4604 in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x7f33a1aac380 <QTWTF::pageheap_memory>)
    at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2359
#4  0x00007f33a17c4649 in QTWTF::TCMalloc_PageHeap::runScavengerThread (context=<optimized out>)
    at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464
#5  0x00007f3398d6d61b in start_thread (arg=0x7f336ffff700) at pthread_create.c:465
#6  0x00007f3399a3d91f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

---Type <return> to continue, or q <return> to quit---
Thread 5 (Thread 0x7f337a59f700 (LWP 1706)):
#0  0x00007f3399a3136b in __GI___poll (fds=0x7f3368003ce0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f3391cdaed9 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f3368003ce0, timeout=<optimized out>, 
    context=0x7f3368000bf0) at gmain.c:4187
#2  g_main_context_iterate (context=context@entry=0x7f3368000bf0, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=<optimized out>) at gmain.c:3881
#3  0x00007f3391cdafec in g_main_context_iteration (context=0x7f3368000bf0, may_block=may_block@entry=1) at gmain.c:3947
#4  0x00007f339a89c33f in QEventDispatcherGlib::processEvents (this=0x7f3368000b20, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f339a84a0ea in QEventLoop::exec (this=this@entry=0x7f337a59ec40, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#6  0x00007f339a69b8ba in QThread::exec (this=this@entry=0x5571195b24c0) at thread/qthread.cpp:515
#7  0x00007f339e9022a5 in QQmlThreadPrivate::run (this=0x5571195b24c0) at qml/ftw/qqmlthread.cpp:147
#8  0x00007f339a69fb92 in QThreadPrivate::start (arg=0x5571195b24c0) at thread/qthread_unix.cpp:368
#9  0x00007f3398d6d61b in start_thread (arg=0x7f337a59f700) at pthread_create.c:465
#10 0x00007f3399a3d91f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

---Type <return> to continue, or q <return> to quit---
Thread 4 (Thread 0x7f337bfff700 (LWP 1630)):
#0  0x00007f3399a3136b in __GI___poll (fds=0x7f3370004a00, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f3391cdaed9 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f3370004a00, timeout=<optimized out>, 
    context=0x7f3370000bf0) at gmain.c:4187
#2  g_main_context_iterate (context=context@entry=0x7f3370000bf0, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=<optimized out>) at gmain.c:3881
#3  0x00007f3391cdafec in g_main_context_iteration (context=0x7f3370000bf0, may_block=may_block@entry=1) at gmain.c:3947
#4  0x00007f339a89c33f in QEventDispatcherGlib::processEvents (this=0x7f3370000b20, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f339a84a0ea in QEventLoop::exec (this=this@entry=0x7f337bffec40, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#6  0x00007f339a69b8ba in QThread::exec (this=this@entry=0x55711939c4f0) at thread/qthread.cpp:515
#7  0x00007f339e9022a5 in QQmlThreadPrivate::run (this=0x55711939c4f0) at qml/ftw/qqmlthread.cpp:147
#8  0x00007f339a69fb92 in QThreadPrivate::start (arg=0x55711939c4f0) at thread/qthread_unix.cpp:368
#9  0x00007f3398d6d61b in start_thread (arg=0x7f337bfff700) at pthread_create.c:465
#10 0x00007f3399a3d91f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

---Type <return> to continue, or q <return> to quit---
Thread 3 (Thread 0x7f3381ec8700 (LWP 1579)):
#0  0x00007f3399a3136b in __GI___poll (fds=0x7f3374013150, nfds=4, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f3391cdaed9 in g_main_context_poll (priority=<optimized out>, n_fds=4, fds=0x7f3374013150, timeout=<optimized out>, 
    context=0x7f3374000bf0) at gmain.c:4187
#2  g_main_context_iterate (context=context@entry=0x7f3374000bf0, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=<optimized out>) at gmain.c:3881
#3  0x00007f3391cdafec in g_main_context_iteration (context=0x7f3374000bf0, may_block=may_block@entry=1) at gmain.c:3947
#4  0x00007f339a89c33f in QEventDispatcherGlib::processEvents (this=0x7f3374000b20, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#5  0x00007f339a84a0ea in QEventLoop::exec (this=this@entry=0x7f3381ec7c20, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212



#6  0x00007f339a69b8ba in QThread::exec (
    this=this@entry=0x7f339af26060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:515
#7  0x00007f339acb2479 in QDBusConnectionManager::run (
    this=0x7f339af26060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178
#8  0x00007f339a69fb92 in QThreadPrivate::start (
    arg=0x7f339af26060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:368
---Type <return> to continue, or q <return> to quit---
#9  0x00007f3398d6d61b in start_thread (arg=0x7f3381ec8700) at pthread_create.c:465
#10 0x00007f3399a3d91f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f338403e700 (LWP 1404)):
#0  0x00007f3399a3136b in __GI___poll (fds=fds@entry=0x7f338403db68, nfds=nfds@entry=1, timeout=timeout@entry=-1)
    at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f33a00abfe7 in poll (__timeout=-1, __nfds=1, __fds=0x7f338403db68) at /usr/include/bits/poll2.h:46
#2  _xcb_conn_wait (c=c@entry=0x55711937c6a0, cond=cond@entry=0x55711937c6e0, vector=vector@entry=0x0, count=count@entry=0x0)
    at xcb_conn.c:479
#3  0x00007f33a00addda in xcb_wait_for_event (c=0x55711937c6a0) at xcb_in.c:693
#4  0x00007f3385d8ca49 in QXcbEventReader::run (this=0x557119387660) at qxcbconnection.cpp:1335
#5  0x00007f339a69fb92 in QThreadPrivate::start (arg=0x557119387660) at thread/qthread_unix.cpp:368
#6  0x00007f3398d6d61b in start_thread (arg=0x7f338403e700) at pthread_create.c:465
#7  0x00007f3399a3d91f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f33a20f7940 (LWP 1326)):
---Type <return> to continue, or q <return> to quit---
#0  0x00007f339e7bc7c5 in QV4::PersistentValueStorage::allocate (this=0x55711959f670) at jsruntime/qv4persistent.cpp:189
#1  0x00007f339e9355fb in QQmlListModel::get (this=0x55711cc46e10, index=2184) at types/qqmllistmodel.cpp:2295
#2  0x00007f339e93d5d0 in QQmlListModel::qt_static_metacall (_o=_o@entry=0x55711cc46e10, _c=_c@entry=QMetaObject::InvokeMetaMethod, 
    _id=_id@entry=5, _a=_a@entry=0x7ffc2b8559d0) at .moc/moc_qqmllistmodel_p.cpp:129
#3  0x00007f339e93db45 in QQmlListModel::qt_metacall (this=0x55711cc46e10, _c=QMetaObject::InvokeMetaMethod, _id=5, 
    _a=0x7ffc2b8559d0) at .moc/moc_qqmllistmodel_p.cpp:208
#4  0x00007f339e8b5759 in QQmlObjectOrGadget::metacall (this=0x7ffc2b855d30, type=QMetaObject::InvokeMetaMethod, 
    index=<optimized out>, argv=<optimized out>) at qml/qqmlpropertycache.cpp:1713
#5  0x00007f339e832c19 in CallMethod (object=..., index=<optimized out>, returnType=<optimized out>, argCount=<optimized out>, 
    argTypes=<optimized out>, engine=<optimized out>, callArgs=<optimized out>, callType=<optimized out>)
    at jsruntime/qv4qobjectwrapper.cpp:1086
#6  0x00007f339e83463e in CallPrecise (object=..., data=..., engine=engine@entry=0x557119592730, 
    callArgs=callArgs@entry=0x7f33791a0650, callType=callType@entry=QMetaObject::InvokeMetaMethod)
    at jsruntime/qv4qobjectwrapper.cpp:1348
#7  0x00007f339e835329 in QV4::QObjectMethod::callInternal (this=<optimized out>, callData=0x7f33791a0650, scope=...)
    at jsruntime/qv4qobjectwrapper.cpp:1842
---Type <return> to continue, or q <return> to quit---
#8  0x00007f339e84e3fd in QV4::Object::call (d=0x7f33791a0650, scope=..., this=<optimized out>) at jsruntime/qv4object_p.h:372
#9  QV4::Runtime::method_callProperty (engine=0x557119592730, nameIndex=<optimized out>, callData=0x7f33791a0650)
    at jsruntime/qv4runtime.cpp:1104
#10 0x00007f32cf323183 in ?? ()
#11 0x000055711d7fb4a0 in ?? ()
#12 0xf02ed8d3ae10c300 in ?? ()
#13 0x0000000000000000 in ?? ()

(gdb) quit
Comment 1 Germano Massullo 2018-01-21 15:37:25 UTC
Some other infos
KDE Frameworks 5.42.0
Qt 5.9.2

Moreover, maybe unrelated to the bug, but I have noticed that everytime Plasma ceases to hang, a popup of updates notification appears from the Plasma panel notification icon
Comment 2 Germano Massullo 2018-01-21 17:59:46 UTC
top entry

 1326 user  20   0 6892980 1,241g  39340 R  99,7 33,2  20:35.68 plasmashell
Comment 3 Christoph Feck 2018-02-16 01:10:29 UTC
Could you please try with a fresh Plasma configuration? (Move ~/.config/plasma*rc temporary away, or create a new user account)

If this is not reproducible there, try to find out which change causes the CPU issue. Otherwise, even try to remove the default widgets (task bar, notification area, etc.)

It could give us a clue which part of the code is responsible for the CPU usage.
Comment 4 Christoph Feck 2018-03-01 01:36:12 UTC
If you can provide the information requested in comment #3, please add it.
Comment 5 Christoph Feck 2018-03-29 14:08:15 UTC
To further investigate this issue, Plasma developers need the information requested in comment #3. If you can provide it, or need help with finding
 that information, please add a comment.
Comment 6 Germano Massullo 2018-03-29 16:01:07 UTC
(In reply to Christoph Feck from comment #5)
> To further investigate this issue, Plasma developers need the information
> requested in comment #3. If you can provide it, or need help with finding
>  that information, please add a comment.

I currently cannot reproduce the bug. As soon it will happen again I will provide needed infos
Comment 7 Christoph Feck 2018-04-26 21:31:30 UTC
Thanks for the update; changing status. If you see this issue again, please add a comment or reopen the ticket.