Bug 314922

Summary: PowerDevil crashes KDE Daemon in QVariant
Product: [Unmaintained] solid Reporter: Christopher Yeleighton <giecrilj>
Component: powermanagement-daemonAssignee: Oliver Henshaw <oliver.henshaw>
Status: RESOLVED FIXED    
Severity: crash CC: cfeck, drf, estellnb, giecrilj, kde-bugs, lukas, oliver.henshaw
Priority: NOR    
Version: 4.10.0   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 4.10.3
Sentry Crash Report:
Attachments: New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
Patch to avoid crash

Description Christopher Yeleighton 2013-02-11 18:16:07 UTC
Application: kded4 ($Id$)
KDE Platform Version: 4.9.00 (Compiled from sources)
Qt Version: 4.8.1
Operating System: Linux 3.4.11-2.16-desktop x86_64
Distribution: "openSUSE 12.2 (x86_64)"

-- Information about the crash:
- What I was doing when the application crashed:

I was waiting for KDE desktop to load. 

- Unusual behavior I noticed:

I waited longer than usual for the desktop to show up.

The crash can be reproduced some of the time.

-- Backtrace:
Application: KDE Daemon (kdeinit4), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
82	T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
[KCrash Handler]
#6  Private (other=..., this=0x7fff73cc4600) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff73cc4600, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f8f844b5ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff73cc4520, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f8f6c491e41 in argumentAt<0> (this=0x7fff73cc4520) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff73cc4520) at /usr/include/QtDBus/qdbuspendingreply.h:186
#11 PowerDevilUPowerBackend::enumerateDevices (this=this@entry=0x111df70) at /tmp/kde-krzysztof/arkoFytSM/kde-workspace-4.9.0/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp:254
#12 0x00007f8f6c492731 in PowerDevilUPowerBackend::init (this=0x111df70) at /tmp/kde-krzysztof/arkoFytSM/kde-workspace-4.9.0/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp:96
#13 0x00007f8f6c25f621 in PowerDevil::Core::loadCore (this=0x1106610, backend=<optimized out>) at /tmp/kde-krzysztof/arkoFytSM/kde-workspace-4.9.0/powerdevil/daemon/powerdevilcore.cpp:84
#14 0x00007f8f6c48cb73 in KDEDPowerDevil::init (this=0xff9430) at /tmp/kde-krzysztof/arkoFytSM/kde-workspace-4.9.0/powerdevil/daemon/kdedpowerdevil.cpp:89
#15 0x00007f8f841140ae in QObject::event (this=0xff9430, e=<optimized out>) at kernel/qobject.cpp:1204
#16 0x00007f8f8328f74c in QApplicationPrivate::notify_helper (this=this@entry=0xea22c0, receiver=receiver@entry=0xff9430, e=e@entry=0xf9ceb0) at kernel/qapplication.cpp:4554
#17 0x00007f8f83293c7a in QApplication::notify (this=0x7fff73cc5750, receiver=0xff9430, e=0xf9ceb0) at kernel/qapplication.cpp:4415
#18 0x00007f8f85142816 in KApplication::notify (this=0x7fff73cc5750, receiver=0xff9430, event=0xf9ceb0) at /home/krzysztof/proj/kdelibs-4.9.0/kdeui/kernel/kapplication.cpp:311
#19 0x00007f8f840ff73e in QCoreApplication::notifyInternal (this=0x7fff73cc5750, receiver=receiver@entry=0xff9430, event=event@entry=0xf9ceb0) at kernel/qcoreapplication.cpp:876
#20 0x00007f8f84103091 in sendEvent (event=0xf9ceb0, receiver=0xff9430) at kernel/qcoreapplication.h:231
#21 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0xe272b0) at kernel/qcoreapplication.cpp:1500
#22 0x00007f8f8412d7a3 in sendPostedEvents () at kernel/qcoreapplication.h:236
#23 postEventSourceDispatch (s=s@entry=0xea4800) at kernel/qeventdispatcher_glib.cpp:279
#24 0x00007f8f7ebca3b5 in g_main_dispatch (context=0xea3700) at gmain.c:2539
#25 g_main_context_dispatch (context=context@entry=0xea3700) at gmain.c:3075
#26 0x00007f8f7ebca6e8 in g_main_context_iterate (context=context@entry=0xea3700, block=block@entry=1, dispatch=dispatch@entry=1, self=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at gmain.c:3146
#27 0x00007f8f7ebca7a4 in g_main_context_iteration (context=0xea3700, may_block=1) at gmain.c:3207
#28 0x00007f8f8412d936 in QEventDispatcherGlib::processEvents (this=0xe2d790, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#29 0x00007f8f8332f8ae in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#30 0x00007f8f840fe73f in QEventLoop::processEvents (this=this@entry=0x7fff73cc54d0, flags=...) at kernel/qeventloop.cpp:149
#31 0x00007f8f840fe9c8 in QEventLoop::exec (this=0x7fff73cc54d0, flags=...) at kernel/qeventloop.cpp:204
#32 0x00007f8f841033a8 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#33 0x00007f8f71c6fa70 in kdemain (argc=1, argv=0xe8b130) at /home/krzysztof/proj/kdelibs-4.9.0/kded/kded.cpp:924
#34 0x0000000000408787 in launch (argc=argc@entry=1, _name=_name@entry=0x40b0f1 "kded4", args=args@entry=0x0, cwd=cwd@entry=0x0, envc=envc@entry=0, envs=<optimized out>, envs@entry=0x0, reset_env=reset_env@entry=false, tty=tty@entry=0x0, avoid_loops=avoid_loops@entry=false, startup_id_str=startup_id_str@entry=0x40afd9 "0") at /home/krzysztof/proj/kdelibs-4.9.0/kinit/kinit.cpp:734
#35 0x0000000000405e9a in main (argc=4, argv=<optimized out>, envp=0x7fff73cc6140) at /home/krzysztof/proj/kdelibs-4.9.0/kinit/kinit.cpp:1849

Possible duplicates by query: bug 307225, bug 306265, bug 304785, bug 297785, bug 295697.

Reported using DrKonqi
Comment 1 Christopher Yeleighton 2013-02-13 18:18:10 UTC
Created attachment 77260 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I opened KDE desktop and noticed DrKonqi as one of the applications.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff6cf81980) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff6cf81980, p=...) at kernel/qvariant.cpp:1411
#8  0x00007fa479431ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff6cf818a0, index=0) at qdbuspendingreply.cpp:270
#9  0x00007fa46140de41 in argumentAt<0> (this=0x7fff6cf818a0) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff6cf818a0) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 2 Christian Boltz 2013-02-15 19:24:16 UTC
I see a crash with similar backtrace on KDE 4.10 on up-to-date openSUSE Factory - updating the "version" field from 4.9.0 to 4.10.0...
Comment 3 Christopher Yeleighton 2013-02-16 09:46:19 UTC
Created attachment 77358 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff992a79d0) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff992a79d0, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f5e27516ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff992a78f0, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f5e0f4f2e41 in argumentAt<0> (this=0x7fff992a78f0) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff992a78f0) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 4 Christopher Yeleighton 2013-02-17 16:25:55 UTC
Created attachment 77383 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fffd8643f30) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fffd8643f30, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f5f80daced5 in QDBusPendingReplyData::argumentAt (this=0x7fffd8643e50, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f5f68d88e41 in argumentAt<0> (this=0x7fffd8643e50) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fffd8643e50) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 5 Christopher Yeleighton 2013-02-19 18:35:47 UTC
Created attachment 77443 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged into KDE and I was waiting for the desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff734f80d0) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff734f80d0, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f2db9220ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff734f7ff0, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f2da11fce41 in argumentAt<0> (this=0x7fff734f7ff0) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff734f7ff0) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 6 Christopher Yeleighton 2013-02-24 06:57:44 UTC
Created attachment 77538 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff6401fa60) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff6401fa60, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f0047e71ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff6401f980, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f002fc36e41 in argumentAt<0> (this=0x7fff6401f980) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff6401f980) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 7 Christopher Yeleighton 2013-02-24 14:36:03 UTC
Created attachment 77553 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff3172f590) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff3172f590, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f963f361ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff3172f4b0, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f962733be41 in argumentAt<0> (this=0x7fff3172f4b0) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff3172f4b0) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 8 Christopher Yeleighton 2013-02-25 20:00:20 UTC
Created attachment 77574 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff19ca6430) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff19ca6430, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f51c0946ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff19ca6350, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f51a8920e41 in argumentAt<0> (this=0x7fff19ca6350) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff19ca6350) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 9 Christopher Yeleighton 2013-02-26 17:54:18 UTC
Created attachment 77596 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff9e93d6f0) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff9e93d6f0, p=...) at kernel/qvariant.cpp:1411
#8  0x00007fc3b6b4ced5 in QDBusPendingReplyData::argumentAt (this=0x7fff9e93d610, index=0) at qdbuspendingreply.cpp:270
#9  0x00007fc39eb26e41 in argumentAt<0> (this=0x7fff9e93d610) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff9e93d610) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 10 Christopher Yeleighton 2013-02-27 18:15:19 UTC
Created attachment 77632 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fffc12ebfe0) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fffc12ebfe0, p=...) at kernel/qvariant.cpp:1411
#8  0x00007f3109d88ed5 in QDBusPendingReplyData::argumentAt (this=0x7fffc12ebf00, index=0) at qdbuspendingreply.cpp:270
#9  0x00007f30f1d62e41 in argumentAt<0> (this=0x7fffc12ebf00) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fffc12ebf00) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 11 Christopher Yeleighton 2013-02-28 19:20:49 UTC
Created attachment 77654 [details]
New crash information added by DrKonqi

kded4 ($Id$) on KDE Platform 4.9.00 using Qt 4.8.1

- What I was doing when the application crashed:

I had just logged in and I was waiting for the KDE desktop to show up.

-- Backtrace (Reduced):
#6  Private (other=..., this=0x7fff83ed4600) at kernel/qvariant.h:356
#7  QVariant::QVariant (this=0x7fff83ed4600, p=...) at kernel/qvariant.cpp:1411
#8  0x00007ff633362ed5 in QDBusPendingReplyData::argumentAt (this=0x7fff83ed4520, index=0) at qdbuspendingreply.cpp:270
#9  0x00007ff61b33ce41 in argumentAt<0> (this=0x7fff83ed4520) at /usr/include/QtDBus/qdbuspendingreply.h:176
#10 operator QDBusPendingReplyTypes::Select<0, QList<QDBusObjectPath>, void, void, void, void, void, void, void>::Type (this=0x7fff83ed4520) at /usr/include/QtDBus/qdbuspendingreply.h:186
Comment 12 Oliver Henshaw 2013-03-01 16:39:37 UTC
Either the UPower dbus interface doesn't exist or the EnumerateDevices call fails (times out?) I don't think it's the dbus interface because the upower backend shouldn't get loaded if the upower interface doesn't exist.

Can you tell me the result of "dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.EnumerateDevices" and roughly how long it takes to return?
Comment 13 Christian Boltz 2013-03-01 17:55:05 UTC
It indeed looks like a timeout: (tested on openSUSE Factory)

# time dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.EnumerateDevices
Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

real    0m25.063s
user    0m0.001s
sys     0m0.001s
Comment 14 Christopher Yeleighton 2013-03-02 09:15:49 UTC
{ time dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.EnumerateDevices; }
method return sender=:1.2 -> dest=:1.69 reply_serial=2
   array [
   ]

real    0m0.027s
user    0m0.001s
sys     0m0.004s
Comment 15 Oliver Henshaw 2013-03-05 13:26:56 UTC
Created attachment 77772 [details]
Patch to avoid crash

Can you try this patch? This should avoid the crash but won't prevent the slow login.

So could you also file a bug with opensuse or upstream upower about the timeout from the EnumerateDevices call and link to it here? That way we can get to the bottom of what's up with upower.
Comment 16 Christian Boltz 2013-03-05 23:08:54 UTC
I created test packages with the patch added:
https://build.opensuse.org/package/show?package=kdebase4-workspace&project=home%3Acboltz%3Abranches%3AKDE%3ADistro%3AFactory
and will report back if they fix the crash.

I also opened a bugreport for upower:
https://bugzilla.novell.com/show_bug.cgi?id=807616
Comment 17 Oliver Henshaw 2013-03-06 12:49:50 UTC
According to https://bugzilla.novell.com/show_bug.cgi?id=807616#c2 upowerd isn't starting. So powerdevil should be bailing out earlier and not trying to use the upower backend.
Comment 18 Christian Boltz 2013-03-07 22:14:09 UTC
I didn't see a crash dialog since I installed the patched package, which means your patch probably works.

Some minutes ago I updated to latest openSUSE Factory which fixed the problem with policykit and upowerd, which means I'm no longer available as tester ;-)
Comment 19 Oliver Henshaw 2013-04-03 19:24:27 UTC
Best to try and fix this so that powerdevil will check that the upower dbus service get started properly.
Comment 20 Oliver Henshaw 2013-04-03 19:25:25 UTC
*** Bug 317425 has been marked as a duplicate of this bug. ***
Comment 21 Dario Freddi 2013-04-20 14:09:49 UTC
Fixed by 144ee3d1f7a5b91e221c5af9e3720884d0acc8d8. I got it totally wrong and mentioned 316472 in the commit. Sorry for multitasking.