Bug 345141 - plasmashell crashes with systemloadviewer applet during some CPU/Memory spikes
Summary: plasmashell crashes with systemloadviewer applet during some CPU/Memory spikes
Status: RESOLVED WORKSFORME
Alias: None
Product: plasmashell
Classification: Plasma
Component: general (show other bugs)
Version: 5.2.0
Platform: Kubuntu Linux
: NOR crash
Target Milestone: 1.0
Assignee: David Edmundson
URL:
Keywords:
: 342830 345722 346358 346650 346769 347241 348332 348421 348745 349101 349375 350146 350338 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-03-14 12:13 UTC by Rafael Kolless
Modified: 2015-08-06 07:57 UTC (History)
23 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Backtrace of crash (75.74 KB, text/plain)
2015-03-14 12:15 UTC, Rafael Kolless
Details
Reproduced situation in Virtualbox shows situation (2.81 MB, video/webm)
2015-03-14 12:18 UTC, Rafael Kolless
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Rafael Kolless 2015-03-14 12:13:34 UTC
I open the "Dashboard overlay" and choose "Add widgets" and after this I choose "Download additional widgets"
The crash happens within several seconds and is reproducable. Moving the mouse cursor shortens the time you have to wait for the crash. 

Reproducible: Always

Steps to Reproduce:
1. Switch to "View Dashboard"
2. Click on additonal widgets
3. Choose "Download widgets"

Actual Results:  
plasmashell is crashes. The backtrace is too long for the comment fields. I will attach them.


Qt Version: 5.4.0
Operating System: Linux 3.16.0-31-generic x86_64
Distribution: Ubuntu 14.10
Comment 1 Rafael Kolless 2015-03-14 12:15:32 UTC
Created attachment 91556 [details]
Backtrace of crash
Comment 2 Rafael Kolless 2015-03-14 12:18:23 UTC
Created attachment 91557 [details]
Reproduced situation in Virtualbox shows situation
Comment 3 Bhushan Shah 2015-03-14 12:19:37 UTC
Comment on attachment 91556 [details]
Backtrace of crash

Pasting backtrace inline

Thread 1 (Thread 0x7fdd8efb0880 (LWP 2377)):
[KCrash Handler]
#5  0x00007fdd8c32cdc0 in isObject (this=<optimized out>) at ../../include/QtQml/5.4.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_inl_p.h:65
#6  as<QV4::VariantObject> (this=<optimized out>) at ../../include/QtQml/5.4.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_inl_p.h:276
#7  value_cast<QV4::VariantObject> (v=...) at ../../include/QtQml/5.4.0/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h:558
#8  Scoped (v=<optimized out>, scope=<synthetic pointer>, this=<synthetic pointer>) at ../../include/QtQml/5.4.0/QtQml/private/../../../../../src/qml/jsruntime/qv4scopedvalue_p.h:304
#9  QQmlVMEMetaObject::writeVarProperty (this=0x7736290, id=1, value=...) at qml/qqmlvmemetaobject.cpp:1030
#10 0x00007fdd8c3478d4 in QQmlPropertyPrivate::writeBinding (object=0x0, core=..., context=0x7e56bf0, expression=0x7241430, result=..., isUndefined=false, flags=...) at qml/qqmlproperty.cpp:1539
#11 0x00007fdd8c3b900f in QQmlBinding::update (this=0x7241410, flags=...) at qml/qqmlbinding.cpp:224
#12 0x00007fdd8c3b976e in update (this=<optimized out>) at qml/qqmlbinding_p.h:97
#13 QQmlBinding::expressionChanged (e=<optimized out>) at qml/qqmlbinding.cpp:285
#14 0x00007fdd8c393bb7 in QQmlNotifier::emitNotify (endpoint=0x87bbda0, a=a@entry=0x7fff0b742f70) at qml/qqmlnotifier.cpp:73
#15 0x00007fdd8c33301c in QQmlData::signalEmitted (object=0x74c1370, index=29, a=0x7fff0b742f70) at qml/qqmlengine.cpp:715
#16 0x00007fdd8a633dd1 in QMetaObject::activate (sender=0x74c1370, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff0b742f70) at kernel/qobject.cpp:3603
#17 0x00007fdd8c32beef in QQmlVMEMetaObject::metaCall (this=0x7b8dfe0, c=QMetaObject::InvokeMetaMethod, _id=38, a=0x7fff0b742f70) at qml/qqmlvmemetaobject.cpp:914
#18 0x00007fdd8c309f1d in CallMethod (object=0x0, index=1282983752, returnType=43, argCount=0, argTypes=0x7fdc46fff0e0, engine=0x0, callArgs=0x7fdc46fff088) at jsruntime/qv4qobjectwrapper.cpp:1165
#19 0x00007fdd8c30c545 in CallPrecise (object=0x74c1370, data=..., engine=0x760d790, callArgs=0x7fdc46fff088) at jsruntime/qv4qobjectwrapper.cpp:1403
#20 0x00007fdd8c30cc63 in QV4::QObjectMethod::callInternal (this=<optimized out>, callData=0x7fdc46fff088) at jsruntime/qv4qobjectwrapper.cpp:1884
#21 0x00007fdd8c3181f2 in call (d=0x7fdc46fff088, this=<optimized out>) at jsruntime/qv4object_p.h:278
#22 QV4::Runtime::callActivationProperty (context=<optimized out>, name=0x7fdc4c74c610, callData=0x7fdc46fff088) at jsruntime/qv4runtime.cpp:904
#23 0x00007fdc4c709da6 in ?? ()
#24 0x0000000007b56b70 in ?? ()
#25 0x0000000007b56b70 in ?? ()
#26 0x00007fdc4cd38000 in ?? ()
#27 0x00007fdc46fff058 in ?? ()
#28 0x00007fdc4cd38000 in ?? ()
#29 0x0000000007b56b70 in ?? ()
#30 0x0000000007b56b70 in ?? ()
#31 0x0000000007b56b70 in ?? ()
#32 0x00007fdc4cd38000 in ?? ()
#33 0x00007fdd8c2c8eb6 in QV4::SimpleScriptFunction::call (that=0x7fdc4c74db70, callData=<optimized out>) at jsruntime/qv4functionobject.cpp:511
#34 0x00007fdd8c3b07af in call (d=<optimized out>, this=<optimized out>) at ../../include/QtQml/5.4.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h:278
#35 QQmlJavaScriptExpression::evaluate (this=0x7b36c60, context=<optimized out>, function=..., callData=<optimized out>, isUndefined=0x0) at qml/qqmljavascriptexpression.cpp:158
#36 0x00007fdd8c3549d6 in QQmlBoundSignalExpression::evaluate (this=0x7b36c40, a=0x7fff0b7437d0) at qml/qqmlboundsignal.cpp:281
#37 0x00007fdd8c35541b in QQmlBoundSignal_callback (e=0x6ed7648, a=0x7fff0b743ae0) at qml/qqmlboundsignal.cpp:408
#38 0x00007fdd8c393bb7 in QQmlNotifier::emitNotify (endpoint=0x6ed7648, a=a@entry=0x7fff0b743ae0) at qml/qqmlnotifier.cpp:73
#39 0x00007fdd8c33301c in QQmlData::signalEmitted (object=0x74c1370, index=3, a=0x7fff0b743ae0) at qml/qqmlengine.cpp:715
#40 0x00007fdd8a633dd1 in QMetaObject::activate (sender=sender@entry=0x74c1370, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff0b743ae0) at kernel/qobject.cpp:3603
#41 0x00007fdd8a634ce7 in QMetaObject::activate (sender=sender@entry=0x74c1370, m=m@entry=0x7fdd78348960 <Plasma::DataSource::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff0b743ae0) at kernel/qobject.cpp:3582
#42 0x00007fdd78133797 in Plasma::DataSource::newData (this=this@entry=0x74c1370, _t1=..., _t2=...) at moc_datasource.cpp:358
#43 0x00007fdd78122c8a in Plasma::DataSource::dataUpdated (this=0x74c1370, sourceName=..., data=...) at ../../../../src/declarativeimports/core/datasource.cpp:151
#44 0x00007fdd7813509d in Plasma::DataSource::qt_static_metacall (_o=0x0, _c=1282983752, _id=1191178480, _a=0x0) at moc_datasource.cpp:178
#45 0x00007fdd8a634659 in QMetaObject::activate (sender=sender@entry=0x69730c0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff0b743cf0) at kernel/qobject.cpp:3716
#46 0x00007fdd8a634ce7 in QMetaObject::activate (sender=sender@entry=0x69730c0, m=m@entry=0x7fdd8e6f2fc0 <Plasma::SignalRelay::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff0b743cf0) at kernel/qobject.cpp:3582
#47 0x00007fdd8e49adf7 in Plasma::SignalRelay::dataUpdated (this=this@entry=0x69730c0, _t1=..., _t2=...) at ./moc_datacontainer_p.cpp:125
#48 0x00007fdd8e49b501 in Plasma::SignalRelay::timerEvent (this=0x69730c0, event=<optimized out>) at ../../../src/plasma/private/datacontainer_p.cpp:157
#49 0x00007fdd8a635773 in QObject::event (this=0x69730c0, e=<optimized out>) at kernel/qobject.cpp:1267
#50 0x00007fdd8af0ad3c in QApplicationPrivate::notify_helper (this=0x26413d0, receiver=0x69730c0, e=0x7fff0b744010) at kernel/qapplication.cpp:3722
#51 0x00007fdd8af10330 in QApplication::notify (this=0x7fff0b7443c0, receiver=0x69730c0, e=0x7fff0b744010) at kernel/qapplication.cpp:3505
#52 0x00007fdd8a60503b in QCoreApplication::notifyInternal (this=0x7fff0b7443c0, receiver=0x69730c0, event=event@entry=0x7fff0b744010) at kernel/qcoreapplication.cpp:932
#53 0x00007fdd8a65b1a5 in sendEvent (event=0x7fff0b744010, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
#54 QTimerInfoList::activateTimers (this=0x26789f0) at kernel/qtimerinfo_unix.cpp:635
#55 0x00007fdd8a65b609 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:177
#56 idleTimerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:224
#57 0x00007fdd86619c5d in g_main_dispatch (context=0x7fdd740016f0) at /build/buildd/glib2.0-2.42.1/./glib/gmain.c:3111
#58 g_main_context_dispatch (context=context@entry=0x7fdd740016f0) at /build/buildd/glib2.0-2.42.1/./glib/gmain.c:3710
#59 0x00007fdd86619f48 in g_main_context_iterate (context=context@entry=0x7fdd740016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /build/buildd/glib2.0-2.42.1/./glib/gmain.c:3781
#60 0x00007fdd86619ffc in g_main_context_iteration (context=0x7fdd740016f0, may_block=1) at /build/buildd/glib2.0-2.42.1/./glib/gmain.c:3842
#61 0x00007fdd8a65c277 in QEventDispatcherGlib::processEvents (this=0x2684ff0, flags=...) at kernel/qeventdispatcher_glib.cpp:418
#62 0x00007fdd8a6028d2 in QEventLoop::exec (this=this@entry=0x7fff0b744260, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#63 0x00007fdd8a60a37c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1185
#64 0x00007fdd8a94abcc in QGuiApplication::exec () at kernel/qguiapplication.cpp:1535
#65 0x00007fdd8af06df5 in QApplication::exec () at kernel/qapplication.cpp:2956
#66 0x000000000042fccf in main (argc=2, argv=<optimized out>) at ../../shell/main.cpp:150

I can not reproduce this crash though with given steps
Comment 4 Bhushan Shah 2015-03-14 12:28:43 UTC
Interesting, After seeing your layout in video I have managed to find out that crash is due to system load viewer..

Can you confirm that if you remove the system load viewer applet; it no longer crashes?
Comment 5 Rafael Kolless 2015-03-14 12:32:01 UTC
Yes I can confirm it for the VM and for the native installation on hardware.
So the widget seems no like the situation.
Comment 6 Bhushan Shah 2015-03-14 12:37:35 UTC
Actually I can reproduce this even without dashboard; perhaps this is due to some spike in CPU or memory usage..
Comment 7 Rafael Kolless 2015-03-14 21:09:17 UTC
I reproduced the situation with different CPU counts in the VM.
On single core systems the crash happens shortly after loading the widget.

On a quad core system with a single numa node zone it is reproducable like in the video.
Comment 8 Robby Engelmann 2015-03-17 15:56:50 UTC
*** Bug 342830 has been marked as a duplicate of this bug. ***
Comment 9 Marco Martin 2015-03-17 16:14:31 UTC
tough it seems the crash is happening somewhere in the Javascript interpreter, not in the Plot component
Comment 10 Rafael Kolless 2015-03-17 19:57:56 UTC
Is the component widget explorer stil valid or should we change it to general?
Comment 11 Huw 2015-03-22 22:27:45 UTC
I was able to reproduce this every time, until I got rid of the system load widget.  Now I can scroll through the widget menu at will, with no crash.
Comment 12 David Edmundson 2015-03-23 11:47:59 UTC
reproduced, adding some extra info, which shouldn't be much of a surprise.

(gdb) frame 34
#34 0x00007fffda1d39fb in Plasma::DataSource::dataUpdated (this=0x20499e0, sourceName="mem/swap/used", data={...})
    at /home/david/projects/kde5/src/frameworks/plasma-framework/src/declarativeimports/core/datasource.cpp:179
179             emit newData(sourceName, data);

(gdb) print sourceName
$2 = "mem/swap/used"

(gdb) print data
$3 = {["max"] = {type = QString, data = "4093948"}, ["min"] = {type = QString, data = "0"}, ["name"] = {type = QString, data = "Used Swap Memory"}, ["type"] = {type = QString, data = "integer"}, 
  ["units"] = {type = QString, data = "KB"}, ["value"] = {type = QString, data = "443916"}}


All looks in order on our side, which makes it a Qt problem.

My working theory is that the garbage collector is running in another thread after the variant map has been copied to a JS object and it's getting lost..but obviously that shouldn't happen.

Now I can reproduce I'll upgrade to Qt5.5 and see if I still get it.
Comment 13 Bhushan Shah 2015-03-31 12:30:43 UTC
*** Bug 345722 has been marked as a duplicate of this bug. ***
Comment 14 Marco Martin 2015-04-20 09:26:12 UTC
*** Bug 346358 has been marked as a duplicate of this bug. ***
Comment 15 David Edmundson 2015-04-25 16:46:30 UTC
*** Bug 346650 has been marked as a duplicate of this bug. ***
Comment 16 Saurabh Minni 2015-04-27 12:22:52 UTC
*** Bug 346769 has been marked as a duplicate of this bug. ***
Comment 17 David Edmundson 2015-05-05 16:13:02 UTC
*** Bug 347241 has been marked as a duplicate of this bug. ***
Comment 18 Bhushan Shah 2015-05-30 02:49:20 UTC
*** Bug 348332 has been marked as a duplicate of this bug. ***
Comment 19 Bhushan Shah 2015-05-30 02:49:44 UTC
*** Bug 348421 has been marked as a duplicate of this bug. ***
Comment 20 Bhushan Shah 2015-05-31 04:28:55 UTC
FYI I can not reproduce this with Qt 5.5
Comment 21 Bhushan Shah 2015-06-05 14:00:35 UTC
*** Bug 348745 has been marked as a duplicate of this bug. ***
Comment 22 Bhushan Shah 2015-06-13 14:30:37 UTC
*** Bug 349101 has been marked as a duplicate of this bug. ***
Comment 23 Bhushan Shah 2015-06-19 12:47:15 UTC
*** Bug 349375 has been marked as a duplicate of this bug. ***
Comment 24 Bhushan Shah 2015-07-14 11:36:44 UTC
*** Bug 350146 has been marked as a duplicate of this bug. ***
Comment 25 Bhushan Shah 2015-07-18 12:50:19 UTC
*** Bug 350338 has been marked as a duplicate of this bug. ***
Comment 26 Bhushan Shah 2015-07-20 04:58:02 UTC
This seems to have been fixed with Qt 5.5. I've three different system load viewer applet on my desktop. But I can not reproduce this crash.

If you can reproduce this with Qt 5.5 please reopen.
Comment 27 André Verwijs 2015-08-06 07:57:28 UTC
OS information:
-Version-
Kernel				: Linux 4.1.3-2-desktop (x86_64)
Compiled			: #1 SMP PREEMPT Wed Jul 29 09:47:55 UTC 2015 (41613e2)
C Library				: GNU C Library version 2.21 (git 4e42b5b8f89f) (stable)
Default C Compiler		: GNU C Compiler version 5.1.1 20150713 [gcc-5-branch revision 225736] (SUSE Linux) 
Distribution				: openSUSE (TW) 20150802 (x86_64)
-Current Session-
Computer Name			: linux
User Name				: verwijs (André Verwijs)
Home Directory			: /home/verwijs
Desktop Environment		: Unknown (Window Manager: KWin)
-Misc-
Uptime			: 2 hours, 4 minutes
Load Average		: 1,00, 0,00, 0,00
-----------------------------------------------------------------------------------------------------------------------------

me getting the same....  
backtrace:  https://goo.gl/M4yTEt  (dropbox: view or download)