Bug 349911 - kglobalaccel crashes under Wayland.
Summary: kglobalaccel crashes under Wayland.
Status: RESOLVED FIXED
Alias: None
Product: frameworks-kglobalaccel
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Martin Flöser
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-07-04 20:04 UTC by bluescreenavenger
Modified: 2015-07-07 11:36 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description bluescreenavenger 2015-07-04 20:04:26 UTC
I'm not sure why. It seems to crash when QT_QPA_PLATFORM=wayland, and not crash under Wayland

but it doesn't seem to be due to an unchecked X call

Reproducible: Always


Actual Results:  
This is the stack trace I get:
program received signal SIGABRT, Aborted.
0xb7fdbbe0 in __kernel_vsyscall ()
#0  0xb7fdbbe0 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb699b057 in __GI_raise (sig=6) at ../sysdeps/unix/sysv/linux/raise.c:55
        resultvar = <optimized out>
        resultvar = <optimized out>
        pid = -1229824000
        selftid = 12121
#2  0xb699c699 in __GI_abort () at abort.c:89
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0xb48928e0, 
            sa_sigaction = 0xb48928e0}, sa_mask = {__val = {1, 134765560, 
              3086898320, 3087003648, 3066295608, 3028986432, 3071819776, 
              3086918165, 3071820216, 3028986432, 1, 5, 0, 3086933449, 1, 
              3066809280, 3221221160, 3066385976, 3071803580, 58, 0, 
              3066787514, 1, 3063370036, 3, 3221221192, 3086917979, 
              3071803380, 3221221192, 0, 1, 3086944144}}, sa_flags = -1, 
          sa_restorer = 0xb699c550 <__GI_abort>}
        sigs = {__val = {32, 0 <repeats 31 times>}}
#3  0xb6cb8cf3 in QMessageLogger::fatal(char const*, ...) const ()
   from /opt/lib/libQt5Core.so.5
No symbol table info available.
#4  0xb3e01017 in KGlobalAccelImpl::setEnabled(bool) ()
   from /opt/lib/i386-linux-gnu/plugins/org.kde.kglobalaccel5.platforms/KF5GlobalAccelPrivateKWin.so
No symbol table info available.
#5  0xb7fc2c50 in GlobalShortcutsRegistry::GlobalShortcutsRegistry (
    this=0xb7fd63e0 <(anonymous namespace)::Q_QGS__self::innerFunction()::holder>) at /srcbuild/kf5-kglobalaccel/src/runtime/globalshortcutsregistry.cpp:64
No locals.
#6  0xb7fc379b in (anonymous namespace)::Q_QGS__self::Holder::Holder (
    this=0xb7fd63e0 <(anonymous namespace)::Q_QGS__self::innerFunction()::holder>) at /srcbuild/kf5-kglobalaccel/src/runtime/globalshortcutsregistry.cpp:197
No locals.
#7  0xb7fc3826 in (anonymous namespace)::Q_QGS__self::innerFunction ()
    at /srcbuild/kf5-kglobalaccel/src/runtime/globalshortcutsregistry.cpp:197
        holder = {<(anonymous namespace)::Q_QGS__self::HolderBase> = {<No data fields>}, value = {<QObject> = {<No data fields>}, static staticMetaObject = {
              d = {superdata = 0xb71793b8 <QObject::staticMetaObject>, 
                stringdata = 0xb7fca400 <qt_meta_stringdata_GlobalShortcutsRegistry>, data = 0xb7fca540 <qt_meta_data_GlobalShortcutsRegistry>, 
                static_metacall = 0xb7fc4a3e <GlobalShortcutsRegistry::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
                relatedMetaObjects = 0x0, extradata = 0x0}}, _active_keys = {{
                d = 0xb6fc7b80 <QHashData::shared_null>, 
                e = 0xb6fc7b80 <QHashData::shared_null>}}, _components = {{
                d = 0xb6fc7b80 <QHashData::shared_null>, 
                e = 0xb6fc7b80 <QHashData::shared_null>}}, _manager = 
    0x80a0848, _config = <incomplete type>, _dbusPath = {m_path = {
                static null = {<No data fields>}, 
                d = 0xb6fc6a60 <QArrayData::shared_null>}}}}
#8  0xb7fc4c16 in QGlobalStatic<GlobalShortcutsRegistry, (* (anonymous namespace)::Q_QGS__self::innerFunction), (* & (anonymous namespace)::Q_QGS__self::guard)>::operator QGlobalStatic<GlobalShortcutsRegistry, (* (anonymous namespace)::Q_QGS__self::innerFunction), (* & (anonymous namespace)::Q_QGS__self::guard)>::Type*(void) (this=0xb7fd63d0 <_self>) at /opt/include/QtCore/qglobalstatic.h:128
No locals.
#9  0xb7fc3887 in GlobalShortcutsRegistry::self ()
    at /srcbuild/kf5-kglobalaccel/src/runtime/globalshortcutsregistry.cpp:200
No locals.
#10 0xb7fb2b3d in KGlobalAccelD::init (this=0xbffff118)
    at /srcbuild/kf5-kglobalaccel/src/runtime/kglobalacceld.cpp:214
        reg = 0x804d000
        __PRETTY_FUNCTION__ = "bool KGlobalAccelD::init()"
#11 0x0804a1ae in main (argc=1, argv=0xbffff1f4)
    at /srcbuild/kf5-kglobalaccel/src/runtime/main.cpp:93
        app = <incomplete type>
        aboutdata = {d = 0x807a300}
        __PRETTY_FUNCTION__ = "int main(int, char**)"
        service = <incomplete type>
        globalaccel = {<QObject> = {<No data fields>}, <QDBusContext> = {
            d_ptr = 0x0}, static staticMetaObject = {d = {
              superdata = 0xb71793b8 <QObject::staticMetaObject>, 
              stringdata = 0xb7fc8bc0 <qt_meta_stringdata_KGlobalAccelD>, 
              data = 0xb7fc90c0 <qt_meta_data_KGlobalAccelD>, 
              static_metacall = 0xb7fb4242 <KGlobalAccelD::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, 
              extradata = 0x0}}, d = 0x80b7750}
Comment 1 bluescreenavenger 2015-07-05 04:11:20 UTC
Seems that somehow kglobalaccel5 getting called by kded5 is getting the kwin plugin loaded...
Comment 2 Martin Flöser 2015-07-05 12:50:42 UTC
This is not surprising as the plugin aborts if it's not inside the KWin process:

qFatal("This plugin is intended to be used with KWin and this is not KWin, exiting now");

How did you run into this situation? Is that outside a KWin session?
Comment 3 bluescreenavenger 2015-07-05 13:36:04 UTC
This is outside of a kwin session under Weston. it seems kglobalaccel5 getting called constantly by kded5, and then it quits. If I don't export KDE_DEBUG=1, I get flooded by drkonqi dialogs
Comment 4 Martin Flöser 2015-07-06 03:00:13 UTC
Review request for kglobalaccel created: https://git.reviewboard.kde.org/r/124266/

And requires a small change in KWin, too.
Comment 5 Martin Flöser 2015-07-07 11:35:53 UTC
Git commit fd607506642195b1cfd58d92b5d720d888b711b1 by Martin Gräßlin.
Committed on 07/07/2015 at 11:35.
Pushed by graesslin into branch 'master'.

Introduce an env variable to overwrite the platform name

With the env variable KGLOBALACCELD_PLATFORM the platform name can
be specified, which is being used for searching for the plugin to
load. This is required because some plugins are more specific than
the supported platforms. If the environment variable is not
specified, the QGuiApplication::platformName() is used as before.
REVIEW: 124266
CHANGELOG: New env variable KGLOBALACCELD_PLATFORM to specify the platform plugin to load.

M  +6    -2    src/runtime/globalshortcutsregistry.cpp

http://commits.kde.org/kglobalaccel/fd607506642195b1cfd58d92b5d720d888b711b1
Comment 6 Martin Flöser 2015-07-07 11:36:53 UTC
Git commit 316914a38b315ef479aa413b41514ddcd9738278 by Martin Gräßlin.
Committed on 07/07/2015 at 11:36.
Pushed by graesslin into branch 'master'.

Change supported platforms of kglobalaccel plugin to "org.kde.kwin"

Overwrite the platform name through the environment variable and ensure
that the plugin is not picked in non-kwin Wayland sessions as that puts
kglobalaccel5 into a crash restart loop.

M  +1    -0    globalshortcuts.cpp
M  +1    -1    plugins/kglobalaccel/kwin.json

http://commits.kde.org/kwin/316914a38b315ef479aa413b41514ddcd9738278