0

我正在尝试在 vncviewer 中运行 Qt 5.8 GUI 应用程序,但遇到了分段错误。

系统配置

Qt 5.8

Ubuntu 17.04

vnc服务器

Xvnc 免费版 4.1.1 - 2015 年 2 月 25 日 23:02:21 构建

vncviewer

TigerVNC 查看器 64 位 v1.7.0

VNC xstartup 脚本内容:

#!/bin/sh

export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

xfce4-panel &
xfsettingsd &
xfwm4 &
xfdesktop &
pcmanfm &
xfce4-terminal &

错误信息:

$ ./MyApp 
QXcbConnection: Failed to initialize XRandr
Segmentation fault (core dumped)

核心转储注意:为简洁起见,必须更改一些路径、应用程序名称和遗漏。

(gdb) run
Starting program: $HOME/MyApp 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe2023700 (LWP 5917)]
QXcbConnection: Failed to initialize XRandr
[New Thread 0x7fffd5cbc700 (LWP 5918)]
...
[omitted for brevity]
...
[New Thread 0x7fff6b32a700 (LWP 5945)]

Thread 23 "Chrome_InProcGp" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff8d7fa700 (LWP 5942)]
0x00007ffff081abba in ?? () from /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5

(gdb) bt
#0  0x00007ffff081abba in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#1  0x00007ffff081b4bc in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#2  0x00007ffff1a51d54 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#3  0x00007ffff1a54478 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#4  0x00007ffff1a55589 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#5  0x00007ffff1a4ffd0 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#6  0x00007ffff1a5024e in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#7  0x00007ffff1a50969 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#8  0x00007ffff1a51225 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#9  0x00007ffff1a512f3 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#10 0x00007ffff19f725d in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#11 0x00007ffff19a5dbe in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#12 0x00007ffff19a694d in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#13 0x00007ffff19a6c1b in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#14 0x00007ffff19a8559 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#15 0x00007ffff19bb18a in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#16 0x00007ffff19d0c05 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#17 0x00007ffff19d0de7 in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#18 0x00007ffff19cd76d in  () at /opt/Qt5.8.0/5.8/gcc_64/lib/libQt5WebEngineCore.so.5
#19 0x00007ffff7bc06da in start_thread (arg=0x7fff8d7fa700) at pthread_create.c:456
#20 0x00007fffef6aad7f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

这只发生在远程桌面的 vncviewer 中。在本地系统上,它按预期运行。

请让我知道是否有任何解决方法。

4

1 回答 1

0

应用程序需要一个用于渲染过程的OpenGL 上下文。看起来它在您的服务器上不可用。

如果您通过 ssh 运行应用程序,请尝试使用图形用户界面集成运行它:

ssh -X ...

这是必需的,因为默认情况下 Qt 在 Linux 上使用 xcb 后端,因此它需要一个活动的 X 会话来显示某些内容。

如果它不起作用,您可能需要检查您在服务器中运行的分发/配置的 OpenGL 支持。

于 2019-04-08T23:53:28.670 回答