Summary: | kscreen KCM cannot be used if KSCREEN_BACKEND is not set | ||
---|---|---|---|
Product: | [Plasma] KScreen | Reporter: | Andreas Cord-Landwehr <cordlandwehr> |
Component: | kcm | Assignee: | Sebastian Kügler <sebas> |
Status: | RESOLVED WORKSFORME | ||
Severity: | major | CC: | kde |
Priority: | NOR | ||
Version First Reported In: | git | ||
Target Milestone: | --- | ||
Platform: | Debian testing | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Andreas Cord-Landwehr
2016-07-03 15:00:40 UTC
I'm a bit puzzled. kscreen-doctor and the kscreen KCM use the same method to load the backend (GetConfigOperation). GetConfigOperation internally asks the backendmanager for the preferred backend, if that's xrandr, it loads the plugin out of process, any other backend loads in process. On X11, it should never actually hit configoperation.cpp:137 since that's the in-process codepath, are you sure it goes through that function? backendmanager.cpp decides in its ctor which method (InProcess / OutOfProcess it uses), after choosing the backend plugin. Moreover, it works on my system as expected, no KSCREEN_BACKEND env var is set. You are right; I looked at the wrong code location. Here is a probably more verbose output. I now generated a backtrace for getting the debug message: kcmshell5(30793)/(kscreen) KScreen::BackendManager::startBackend: starting external backend launcher for "" At this point, I have (added an assert in "/opt/kde/src/kde/workspace/libkscreen/src/backendmanager.cpp", line=291): #5 0x00007fffda2f3bc6 in KScreen::BackendManager::startBackend(QString const&, QMap<QString, QVariant> const&) (this=0x6af270, backend=..., arguments=...) at /opt/kde/src/kde/workspace/libkscreen/src/backendmanager.cpp:291 #6 0x00007fffda2f3aca in KScreen::BackendManager::requestBackend() (this=0x6af270) at /opt/kde/src/kde/workspace/libkscreen/src/backendmanager.cpp:276 #7 0x00007fffda2fe5cb in KScreen::ConfigOperationPrivate::requestBackend() (this=0x9265f0) at /opt/kde/src/kde/workspace/libkscreen/src/configoperation.cpp:45 #8 0x00007fffda30019e in KScreen::GetConfigOperation::start() (this=0x92bfd0) at /opt/kde/src/kde/workspace/libkscreen/src/getconfigoperation.cpp:178 #9 0x00007fffda315dcd in KScreen::ConfigOperation::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x92bfd0, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x92bd10) at /opt/kde/build/kde/workspace/libkscreen/src/moc_configoperation.cpp:81 #10 0x00007ffff4d8ad07 in QMetaCallEvent::placeMetaCall(QObject*) (this=0x93afb0, object=0x92bfd0) at kernel/qobject.cpp:495 #11 0x00007ffff4d8bda0 in QObject::event(QEvent*) (this=0x92bfd0, e=0x93afb0) at kernel/qobject.cpp:1256 #12 0x00007ffff594a4f2 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=0x61a250, receiver=0x92bfd0, e=0x93afb0) at kernel/qapplication.cpp:3804 #13 0x00007ffff59478bd in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd1f0, receiver=0x92bfd0, e=0x93afb0) at kernel/qapplication.cpp:3163 #14 0x00007ffff4d51bfa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x92bfd0, event=0x93afb0) at kernel/qcoreapplication.cpp:1015 #15 0x00007ffff4d55c30 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x92bfd0, event=0x93afb0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:225 #16 0x00007ffff4d52fe2 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x6190d0) at kernel/qcoreapplication.cpp:1650 #17 0x00007ffff4d52962 in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1508 #18 0x00007ffff4dcbb2c in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x672fb0) at kernel/qeventdispatcher_glib.cpp:270 #19 0x00007fffed56a1a7 in g_main_context_dispatch (context=0x7fffdc0016f0) at /build/glib2.0-wnDt2X/glib2.0-2.48.1/./glib/gmain.c:3154 #20 0x00007fffed56a1a7 in g_main_context_dispatch (context=context@entry=0x7fffdc0016f0) at /build/glib2.0-wnDt2X/glib2.0-2.48.1/./glib/gmain.c:3769 #21 0x00007fffed56a400 in g_main_context_iterate (context=context@entry=0x7fffdc0016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /build/glib2.0-wnDt2X/glib2.0-2.48.1/./glib/gmain.c:3840 ---Type <return> to continue, or q <return> to quit--- #22 0x00007fffed56a4ac in g_main_context_iteration (context=0x7fffdc0016f0, may_block=1) at /build/glib2.0-wnDt2X/glib2.0-2.48.1/./glib/gmain.c:3901 #23 0x00007ffff4dcc305 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x67ceb0, flags=...) at kernel/qeventdispatcher_glib.cpp:417 #24 0x00007fffe78cce86 in QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x67ceb0, flags=...) at eventdispatchers/qeventdispatcher_glib.cpp:115 #25 0x00007ffff4d4e570 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffffffd050, flags=...) at kernel/qeventloop.cpp:128 #26 0x00007ffff4d4e86c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffffffd050, flags=...) at kernel/qeventloop.cpp:204 #27 0x00007ffff4d52344 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1285 #28 0x00007ffff517d598 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1607 #29 0x00007ffff59472a1 in QApplication::exec() () at kernel/qapplication.cpp:2979 #30 0x00007ffff7bd4210 in kdemain(int, char**) (_argc=2, _argv=0x7fffffffdb18) at /opt/kde/src/kde/workspace/kde-cli-tools/kcmshell/main.cpp:294 #31 0x00000000004009a8 in main(int, char**) (argc=2, argv=0x7fffffffdb18) at /opt/kde/build/kde/workspace/kde-cli-tools/kcmshell/kcmshell5_dummy.cpp:3 After some major cleanup of my .config and .local directories (grown since the first Qt5 based pre-alpha versions), I cannot reproduce this issue anymore. So, I will close it. I have this problem currently after doing a KDE5 custom build to /opt/kde5. I first thought it was due to conflicts with system KDE but after removing that kscreen still didn't work. Fortunately I found this bug and setting KSCREEN_BACKEND manually makes the kcm owrk. carewolf@twilight% systemsettings5 org.kde.kactivities.lib.core: Killing the consumer kscreen: Failed to request backend: "org.freedesktop.DBus.Error.ServiceUnknown" : "The name org.kde.KScreen was not provided by any .service files" org.kde.kactivities.lib.core: Killing the consumer org.kde.kactivities.lib.core: Killing the consumer carewolf@twilight% export KSCREEN_BACKEND=KSC_XRandR.so carewolf@twilight% systemsettings5 org.kde.kactivities.lib.core: Killing the consumer carewolf@twilight% |