Powerdevil: allow using qt5widget classes with powerdevil
AbandonedPublic

Authored by alnikiforov on Feb 10 2020, 9:47 AM.

Details

Summary

This change fixes crash caused by kidletime with powerdevil

Diff Detail

Repository
R122 Powerdevil
Lint
Lint Skipped
Unit
Unit Tests Skipped
alnikiforov created this revision.Feb 10 2020, 9:47 AM
Restricted Application added a project: Plasma. · View Herald TranscriptFeb 10 2020, 9:47 AM
Restricted Application added a subscriber: plasma-devel. · View Herald Transcript
alnikiforov requested review of this revision.Feb 10 2020, 9:47 AM
alnikiforov retitled this revision from Powerdevil: allow using qt5widget classes with powerdevil to Powerdevil: allow using qt5widget classes with powerdevil.
alnikiforov edited the summary of this revision. (Show Details)
alnikiforov planned changes to this revision.Feb 10 2020, 10:00 AM

I've hit this crash trying to use KDE via x2go (https://wiki.x2go.org/doku.php) with both x2go client and server running in two separate VMs.

Here's backtrace of crash:

Application: Система управления питанием KDE (org_kde_powerdevil), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
29	  return SYSCALL_CANCEL (poll, fds, nfds, timeout);
[Current thread is 1 (Thread 0x7f2cd1193c80 (LWP 17036))]

Thread 5 (Thread 0x7f2cce4c8700 (LWP 17055)):
#0  __GI___libc_read (nbytes=16, buf=0x7f2cce4c7cd0, fd=12) at ../sysdeps/unix/sysv/linux/read.c:27
#1  __GI___libc_read (fd=12, buf=buf@entry=0x7f2cce4c7cd0, nbytes=nbytes@entry=16) at ../sysdeps/unix/sysv/linux/read.c:25
#2  0x00007f2cd43d40a0 in read (__nbytes=16, __buf=0x7f2cce4c7cd0, __fd=<optimized out>) at /usr/include/bits/unistd.h:44
#3  g_wakeup_acknowledge (wakeup=0x171e270) at ../glib/gwakeup.c:210
#4  0x00007f2cd438d3cf in g_main_context_check (context=context@entry=0x17234d0, max_priority=2147483647, fds=fds@entry=0x16f6680, n_fds=n_fds@entry=1) at ../glib/gmain.c:3705
#5  0x00007f2cd438d8a0 in g_main_context_iterate (context=0x17234d0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3924
#6  0x00007f2cd438dc82 in g_main_loop_run (loop=0x17235c0) at ../glib/gmain.c:4123
#7  0x00007f2ccf0e0db6 in gdbus_shared_thread_func (user_data=0x17234a0) at ../gio/gdbusprivate.c:275
#8  0x00007f2cd43b64ed in g_thread_proxy (data=0x17120a0) at ../glib/gthread.c:805
#9  0x00007f2cd4d92ed3 in start_thread (arg=<optimized out>) at pthread_create.c:463
#10 0x00007f2cd570685f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f2ccecc9700 (LWP 17054)):
#0  0x00007f2cd56fc2b9 in __GI___poll (fds=0x170e3a0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f2cd438d8f6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x170e3a0, timeout=<optimized out>, context=0x1711bd0) at ../glib/gmain.c:4228
#2  g_main_context_iterate (context=context@entry=0x1711bd0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3922
#3  0x00007f2cd438da1c in g_main_context_iteration (context=0x1711bd0, may_block=may_block@entry=1) at ../glib/gmain.c:3988
#4  0x00007f2cd438da61 in glib_worker_main (data=<optimized out>) at ../glib/gmain.c:5868
#5  0x00007f2cd43b64ed in g_thread_proxy (data=0x1712000) at ../glib/gthread.c:805
#6  0x00007f2cd4d92ed3 in start_thread (arg=<optimized out>) at pthread_create.c:463
#7  0x00007f2cd570685f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f2ccfa69700 (LWP 17053)):
#0  0x00007f2cd56fc2b9 in __GI___poll (fds=0x7f2cc0011b20, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f2cd438d8f6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f2cc0011b20, timeout=<optimized out>, context=0x7f2cc0000bf0) at ../glib/gmain.c:4228
#2  g_main_context_iterate (context=context@entry=0x7f2cc0000bf0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3922
#3  0x00007f2cd438da1c in g_main_context_iteration (context=0x7f2cc0000bf0, may_block=may_block@entry=1) at ../glib/gmain.c:3988
#4  0x00007f2cd5ca8e43 in QEventDispatcherGlib::processEvents (this=0x7f2cc0000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#5  0x00007f2cd5c5419b in QEventLoop::exec (this=this@entry=0x7f2ccfa68d70, flags=..., flags@entry=...) at ../../src/corelib/global/qflags.h:140
#6  0x00007f2cd5a8fd7e in QThread::exec (this=this@entry=0x7f2cd5fa6d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../src/corelib/global/qflags.h:120
#7  0x00007f2cd5f26565 in QDBusConnectionManager::run (this=0x7f2cd5fa6d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178
#8  0x00007f2cd5a91142 in QThreadPrivate::start (arg=0x7f2cd5fa6d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:361
#9  0x00007f2cd4d92ed3 in start_thread (arg=<optimized out>) at pthread_create.c:463
#10 0x00007f2cd570685f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f2cd02d8700 (LWP 17048)):
#0  0x00007f2cd56fc2b9 in __GI___poll (fds=fds@entry=0x7f2cd02d7ca8, nfds=nfds@entry=1, timeout=timeout@entry=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f2cd4e04cd7 in poll (__timeout=-1, __nfds=1, __fds=0x7f2cd02d7ca8) at /usr/include/bits/poll2.h:46
#2  _xcb_conn_wait (c=c@entry=0x16bf500, cond=cond@entry=0x16bf540, vector=vector@entry=0x0, count=count@entry=0x0) at xcb_conn.c:479
#3  0x00007f2cd4e0684a in xcb_wait_for_event (c=c@entry=0x16bf500) at xcb_in.c:697
#4  0x00007f2cd0ecf770 in QXcbEventQueue::run (this=0x16cf800) at qxcbeventqueue.cpp:228
#5  0x00007f2cd5a91142 in QThreadPrivate::start (arg=0x16cf800) at thread/qthread_unix.cpp:361
#6  0x00007f2cd4d92ed3 in start_thread (arg=<optimized out>) at pthread_create.c:463
#7  0x00007f2cd570685f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f2cd1193c80 (LWP 17036)):
[KCrash Handler]
#7  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#8  0x00007f2cd5630515 in __GI_abort () at abort.c:79
#9  0x00007f2cd5a599ab in qt_message_fatal (context=..., message=<synthetic pointer>...) at global/qlogging.cpp:1907
#10 QMessageLogger::fatal (this=this@entry=0x7ffd606ada50, msg=msg@entry=0x7f2cd6a3d3a0 "QWidget: Cannot create a QWidget without QApplication") at global/qlogging.cpp:888
#11 0x00007f2cd66b5aa0 in QWidgetPrivate::init (this=0x1760400, parentWidget=0x0, f=...) at ../../src/corelib/global/qlogging.h:91
#12 0x00007f2cd534a069 in WidgetBasedPoller::setUpPoller (this=0x1764a90) at /usr/include/qt5/QtCore/qflags.h:120
#13 0x00007f2cd5349299 in KIdleTime::KIdleTime (this=0x17712c0) at /usr/src/debug/kidletime-5.66.0/src/kidletime.cpp:86
#14 0x00007f2cd53494b2 in KIdleTime::instance () at /usr/src/debug/kidletime-5.66.0/src/kidletime.cpp:51
#15 0x00007f2cd6dc17f9 in PowerDevil::Core::onBackendReady (this=0x7f2cc000cbe0) at /usr/src/debug/powerdevil-5.17.5/daemon/powerdevilcore.cpp:145
#16 0x00007f2cd6df3fcd in PowerDevil::Core::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /usr/src/debug/powerdevil-5.17.5/BUILD/daemon/powerdevilcore_autogen/EWIEGA46WW/moc_powerdevilcore.cpp:223
#17 0x00007f2cd5c7f1c3 in QMetaObject::activate (sender=0x1758400, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3803
#18 0x00007f2ccdc5e329 in PowerDevilUPowerBackend::initWithBrightness (this=0x1758400, screenBrightnessAvailable=<optimized out>) at /usr/include/qt5/QtCore/qhash.h:253
#19 0x00007f2cd5c7f320 in QtPrivate::QSlotObjectBase::call (a=0x7ffd606adfc0, r=0x1758400, this=0x1703f40) at ../../src/corelib/kernel/qobjectdefs_impl.h:394
#20 QMetaObject::activate (sender=0x1758400, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3783
#21 0x00007f2ccdc6b50f in PowerDevilUPowerBackend::brightnessSupportQueried (this=<optimized out>, _t1=<optimized out>, _t1@entry=false) at /usr/src/debug/powerdevil-5.17.5/BUILD/daemon/backends/powerdevilupowerbackend_autogen/ABOJKECN2B/moc_powerdevilupowerbackend.cpp:222
#22 0x00007f2ccdc5ad4e in PowerDevilUPowerBackend::<lambda()>::operator() (__closure=0x171ab10, __closure=0x171ab10) at /usr/src/debug/powerdevil-5.17.5/daemon/backends/upower/powerdevilupowerbackend.cpp:170
#23 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, PowerDevilUPowerBackend::init()::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#24 QtPrivate::Functor<PowerDevilUPowerBackend::init()::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#25 QtPrivate::QFunctorSlotObject<PowerDevilUPowerBackend::init()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x171ab00, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:439
#26 0x00007f2cd5c7f320 in QtPrivate::QSlotObjectBase::call (a=0x7ffd606ae190, r=0x1758400, this=0x171ab00) at ../../src/corelib/kernel/qobjectdefs_impl.h:394
#27 QMetaObject::activate (sender=0x173d4b0, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3783
#28 0x00007f2cd6c0886c in KJob::result (this=this@entry=0x173d4b0, _t1=<optimized out>, _t1@entry=0x173d4b0, _t2=...) at /usr/src/debug/kcoreaddons-5.66.0/BUILD/src/lib/KF5CoreAddons_autogen/include/moc_kjob.cpp:573
#29 0x00007f2cd6c09333 in KJob::finishJob (this=0x173d4b0, emitResult=<optimized out>) at /usr/src/debug/kcoreaddons-5.66.0/src/lib/jobs/kjob.cpp:107
#30 0x00007f2cd6c0b18a in KJob::emitResult (this=<optimized out>) at /usr/src/debug/kcoreaddons-5.66.0/src/lib/jobs/kjob.cpp:291
#31 0x00007f2cd4dca324 in KAuth::ExecuteJob::Private::actionPerformedSlot (taction=..., reply=..., this=0x16eb5b0) at /usr/src/debug/kauth-5.66.0/src/kauthexecutejob.cpp:214
#32 KAuth::ExecuteJob::Private::actionPerformedSlot (this=0x16eb5b0, taction=..., reply=...) at /usr/src/debug/kauth-5.66.0/src/kauthexecutejob.cpp:204
#33 0x00007f2cd4dcaf91 in KAuth::ExecuteJob::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /usr/src/debug/kauth-5.66.0/BUILD/src/KF5AuthCore_autogen/include/moc_kauthexecutejob.cpp:119
#34 0x00007f2cd5c7f1c3 in QMetaObject::activate (sender=0x7f2cb8009630, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>) at kernel/qobject.cpp:3803
#35 0x00007f2ccdcc1c5a in KAuth::HelperProxy::actionPerformed (this=this@entry=0x7f2cb8009630, _t1=..., _t2=...) at /usr/src/debug/kauth-5.66.0/BUILD/src/kauth_helper_plugin_autogen/include/moc_HelperProxy.cpp:187
#36 0x00007f2ccdcbb942 in KAuth::DBusHelperProxy::remoteSignalReceived (this=0x7f2cb8009630, t=<optimized out>, action=..., blob=...) at /usr/src/debug/kauth-5.66.0/src/backends/dbus/DBusHelperProxy.cpp:165
#37 0x00007f2ccdcc22d3 in KAuth::DBusHelperProxy::qt_static_metacall (_o=_o@entry=0x7f2cb8009630, _id=_id@entry=3, _a=_a@entry=0x7ffd606ae570, _c=QMetaObject::InvokeMetaMethod) at /usr/include/qt5/QtCore/qrefcount.h:60
#38 0x00007f2ccdcc26d1 in KAuth::DBusHelperProxy::qt_static_metacall (_a=0x7ffd606ae570, _id=3, _c=QMetaObject::InvokeMetaMethod, _o=0x7f2cb8009630) at /usr/src/debug/kauth-5.66.0/BUILD/src/kauth_helper_plugin_autogen/MUU32XXNVO/moc_DBusHelperProxy.cpp:145
#39 KAuth::DBusHelperProxy::qt_metacall (this=0x7f2cb8009630, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7ffd606ae570) at /usr/src/debug/kauth-5.66.0/BUILD/src/kauth_helper_plugin_autogen/MUU32XXNVO/moc_DBusHelperProxy.cpp:145
#40 0x00007f2cd5f31dba in QDBusConnectionPrivate::deliverCall (this=<optimized out>, object=<optimized out>, msg=..., metaTypes=..., slotIdx=<optimized out>) at qdbusintegrator.cpp:991
#41 0x00007f2cd5c7fac2 in QObject::event (this=0x7f2cb8009630, e=<optimized out>) at kernel/qobject.cpp:1260
#42 0x00007f2cd5c55589 in QCoreApplication::notifyInternal2 (receiver=0x7f2cb8009630, event=0x7f2cc0012d00) at ../../src/corelib/thread/qthread_p.h:322
#43 0x00007f2cd5c585c7 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x16a8da0) at kernel/qcoreapplication.cpp:1825
#44 0x00007f2cd5ca9823 in postEventSourceDispatch (s=0x16cf720) at kernel/qeventdispatcher_glib.cpp:276
#45 0x00007f2cd438d6ee in g_main_dispatch (context=0x7f2cc8004fd0) at ../glib/gmain.c:3189
#46 g_main_context_dispatch (context=context@entry=0x7f2cc8004fd0) at ../glib/gmain.c:3854
#47 0x00007f2cd438d988 in g_main_context_iterate (context=context@entry=0x7f2cc8004fd0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3927
#48 0x00007f2cd438da1c in g_main_context_iteration (context=0x7f2cc8004fd0, may_block=may_block@entry=1) at ../glib/gmain.c:3988
#49 0x00007f2cd5ca8e27 in QEventDispatcherGlib::processEvents (this=0x16b03d0, flags=...) at kernel/qeventdispatcher_glib.cpp:422
#50 0x00007f2cd5c5419b in QEventLoop::exec (this=this@entry=0x7ffd606ae9a0, flags=..., flags@entry=...) at ../../src/corelib/global/qflags.h:140
#51 0x00007f2cd5c5c162 in QCoreApplication::exec () at ../../src/corelib/global/qflags.h:120
#52 0x00007f2cd60bebcc in QGuiApplication::exec () at kernel/qguiapplication.cpp:1784
#53 0x0000000000406c62 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/powerdevil-5.17.5/daemon/powerdevilapp.cpp:221
[Inferior 1 (process 17036) detached]
davidedmundson requested changes to this revision.Feb 10 2020, 10:10 AM

Lets fix KIdleTime instead.

It doesn't need a widget to make an offscreen window

Please check out D27279

Thanks, I'll try reworking KIdleTime.

alnikiforov abandoned this revision.Feb 13 2020, 1:12 PM

Abandoning in favour of D27279 and D27357