在从服务器 ISO (
Ubuntu 22.04.3 LTS x86_64 5.15.0-91-generic
) 全新安装的 Ubuntu 22.04 上,UE5 无法以 libc.6.so 中的 SIGSEGV 启动。引擎没有透露有关导致崩溃的功能的任何详细信息。它发生在加载屏幕显示为 0% 后。日志详细信息:
[2024.01.06-16.50.17:131][ 0]LogInit: Using SDL_WINDOW_VULKAN
[2024.01.06-16.50.17:131][ 0]LogVulkanRHI: Display: Built with Vulkan header version 1.3.239
[2024.01.06-16.50.17:132][ 0]LogVulkanRHI: Starting Vulkan Profile check for VP_UE_Vulkan_SM5_RT:
MESA-INTEL: warning: Haswell Vulkan support is incomplete
Signal 11 caught.
Malloc Size=262146 LargeMemoryPoolOffset=262162
CommonUnixCrashHandler: Signal=11
[2024.01.06-16.50.17:463][ 0]LogCore: === Critical error: ===
Unhandled Exception: SIGSEGV: invalid attempt to read memory at address 0x0000000000000000
[2024.01.06-16.50.17:463][ 0]LogCore: Fatal error!
0x00007fd6dca12520 libc.so.6!UnknownFunction(0x4251f)
[2024.01.06-16.50.17:504][ 0]LogExit: Executing StaticShutdownAfterError
引擎版本是从源代码构建的 5.3.2。 5.3.1 和二进制 5.3.2 上仍然存在崩溃。 nvidia-smi 的输出:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.157 Driver Version: 390.157 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro K1100M Off | 00000000:01:00.0 Off | N/A |
| N/A 46C P0 N/A / N/A | 143MiB / 1999MiB | 3% Default |
+-------------------------------+----------------------+----------------------+
Unreal.log的输出:
[2024.01.06-16.50.17:131][ 0]LogInit: Using SDL_WINDOW_VULKAN
[2024.01.06-16.50.17:131][ 0]LogVulkanRHI: Display: Built with Vulkan header version 1.3.239
[2024.01.06-16.50.17:132][ 0]LogVulkanRHI: Starting Vulkan Profile check for VP_UE_Vulkan_SM5_RT:
[2024.01.06-16.50.17:463][ 0]LogCore: === Critical error: ===
Unhandled Exception: SIGSEGV: invalid attempt to read memory at address 0x0000000000000000
[2024.01.06-16.50.17:463][ 0]LogCore: Fatal error!
0x00007fd6dca12520 libc.so.6!UnknownFunction(0x4251f)
[2024.01.06-16.50.17:504][ 0]LogExit: Executing StaticShutdownAfterError
诊断:
Generating report for minidump
Application version 5.3.2.0
... built from changelist 0
OS version Linux 5.15.0-91-generic (network name: thicc-pad)
Running 2 x86_64 processors (4 logical cores)
Exception was "SIGSEGV: invalid attempt to read memory at address 0x0000000000000000"
<SOURCE START>
<SOURCE END>
<CALLSTACK START>
libc.so.6!UnknownFunction(0x4251f)
<CALLSTACK END>
0 loaded modules
Report end!
它在 Ubuntu 20.04 上运行完美,但是几天前我安装了新的 Ubuntu 22.04。 Epic 声称它甚至是 Linux Unreal 开发的推荐系统。
我尝试过的:
遇到此(或非常类似)问题,该问题是在虚幻引擎中调用 VulkanRHI.cpp 中的 vpCreateInstance() 时导致的段错误。显卡是 nvidia 3080 Ti,直到几天前 nvidia 的新 550 驱动程序发布之前一直运行得很好。安装完这些之后,甚至降级到我之前安装的驱动程序版本也不起作用。
原来问题不是出在显卡驱动上,而是出在gcc编译器版本上。
我在22.04.5,使用6.8内核,使用gcc-12编译。 Ubuntu 22.04 默认使用 gcc 11.4。安装显卡驱动时,需要使用与内核相同版本的gcc进行编译。如果不是,标头将不同,构建将失败,并且驱动程序将无法完全安装。 tl;dr 安装 gcc 12(或构建内核的任何版本),将其设为默认版本,重新安装图形驱动程序,然后重新启动。
运行
gcc --version
检查正在使用的默认 gcc 版本。可能是11.4。我的就是这样的。
sudo apt install gcc-12
安装 gcc 12(如果尚未安装)。
sudo update-alternatives --query gcc
检查 gcc 的任何现有更新替代优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 50
使其成为 gcc 的默认值。我没有现有的,所以 50 对我来说似乎是一个不错的数字。您可能需要更高或更低的值,具体取决于您是否有任何现有的 gcc 优先级。
再次检查gcc版本,确保是12,然后重新运行nvidia驱动安装,成功完成。
init 6
导致我的机器重新启动,当它重新启动时,我在所有显示器上看到了一个非常活泼的桌面,并且 UE5 再次工作了。