我刚刚在笔记本电脑上安装了 Kubuntu,一切运行顺利。然后plasma-discover
突然停止工作。当我尝试启动它时,窗口在左上角出现一秒钟左右的小矩形,然后立即消失。从命令行启动它,会出现相同的结果,并显示以下消息:
$ plasma-discover
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
qrc:/qml/DiscoverWindow.qml:116:19: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 15. Use 'sequences: [ <key> ]' to bind to all of them.
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/PageRow.qml:674:5: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 14. Use 'sequences: [ <key> ]' to bind to all of them.
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/PageRow.qml:670:5: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 13. Use 'sequences: [ <key> ]' to bind to all of them.
QObject::startTimer: Timers cannot have negative intervals
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
qrc:/qml/DiscoverPage.qml:42:37: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 15. Use 'sequences: [ <key> ]' to bind to all of them.
adding empty sources model QStandardItemModel(0x55feeb4688e0)
org.kde.plasma.libdiscover: Couldn't find a category for "fwupd-backend"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/private/PrivateActionToolButton.qml:75:5: QML Binding: Binding loop detected for property "value"
QQuickItem::stackBefore: Cannot stack QQuickRectangle(0x55feeb88dda0, parent=0x55feeaea8fe0, geometry=0,0 0x0) before QQuickPopupItem(0x55feeb04c110), which must be a sibling
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/GlobalDrawer.qml:333:17: QML RowLayout (parent or ancestor of QQuickLayoutAttached): Binding loop detected for property "preferredHeight"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/AbstractApplicationWindow.qml:283:5: QML Binding: Not restoring previous value because restoreMode has not been set.
This behavior is deprecated.
You have to import QtQml 2.15 after any QtQuick imports and set
the restoreMode of the binding to fix this warning.
In Qt < 6.0 the default is Binding.RestoreBinding.
In Qt >= 6.0 the default is Binding.RestoreBindingOrValue.
Segmentation fault (core dumped)
运行该命令将root
正确启动应用程序并显示以下消息:
sudo plasma-discover
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qrc:/qml/DiscoverWindow.qml:116:19: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 15. Use 'sequences: [ <key> ]' to bind to all of them.
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/PageRow.qml:674:5: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 14. Use 'sequences: [ <key> ]' to bind to all of them.
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/PageRow.qml:670:5: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 13. Use 'sequences: [ <key> ]' to bind to all of them.
qrc:/qml/DiscoverPage.qml:42:37: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 15. Use 'sequences: [ <key> ]' to bind to all of them.
adding empty sources model QStandardItemModel(0x561aaf758820)
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
org.kde.plasma.libdiscover: Couldn't find a category for "fwupd-backend"
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/private/PrivateActionToolButton.qml:75:5: QML Binding: Binding loop detected for property "value"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/AbstractApplicationWindow.qml:283:5: QML Binding: Not restoring previous value because restoreMode has not been set.
This behavior is deprecated.
You have to import QtQml 2.15 after any QtQuick imports and set
the restoreMode of the binding to fix this warning.
In Qt < 6.0 the default is Binding.RestoreBinding.
In Qt >= 6.0 the default is Binding.RestoreBindingOrValue.
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/BasicListItem.qml:273:18: QML QQuickItem*: Binding loop detected for property "implicitWidth"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/AbstractApplicationWindow.qml:283:5: QML Binding: Not restoring previous value because restoreMode has not been set.
This behavior is deprecated.
You have to import QtQml 2.15 after any QtQuick imports and set
the restoreMode of the binding to fix this warning.
In Qt < 6.0 the default is Binding.RestoreBinding.
In Qt >= 6.0 the default is Binding.RestoreBindingOrValue.
我做了一些研究,也许它与一些键绑定有关,但我不知道如何解决这个问题...我的plasma-discover
版本是,我在内核5.24.7
上运行 Kubuntu 22.046.5.0-15-generic x86_64
运行gdb plasma-discover
结果:
$ gdb plasma-discover
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from plasma-discover...
(No debugging symbols found in plasma-discover)
(gdb) start
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n
Starting program: /usr/bin/plasma-discover
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff0147640 (LWP 9869)]
[New Thread 0x7fffef0d6640 (LWP 9870)]
[New Thread 0x7fffedb22640 (LWP 9871)]
[New Thread 0x7fffed321640 (LWP 9872)]
[New Thread 0x7fffecb20640 (LWP 9873)]
[New Thread 0x7fffe5fff640 (LWP 9874)]
[New Thread 0x7fffe57fe640 (LWP 9875)]
[New Thread 0x7fffe4ffd640 (LWP 9876)]
[New Thread 0x7fffd8fff640 (LWP 9877)]
[New Thread 0x7fffbbfff640 (LWP 9878)]
[New Thread 0x7fffbb7fe640 (LWP 9879)]
[Thread 0x7fffbb7fe640 (LWP 9879) exited]
[Thread 0x7fffbbfff640 (LWP 9878) exited]
[New Thread 0x7fffbbfff640 (LWP 9880)]
[New Thread 0x7fffbb7fe640 (LWP 9881)]
[New Thread 0x7fffbaffd640 (LWP 9882)]
[Thread 0x7fffbaffd640 (LWP 9882) exited]
[Thread 0x7fffbb7fe640 (LWP 9881) exited]
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
qrc:/qml/DiscoverWindow.qml:116:19: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 15. Use 'sequences: [ <key> ]' to bind to all of them.
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/PageRow.qml:674:5: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 14. Use 'sequences: [ <key> ]' to bind to all of them.
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/PageRow.qml:670:5: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 13. Use 'sequences: [ <key> ]' to bind to all of them.
QObject::startTimer: Timers cannot have negative intervals
[New Thread 0x7fffbb7fe640 (LWP 9883)]
[New Thread 0x7fffbaffd640 (LWP 9884)]
[New Thread 0x7fffb99e6640 (LWP 9885)]
[New Thread 0x7fffb91e5640 (LWP 9886)]
kf.config.core: "\"geometry\" - conversion of \"776,258,0,65507\" to QRect failed"
qrc:/qml/DiscoverPage.qml:42:37: QML Shortcut: Shortcut: Only binding to one of multiple key bindings associated with 15. Use 'sequences: [ <key> ]' to bind to all of them.
[New Thread 0x7fffa3fff640 (LWP 9887)]
[New Thread 0x7fffa37fe640 (LWP 9888)]
[New Thread 0x7fffa2ffd640 (LWP 9889)]
[New Thread 0x7fffa27fc640 (LWP 9890)]
[New Thread 0x7fffa1ffb640 (LWP 9891)]
adding empty sources model QStandardItemModel(0x555555eec230)
[New Thread 0x7fffa17fa640 (LWP 9892)]
[New Thread 0x7fff8bfff640 (LWP 9893)]
[Detaching after fork from child process 9894]
org.kde.plasma.libdiscover: Couldn't find a category for "fwupd-backend"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/private/PrivateActionToolButton.qml:75:5: QML Binding: Binding loop detected for property "value"
[New Thread 0x7fff8b7fe640 (LWP 9896)]
[New Thread 0x7fff8affd640 (LWP 9897)]
[New Thread 0x7fff8a7fc640 (LWP 9898)]
QQuickItem::stackBefore: Cannot stack QQuickRectangle(0x555556312ba0, parent=0x55555592d020, geometry=0,0 0x0) before QQuickPopupItem(0x555555acfa70), which must be a sibling
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/GlobalDrawer.qml:333:17: QML RowLayout (parent or ancestor of QQuickLayoutAttached): Binding loop detected for property "preferredHeight"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/AbstractApplicationWindow.qml:283:5: QML Binding: Not restoring previous value because restoreMode has not been set.
This behavior is deprecated.
You have to import QtQml 2.15 after any QtQuick imports and set
the restoreMode of the binding to fix this warning.
In Qt < 6.0 the default is Binding.RestoreBinding.
In Qt >= 6.0 the default is Binding.RestoreBindingOrValue.
Thread 1 "plasma-discover" received signal SIGSEGV, Segmentation fault.
0x00007ffff6ace859 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
(gdb) c
Continuing.
[Thread 0x7fffb91e5640 (LWP 9886) exited]
[Thread 0x7fffa3fff640 (LWP 9887) exited]
[Thread 0x7fffa17fa640 (LWP 9892) exited]
[Thread 0x7fffa27fc640 (LWP 9890) exited]
[Thread 0x7fffbb7fe640 (LWP 9883) exited]
[Thread 0x7fffbaffd640 (LWP 9884) exited]
[Thread 0x7fffb99e6640 (LWP 9885) exited]
Thread 1 "plasma-discover" received signal SIGSEGV, Segmentation fault.
0x00007ffff6ace859 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
(gdb) bt
#0 0x00007ffff6ace859 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#1 0x00007ffff6aeaa4e in QQmlPropertyCapture::captureProperty(QObject*, int, int, bool) ()
from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#2 0x00007ffff69a78cd in QV4::QObjectWrapper::getProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*) ()
from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#3 0x00007fffd82c119b in ?? ()
#4 0x0000000000000000 in ?? ()
答案1
所以我真的不知道为什么它修复了这个问题,但我找到了以下解决方案这里。
基本上我进入了文件
/usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/NavigationTabBar.qml
并将line 231
以下内容更改true
为false
:
T.ButtonGroup {
id: tabGroup
exclusive: true
buttons: root.contentItem.children
到
T.ButtonGroup {
id: tabGroup
exclusive: false
buttons: root.contentItem.children
解释如下:
Kirigami.NavigationTabBar 中的操作受独占按钮组的限制,该按钮组在启动时会与
checked
这些操作中的属性绑定竞争。
这会导致状态交替的无限循环,并最终在 QV4 堆饱和时崩溃。
将此组设置为非独占可解决此问题。BUG
:448460
已修复:5.24
让我感到困扰的是,这个问题应该在 版本 中修复5.24
,而我正在运行 版本5.24.7
。但这为我解决了这个问题