随手记录 UE4/CARLA 仿真器 segmentation fault

背景

最近需要重拾一下CARLA和UE4仿真器,所以就开始从源码/直接二进制的 发现老问题了 三年了 每次启动都给我一句话 一点信息都没有;今天从源码编译发现了更多信息 那么 就解决一下这个 令人烦恼的:segmentation fault

内心OS:也不知道三年前 2023年1月6日自己干了什么 把... vulkan的系统路径给污染了

Error界面快速一览:

直接到达终点 解决方案(请看下面详细步骤得知是否是这个问题 ha sudo -rm -rf 是很危险的操作 切记)

原因:nvidia_icd.json的信息 就变成了一个dir!所以就导致了 vulkan无法正常启动,有两个文件夹被影响了

  • /etc/vulkan/implicit_layer.d/nvidia_layers.json
  • /etc/vulkan/icd.d/nvidia_icd.json

快速解决方案:删除上面了两个文件 直接正常启动了...

详细debug步骤

从源码编译UE4 编译没有任何报错,然后开始运行:

bash 复制代码
cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor

就出现了这些错误log (原谅我当时没截图这个 但是保存了error信息)

bash 复制代码
LoginId:93166a69224841a693b1310bd8342744-000003e8
EpicAccountId:

Caught signal 11 Segmentation fault

libvulkan.so.1!UnknownFunction(0x12727)
libvulkan.so.1!UnknownFunction(0x2792b)
libvulkan.so.1!vkEnumerateInstanceExtensionProperties(+0x99)
libUE4Editor-VulkanRHI.so!EnumerateInstanceExtensionProperties(char const*, FLayerExtension&) [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/VulkanRHI/Private/VulkanLayers.cpp:184]
libUE4Editor-VulkanRHI.so!FVulkanDynamicRHI::GetInstanceLayersAndExtensions(TArray<char const*, TSizedDefaultAllocator<32> >&, TArray<char const*, TSizedDefaultAllocator<32> >&, bool&) [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/VulkanRHI/Private/VulkanLayers.cpp:279]
libUE4Editor-VulkanRHI.so!FVulkanDynamicRHI::CreateInstance() [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/VulkanRHI/Private/VulkanRHI.cpp:386]
libUE4Editor-VulkanRHI.so!FVulkanDynamicRHI::InitInstance() [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/VulkanRHI/Private/VulkanRHI.cpp:693]
libUE4Editor-VulkanRHI.so!FVulkanDynamicRHI::Init() [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/VulkanRHI/Private/VulkanRHI.cpp:241]
libUE4Editor-RHI.so!RHIInit(bool) [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/RHI/Private/DynamicRHI.cpp:228]
UE4Editor!FEngineLoop::PreInitPreStartupScreen(char16_t const*) [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/Launch/Private/LaunchEngineLoop.cpp:2555]
UE4Editor!GuardedMain(char16_t const*) [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/Launch/Private/Launch.cpp:127]
libUE4Editor-UnixCommonStartup.so!CommonUnixMain(int, char**, int (*)(char16_t const*), void (*)()) [/home/kin/UnrealEngine_4.26/Engine/Source/Runtime/Unix/UnixCommonStartup/Private/UnixCommonStartup.cpp:264]
libc.so.6!__libc_start_main(+0xf2)
UE4Editor!_start()

然后错误信息主要是针对vulkan的 所以我和gemini沟通了一下,他让我简单运行一下vulkaninfo看看能不能行,果然

这个vulkaninfo就不行(第一行哈 第二行是我没运行)

然后第三行 得知 来 运行一下debug看看问题出现在哪里,如果出现了一长串 不用看 直接拖到最后 在error前的那一行是需要你关注的:

这是我第一次的error (对应第一个路径)

bash 复制代码
DEBUG: ReadDataFilesInSearchPaths: Searching the following paths for manifest files: /etc/xdg/xdg-ubuntu/vulkan/implicit_layer.d:/etc/xdg/vulkan/implicit_layer.d:/etc/vulkan/implicit_layer.d:/usr/share/ubuntu/vulkan/implicit_layer.d:/home/kin/.local/share/flatpak/exports/share/vulkan/implicit_layer.d:/var/lib/flatpak/exports/share/vulkan/implicit_layer.d:/usr/local/share/vulkan/implicit_layer.d:/usr/share/vulkan/implicit_layer.d:/var/lib/snapd/desktop/vulkan/implicit_layer.d:/home/kin/.local/share/vulkan/
[1]    223689 segmentation fault (core dumped)  VK_LOADER_DEBUG=all vulkaninfo

这是第二次error(对应第二个路径)

然后复制这一段给gemini ta就知道了 让我检查一下路径:

bash 复制代码
ls -l /usr/share/vulkan/implicit_layer.d/ /etc/vulkan/implicit_layer.d/ /home/kin/.local/share/vulkan/implicit_layer.d/

然后输出是:

bash 复制代码
s: cannot access '/home/kin/.local/share/vulkan/implicit_layer.d/': No such file or directory
/etc/vulkan/implicit_layer.d/:
total 4
drwxr-xr-x 2 root root 4096 jan  6  2023 nvidia_layers.json
/usr/share/vulkan/implicit_layer.d/:
total 8
-rw-r--r-- 1 root root 1242 aug 29 19:09 nvidia_layers.json
-rw-r--r-- 1 root root  472 nov 25  2021 VkLayer_MESA_device_select.json

没错你发现了 /etc/vulkan/implicit_layer.d/ 的json文件是一个dir!!!令人窒息的小 error,反正肯定不是我主动动手的

找到问题后,为了避免我删掉系统重要文件 我都先backup了一下,然后再执行这两行命令的:

bash 复制代码
sudo rm -rf /etc/vulkan/implicit_layer.d/nvidia_layers.json
sudo rm -rf /etc/vulkan/icd.d/nvidia_icd.json

最后!删除完成后,我们继续运行vulkaninfo 没问题!

那么!我们就能成功启动仿真器啦!

如下是UE4:

如下是二进制CARLA包:

这次没啥参考文献和链接 主打一个gemini上大分!

相关推荐
2501_9444460036 分钟前
Flutter&OpenHarmony文件夹管理功能实现
android·javascript·flutter
想做后端的小C1 小时前
Java:接口回调
java·开发语言·接口回调
爱学习的小可爱卢1 小时前
JavaEE进阶——Spring核心设计模式深度剖析
java·spring·设计模式
毕设源码-钟学长2 小时前
【开题答辩全过程】以 个性化电影推荐网站的设计与实现为例,包含答辩的问题和答案
java·spring boot
C++业余爱好者2 小时前
Power Job 快速搭建 及通信机制介绍
java
qq_2704900962 小时前
SpringBoot药品管理系统设计实现
java·spring boot·后端
、BeYourself3 小时前
SpringAI-ChatClient Fluent API 详解
java·后端·springai
星辰_mya3 小时前
reids哨兵集群与选主
java·开发语言
BD_Marathon3 小时前
SpringBoot快速入门
java·spring boot·后端
期待のcode3 小时前
Java的多态
java·开发语言