由于 QXcbWindow::setWindowIcon 段错误,某些 Qt 应用程序(VLC 和 KDevelop)在 Manjaro 中崩溃

由于 QXcbWindow::setWindowIcon 段错误,某些 Qt 应用程序(VLC 和 KDevelop)在 Manjaro 中崩溃

最近我开始使用 Manjaro 18.0。除了 KDevelop 和 VLC 启动时崩溃外,一切都正常。

我的桌面环境是最新版的Deepin DE,之前也试过Budgie和Xfce,但结果都一样。

我的 VLC 版本是 3.0.4-6,KDevelop 版本是 5.3.0-1。所有应用程序都已升级到最新版本。

这里是 KDevelop 的 GDB 回溯:

GNU gdb (GDB) 8.2
Copyright (C) 2018 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-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://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 kdevelop...(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/bin/kdevelop 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffdbca9700 (LWP 2906)]
[New Thread 0x7fffdae26700 (LWP 2907)]
kdevplatform.serialization: version mismatch or no version hint; expected version: 84082689
kdevplatform.serialization: "The data-repository at /home/hu/.cache/kdevduchain/kdevelop-{f0081a8e-3ab4-44c5-87e8-fd504a8cd961} has to be cleared."
Icon theme "breeze-dark" not found.
Icon theme "gnome" not found.

(process:2902): librsvg-WARNING **: 17:38:32.021: cannot render on a cairo_t with a failure status (status=32, invalid value (typically too big) for the size of the input (surface, pattern, etc.))

Thread 1 "kdevelop" received signal SIGSEGV, Segmentation fault.
0x00007fffdcbbc1d6 in QXcbWindow::setWindowIcon(QIcon const&) () from /usr/lib/libQt5XcbQpa.so.5
(gdb) bt
#0  0x00007fffdcbbc1d6 in QXcbWindow::setWindowIcon(QIcon const&) () at /usr/lib/libQt5XcbQpa.so.5
#1  0x00007fffdcbbb950 in QXcbWindow::create() () at /usr/lib/libQt5XcbQpa.so.5
#2  0x00007fffdcba5d42 in QXcbIntegration::createPlatformWindow(QWindow*) const () at /usr/lib/libQt5XcbQpa.so.5
#3  0x00007ffff6cafd78 in QWindowPrivate::create(bool, unsigned long long) () at /usr/lib/libQt5Gui.so.5
#4  0x00007ffff730d438 in QWidgetPrivate::create_sys(unsigned long long, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#5  0x00007ffff730da90 in QWidget::create(unsigned long long, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#6  0x00007ffff730dfd5 in QWidget::winId() const () at /usr/lib/libQt5Widgets.so.5
#7  0x00007ffff493bb80 in  () at /usr/lib/libKF5XmlGui.so.5
#8  0x00007ffff493e598 in KMainWindow::event(QEvent*) () at /usr/lib/libKF5XmlGui.so.5
#9  0x00007ffff4988cb6 in KXmlGuiWindow::event(QEvent*) () at /usr/lib/libKF5XmlGui.so.5
#10 0x00007ffff72dbe14 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#11 0x00007ffff72e36e1 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#12 0x00007ffff6812c39 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#13 0x00007ffff7317205 in QWidget::ensurePolished() const () at /usr/lib/libQt5Widgets.so.5
#14 0x00007ffff73173e3 in QWidget::adjustSize() () at /usr/lib/libQt5Widgets.so.5
#15 0x00007ffff498924b in KXmlGuiWindow::setupGUI(QSize const&, QFlags<KXmlGuiWindow::StandardWindowOption>, QString const&) () at /usr/lib/libKF5XmlGui.so.5
#16 0x00007ffff49893ac in KXmlGuiWindow::setupGUI(QFlags<KXmlGuiWindow::StandardWindowOption>, QString const&) ()
    at /usr/lib/libKF5XmlGui.so.5
#17 0x00007ffff7e30103 in KDevelop::MainWindow::initialize() () at /usr/lib/libKDevPlatformShell.so.53
#18 0x00007ffff7e535fa in KDevelop::CorePrivate::initialize(KDevelop::Core::Setup, QString const&) ()
    at /usr/lib/libKDevPlatformShell.so.53
#19 0x00007ffff7e54c00 in KDevelop::Core::initialize(KDevelop::Core::Setup, QString const&) ()
    at /usr/lib/libKDevPlatformShell.so.53
#20 0x000055555555eecb in  ()
#21 0x00007ffff6270223 in __libc_start_main () at /usr/lib/libc.so.6
#22 0x000055555556085e in _start ()

以下是 VLC 的另一个 GDB 回溯:

GNU gdb (GDB) 8.2
Copyright (C) 2018 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-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://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 vlc...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/vlc 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
VLC media player 3.0.4 Vetinari (revision 3.0.4-0-gf615db6332)
[New Thread 0x7ffff59e8700 (LWP 5116)]
[New Thread 0x7ffff51e7700 (LWP 5117)]
[New Thread 0x7ffff50e6700 (LWP 5118)]
[000055555555a570] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[New Thread 0x7fffdc9a0700 (LWP 5119)]
[New Thread 0x7fffd719a700 (LWP 5120)]
[New Thread 0x7fffd6010700 (LWP 5121)]

(process:5112): librsvg-WARNING **: 17:52:32.029: cannot render on a cairo_t with a failure status (status=32, invalid value (typically too big) for the size of the input (surface, pattern, etc.))

Thread 5 "vlc" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffdc9a0700 (LWP 5119)]
0x00007fffdc74b1d6 in QXcbWindow::setWindowIcon(QIcon const&) () from /usr/lib/libQt5XcbQpa.so.5
(gdb) bt
#0  0x00007fffdc74b1d6 in QXcbWindow::setWindowIcon(QIcon const&) () at /usr/lib/libQt5XcbQpa.so.5
#1  0x00007fffdc74a950 in QXcbWindow::create() () at /usr/lib/libQt5XcbQpa.so.5
#2  0x00007fffdc734d42 in QXcbIntegration::createPlatformWindow(QWindow*) const () at /usr/lib/libQt5XcbQpa.so.5
#3  0x00007fffdfb91d78 in QWindowPrivate::create(bool, unsigned long long) () at /usr/lib/libQt5Gui.so.5
#4  0x00007ffff4531438 in QWidgetPrivate::create_sys(unsigned long long, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#5  0x00007ffff4531a90 in QWidget::create(unsigned long long, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#6  0x00007ffff4531b9f in QWidget::create(unsigned long long, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#7  0x00007ffff453f086 in QWidget::setVisible(bool) () at /usr/lib/libQt5Widgets.so.5
#8  0x00007ffff4b6d290 in  () at /usr/lib/vlc/plugins/gui/libqt_plugin.so
#9  0x00007ffff4b071ca in  () at /usr/lib/vlc/plugins/gui/libqt_plugin.so
#10 0x00007ffff4af1155 in  () at /usr/lib/vlc/plugins/gui/libqt_plugin.so
#11 0x00007ffff4af1926 in  () at /usr/lib/vlc/plugins/gui/libqt_plugin.so
#12 0x00007ffff7f50a9d in start_thread () at /usr/lib/libpthread.so.0
#13 0x00007ffff7e7bb23 in clone () at /usr/lib/libc.so.6
(gdb) 

有没有什么解决方案或想法可以解决这个问题?提前谢谢!

更新:看起来这两个应用程序可以在 root 权限下(使用 sudo)运行。因此它可能存在权限和/或环境变量方面的问题。

答案1

好吧,现在我找到了一个解决方法。看来我使用的 Paprius 图标主题与这两个应用程序存在兼容性问题。现在我切换到 Deepin DE 的默认图标主题,它们都可以正常工作。

我稍后会向 Paprius 报告这个错误。

更新:Paprius 说这可能是 librsvg 的问题。我还向 GNOME 主题发送了一个错误报告。

相关内容