KDE环境下点击「设置」中的「全局快捷键」卡死

其它类软件,非上述版软件
回复
suly
帖子: 14
注册时间: 2016-11-01 21:05
系统: Manjaro20 KDE plasma

KDE环境下点击「设置」中的「全局快捷键」卡死

#1

帖子 suly » 2020-06-20 8:51

更新1:原来是使用[Archlinuxcn]源的缘故,看来[Archlinuxcn]管理员不建议Manjaro拥护添加其源是有原因的。

解决方法:将Manjaro官方源切换到unstable,如下:
编辑/etc/pacman.d/mirrorlist,将原来的stable都改为unstable,然后sudo pacman -Syyu更新系统。

话说不知道Manjaro的unstable稳定性有么有官方说的那么不堪,先用几天试试!



---------------------------------------------------------------------------------


桌面环境:KDE 5.70.0 / Plasma 5.18.5

如题,每次打开设置后点击「快捷键」(触发的是全局快捷键,而不是另外三项快捷键,如图1)都会卡死很长时间:
图1
图1

过一会儿会弹出如图2的错误提示;
图2
图2

于是在终端下输入 systemsettings5 打开设置,先点击「快捷键」,终端中提示如下反馈:

代码: 全选

QQmlEngine::setContextForObject(): Object already has a QQmlContext
Couldn't load plugin "kcms/kcm_keys" : "共享库没有被找到。"  -- falling back to old-style loading from desktop file

继续依次点击「标准快捷键」、「网页快捷方式」和「自定义快捷键」,又分别如下提示:

代码: 全选

Couldn't load plugin "kcms/kcm_standard_actions" : "共享库没有被找到。"  -- falling back to old-style loading from desktop file
Couldn't load plugin "kcms/kcm_webshortcuts" : "共享库没有被找到。"  -- falling back to old-style loading from desktop file
Couldn't load plugin "kcms/kcm_hotkeys" : "共享库没有被找到。"  -- falling back to old-style loading from desktop file
Version 2 File!

但实际上,我查看了无论在 /lib 还是 /lib64 库中这几个共享库都有。


猜测是D-bus的问题,在网上搜索了一些答案没能解决问题,自己也不了解D-bus,求帮忙。。
上次由 suly 在 2020-06-25 16:28,总共编辑 1 次。
头像
astolia
论坛版主
帖子: 6459
注册时间: 2008-09-18 13:11

Re: KDE环境下点击「设置」中的「全局快捷键」卡死

#2

帖子 astolia » 2020-06-22 23:13

那个“KDE全局快捷键守护进程”是指kglobalaccel5这个。在我这里如果暂停它的进程,能复现你说的现象。所以应该是kglobalaccel5运行时在什么地方卡住了,无法响应外部请求。把现有的进程结束,运行strace kglobalaccel5,看它卡在哪里了
还有那几个共享库文件的问题,文件位置有点奇怪。在kubuntu 20.04上qt插件目录是/usr/lib/x86_64-linux-gnu/qt5/plugins/,你列出来的那几个文件都是安装到这个目录下的。但错误信息说是去/usr/lib/x86_64-linux-gnu/qt5/plugins/kcms下面找不到。可能是各个组件的版本对不上?你是否使用了第三方源?
suly
帖子: 14
注册时间: 2016-11-01 21:05
系统: Manjaro20 KDE plasma

Re: KDE环境下点击「设置」中的「全局快捷键」卡死

#3

帖子 suly » 2020-06-23 19:56

astolia 写了: 2020-06-22 23:13 那个“KDE全局快捷键守护进程”是指kglobalaccel5这个。在我这里如果暂停它的进程,能复现你说的现象。所以应该是kglobalaccel5运行时在什么地方卡住了,无法响应外部请求。把现有的进程结束,运行strace kglobalaccel5,看它卡在哪里了
还有那几个共享库文件的问题,文件位置有点奇怪。在kubuntu 20.04上qt插件目录是/usr/lib/x86_64-linux-gnu/qt5/plugins/,你列出来的那几个文件都是安装到这个目录下的。但错误信息说是去/usr/lib/x86_64-linux-gnu/qt5/plugins/kcms下面找不到。可能是各个组件的版本对不上?你是否使用了第三方源?
1.将kglobalaccel5进程结束后的报错如下,与原文的报错有点不一样;
图2.1
图2.1
2.把现有的kglobalaccel5进程结束后,运行strace kglobalaccel5后,部分输出如下,重点在中间两行,每次我试图点击「全局快捷键」时就会复现这两行;

代码: 全选

read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
write(2, "QDBusObjectPath: invalid path \"/"..., 64QDBusObjectPath: invalid path "/component/百度网盘_desktop"
) = 64
write(2, "QDBusConnection: error: could no"..., 128QDBusConnection: error: could not send reply message to service "": Marshalling failed: Invalid object path passed in arguments
) = 128
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}], 2, -1) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\1\0\0\0\0\0\0\0", 16)         = 8
3. 另外把kglobalaccel5进程结束后,只运行kglobalaccel5,会直接报错:

代码: 全选

QDBusObjectPath: invalid path "/component/百度网盘_desktop"
然后每次点击一次「全局快捷键」,就会复现一次如下报错:

代码: 全选

QDBusObjectPath: invalid path "/component/百度网盘_desktop"
QDBusConnection: error: could not send reply message to service "": Marshalling failed: Invalid object path passed in arguments
4.共享库文件的问题,我发现单击「设置」中的其他个别项也会出现相同的报错,在/usr/lib/x86_64-linux-gnu/qt5/plugins/中没有这些库,这个不影响使用,问题不大。忘记说了,系统环境是:
OS: Manjaro 20.0.3,
DE:KDE 5.70.0 / Plasma 5.18.5

另外使用了[Archlinuxcn]源,不知道共享库的问题是不是在于此?!
头像
astolia
论坛版主
帖子: 6459
注册时间: 2008-09-18 13:11

Re: KDE环境下点击「设置」中的「全局快捷键」卡死

#4

帖子 astolia » 2020-06-25 0:35

suly 写了: 2020-06-23 19:56 1.将kglobalaccel5进程结束后的报错如下,与原文的报错有点不一样;
6.png
你原来的问题是向kglobalaccel5进程发送消息但没有回应,结束进程后是直接发送消息失败。肯定是不一样的错误。

suly 写了: 2020-06-23 19:56 3. 另外把kglobalaccel5进程结束后,只运行kglobalaccel5,会直接报错:

代码: 全选

QDBusObjectPath: invalid path "/component/百度网盘_desktop"
然后每次点击一次「全局快捷键」,就会复现一次如下报错:

代码: 全选

QDBusObjectPath: invalid path "/component/百度网盘_desktop"
QDBusConnection: error: could not send reply message to service "": Marshalling failed: Invalid object path passed in arguments
dbus的路径只允许ASCII字符,你这里出现了中文,肯定就出错了。我测试了一下,在全局快捷键里选择添加一个带中文名的desktop文件,确实会卡住。
编辑~/.config/kglobalshortcutsrc,搜索“百度网盘”,把相关设置删掉,再重新运行kglobalaccel5就好了。这算是kglobalaccel的bug了,可以到 https://bugs.kde.org/ 向上游报告一下。

suly 写了: 2020-06-23 19:56 4.共享库文件的问题,我发现单击「设置」中的其他个别项也会出现相同的报错,在/usr/lib/x86_64-linux-gnu/qt5/plugins/中没有这些库,这个不影响使用,问题不大。忘记说了,系统环境是:
OS: Manjaro 20.0.3,
DE:KDE 5.70.0 / Plasma 5.18.5

另外使用了[Archlinuxcn]源,不知道共享库的问题是不是在于此?!
/usr/lib/x86_64-linux-gnu/qt5/plugins/是debian系的安装路径,我不用arch系,不知道是不是一样的。我以前听说过archlinuxcn源只是提供一些第三方软件,应该不会影响到kde组件的路径。
suly
帖子: 14
注册时间: 2016-11-01 21:05
系统: Manjaro20 KDE plasma

Re: KDE环境下点击「设置」中的「全局快捷键」卡死

#5

帖子 suly » 2020-06-25 16:33

好的,昨天切换到unstable分支解决问题了!另外的kglobalaccel方面额外增长了见识,
非常感谢老哥的热心! :Haha
astolia 写了: 2020-06-25 0:35
suly 写了: 2020-06-23 19:56 1.将kglobalaccel5进程结束后的报错如下,与原文的报错有点不一样;
6.png
你原来的问题是向kglobalaccel5进程发送消息但没有回应,结束进程后是直接发送消息失败。肯定是不一样的错误。

suly 写了: 2020-06-23 19:56 3. 另外把kglobalaccel5进程结束后,只运行kglobalaccel5,会直接报错:

代码: 全选

QDBusObjectPath: invalid path "/component/百度网盘_desktop"
然后每次点击一次「全局快捷键」,就会复现一次如下报错:

代码: 全选

QDBusObjectPath: invalid path "/component/百度网盘_desktop"
QDBusConnection: error: could not send reply message to service "": Marshalling failed: Invalid object path passed in arguments
dbus的路径只允许ASCII字符,你这里出现了中文,肯定就出错了。我测试了一下,在全局快捷键里选择添加一个带中文名的desktop文件,确实会卡住。
编辑~/.config/kglobalshortcutsrc,搜索“百度网盘”,把相关设置删掉,再重新运行kglobalaccel5就好了。这算是kglobalaccel的bug了,可以到 https://bugs.kde.org/ 向上游报告一下。

suly 写了: 2020-06-23 19:56 4.共享库文件的问题,我发现单击「设置」中的其他个别项也会出现相同的报错,在/usr/lib/x86_64-linux-gnu/qt5/plugins/中没有这些库,这个不影响使用,问题不大。忘记说了,系统环境是:
OS: Manjaro 20.0.3,
DE:KDE 5.70.0 / Plasma 5.18.5

另外使用了[Archlinuxcn]源,不知道共享库的问题是不是在于此?!
/usr/lib/x86_64-linux-gnu/qt5/plugins/是debian系的安装路径,我不用arch系,不知道是不是一样的。我以前听说过archlinuxcn源只是提供一些第三方软件,应该不会影响到kde组件的路径。