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

相关推荐
码农水水10 小时前
国家电网Java面试被问:TCP的BBR拥塞控制算法原理
java·开发语言·网络·分布式·面试·wpf
2501_9159090610 小时前
如何保护 iOS IPA 文件中资源与文件的安全,图片、JSON重命名
android·ios·小程序·uni-app·json·iphone·webview
qq_3363139310 小时前
java基础-网络编程-TCP
java·网络·tcp/ip
咕噜咕噜啦啦10 小时前
Java期末习题速通
java·开发语言
盐真卿11 小时前
python2
java·前端·javascript
Root_Hacker12 小时前
include文件包含个人笔记及c底层调试
android·linux·服务器·c语言·笔记·安全·php
stevenzqzq12 小时前
android flow的背压策略
android·flow
一嘴一个橘子12 小时前
mybatis - 动态语句、批量注册mapper、分页插件
java
组合缺一12 小时前
Json Dom 怎么玩转?
java·json·dom·snack4
危险、12 小时前
一套提升 Spring Boot 项目的高并发、高可用能力的 Cursor 专用提示词
java·spring boot·提示词