随手记录 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上大分!

相关推荐
侠客行03172 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪2 小时前
深入浅出LangChain4J
java·langchain·llm
老毛肚4 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎4 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Doro再努力4 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
Yvonne爱编码5 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚5 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
Daniel李华5 小时前
echarts使用案例
android·javascript·echarts
你这个代码我看不懂5 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
fuquxiaoguang5 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析