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

相关推荐
马士兵教育1 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
snow@li2 小时前
Java:理解 Gradle / 后端项目的管家 / 打包SpringBoot 应用 / 完成编译、下载依赖、运行测试、打包 JAR/WAR / 速查表
java
云烟成雨TD2 小时前
Spring AI 1.x 系列【57】动态工具发现:Tool Search Tool
java·人工智能·spring
zfoo-framework2 小时前
[修改代码使用]codex官方app中使用中转(不需要cc-switch) 1.config.toml 2.sk方式登录
java
逍遥德3 小时前
MQTT教程详解-05.SpringBoot集成mqtt client 性能分析
java·spring boot·spring·mt
ha_lydms3 小时前
AnalyticDB分区、分布键性能优化
android·大数据·分布式·性能优化·分布式计算·分区·analyticdb
云烟成雨TD3 小时前
Spring AI 1.x 系列【54】Retry 机制分析
java·人工智能·spring
weixin_523185323 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
点燃大海3 小时前
SpringAI构建智能体
java·spring boot·spring·springai智能体
xier_ran3 小时前
【infra之路】02_RadixAttention与KV_Cache管理
java·spring boot·spring