Unreal Engine 5 crashes with Vulkan SwapChain/FFenceManager error on RTX 4060 (Segmentation fault in libnvidia-glcore)

Hello everyone,

I installed Bazzite 41 this week to test it as my future daily driver. Almost everything works fine: my favorite games via Steam, Blender, Krita, etc. However, I’m having a problem running Unreal Engine 5. I want UE to work on Bazzite so I don’t need two systems - one for work and another for games - anymore and can use Bazzite as my main platform. Here is the problem:

The engine runs smoothly most of the time, however, the engine occasionally crashes:

This happens mainly in two situations:

  • When I add more than one asset to be loaded at the same time in the scene. To bypass this, I need to load each asset individually and wait until it loads before adding another, which slows down development time but is not the end of the world.

  • I also notice random crashes during gameplay without any particular pattern, at least none that I can perceive.

The main error is this:

LoginId:3f4c0299f6a04fb1b1d4910ba54bceae-000003e8

Caught signal 11 Segmentation fault

libnvidia-glcore.so.565.57.01!UnknownFunction(0xa14fc7)
libnvidia-glcore.so.565.57.01!UnknownFunction(0xe14868)
libnvidia-glcore.so.565.57.01!UnknownFunction(0xe14b4f)
libnvidia-glcore.so.565.57.01!UnknownFunction(0xd5005d)
libUnrealEditor-VulkanRHI.so!VulkanRHI::FFenceManager::WaitForFence(VulkanRHI::FFence*, unsigned long long) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanMemory.cpp:4690]
libUnrealEditor-VulkanRHI.so!FVulkanCommandBufferManager::WaitForCmdBuffer(FVulkanCmdBuffer*, float) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanCommandBuffer.cpp:502]
libUnrealEditor-VulkanRHI.so!FVulkanViewport::WaitForFrameEventCompletion() [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanViewport.cpp:278]
libUnrealEditor-VulkanRHI.so!FVulkanViewport::Present(FVulkanCommandListContext*, FVulkanCmdBuffer*, FVulkanQueue*, FVulkanQueue*, bool) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanViewport.cpp:1048]
libUnrealEditor-VulkanRHI.so!FVulkanCommandListContext::RHIEndDrawingViewport(FRHIViewport*, bool, bool) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanRHI.cpp:1184]
libUnrealEditor-RHI.so!FRHICommand<FRHICommandEndDrawingViewport, FRHICommandEndDrawingViewportString2188>::ExecuteAndDestruct(FRHICommandListBase&, FRHICommandListDebugContext&) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/RHI/Public/RHICommandList.h:1295]
libUnrealEditor-RHI.so!FRHICommandListBase::Execute(TRHIPipelineArray<IRHIComputeContext*>&, FRHICommandListBase::FPersistentState::FGPUStats*) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/RHI/Private/RHICommandList.cpp:477]
libUnrealEditor-RHI.so!UE::Core::Private::Function::TFunctionRefCaller<FRHICommandListImmediate::ExecuteAndReset(bool)::$_0, void ()>::Call(void*) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/Core/Public/Templates/Function.h:405]
libUnrealEditor-Core.so!TGraphTask<TFunctionGraphTaskImpl<void (), (ESubsequentsMode::Type)0> >::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >&, ENamedThreads::Type, bool) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/Core/Public/Async/TaskGraphInterfaces.h:1235]
libUnrealEditor-Core.so!FNamedTaskThread::ProcessTasksNamedThread(int, bool) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:760]
libUnrealEditor-Core.so!FNamedTaskThread::ProcessTasksUntilQuit(int) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:650]
libUnrealEditor-RenderCore.so!FRHIThread::Run() [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/RenderCore/Private/RenderingThread.cpp:330]
libUnrealEditor-Core.so!FRunnableThreadPThread::Run() [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/Core/Private/HAL/PThreadRunnableThread.cpp:25]
libUnrealEditor-Core.so!FRunnableThreadPThread::_ThreadProc(void*) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/Core/Private/HAL/PThreadRunnableThread.h:187]
libc.so.6!UnknownFunction(0x70796)
libc.so.6!UnknownFunction(0xf478b)
Exception was "SIGSEGV: invalid attempt to read memory at address 0x0000000000000000"

Unreal also gives me more detailed logs:

Diagnostics.txt:

Generating report for minidump

Application version 5.4.4.0
 ... built from changelist 35576357

OS version Linux 6.11.5-307.bazzite.fc41.x86_64 (network name: bazzite)
Running 4 x86_64 processors (4 logical cores)
Exception was "SIGSEGV: invalid attempt to read memory at address 0x0000000000000000"

<SOURCE START>
<SOURCE END>

<CALLSTACK START>
libnvidia-glcore.so.565.57.01!UnknownFunction(0xa14fc7)
libnvidia-glcore.so.565.57.01!UnknownFunction(0xe14868)
libnvidia-glcore.so.565.57.01!UnknownFunction(0xe14b4f)
libnvidia-glcore.so.565.57.01!UnknownFunction(0xd5005d)
libUnrealEditor-VulkanRHI.so!VulkanRHI::FFenceManager::WaitForFence(VulkanRHI::FFence*, unsigned long long) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanMemory.cpp:4690]
libUnrealEditor-VulkanRHI.so!FVulkanCommandBufferManager::WaitForCmdBuffer(FVulkanCmdBuffer*, float) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanCommandBuffer.cpp:502]
libUnrealEditor-VulkanRHI.so!FVulkanViewport::WaitForFrameEventCompletion() [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanViewport.cpp:278]
libUnrealEditor-VulkanRHI.so!FVulkanViewport::Present(FVulkanCommandListContext*, FVulkanCmdBuffer*, FVulkanQueue*, FVulkanQueue*, bool) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanViewport.cpp:1048]
libUnrealEditor-VulkanRHI.so!FVulkanCommandListContext::RHIEndDrawingViewport(FRHIViewport*, bool, bool) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/VulkanRHI/Private/VulkanRHI.cpp:1184]
libUnrealEditor-RHI.so!FRHICommand<FRHICommandEndDrawingViewport, FRHICommandEndDrawingViewportString2188>::ExecuteAndDestruct(FRHICommandListBase&, FRHICommandListDebugContext&) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/RHI/Public/RHICommandList.h:1295]
libUnrealEditor-RHI.so!FRHICommandListBase::Execute(TRHIPipelineArray<IRHIComputeContext*>&, FRHICommandListBase::FPersistentState::FGPUStats*) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/RHI/Private/RHICommandList.cpp:477]
libUnrealEditor-RHI.so!UE::Core::Private::Function::TFunctionRefCaller<FRHICommandListImmediate::ExecuteAndReset(bool)::$_0, void ()>::Call(void*) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/Core/Public/Templates/Function.h:405]
libUnrealEditor-Core.so!TGraphTask<TFunctionGraphTaskImpl<void (), (ESubsequentsMode::Type)0> >::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >&, ENamedThreads::Type, bool) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/Core/Public/Async/TaskGraphInterfaces.h:1235]
libUnrealEditor-Core.so!FNamedTaskThread::ProcessTasksNamedThread(int, bool) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:760]
libUnrealEditor-Core.so!FNamedTaskThread::ProcessTasksUntilQuit(int) [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:650]
libUnrealEditor-RenderCore.so!FRHIThread::Run() [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/RenderCore/Private/RenderingThread.cpp:330]
libUnrealEditor-Core.so!FRunnableThreadPThread::Run() [/mnt/horde/++UE5/Sync/Engine/Source/./Runtime/Core/Private/HAL/PThreadRunnableThread.cpp:25]
libUnrealEditor-Core.so!FRunnableThreadPThread::_ThreadProc(void*) [/mnt/horde/++UE5/Sync/Engine/Source/Runtime/Core/Private/HAL/PThreadRunnableThread.h:187]
libc.so.6!UnknownFunction(0x70796)
libc.so.6!UnknownFunction(0xf478b)

<CALLSTACK END>

0 loaded modules

Report end!

I also have the complete debug output logs for the engine execution, but it is too large to post here. I can upload it to Pastebin if necessary.

This problem appears to only happen in immutable distros. I previously worked on Ubuntu 24.04 LTS and it worked fine.

Here is what I’ve already tried to solve the problem:

  1. I checked if Vulkan components were installed:

rpm-ostree install \
  vulkan-loader \
  vulkan-loader-devel \
  vulkan-tools \
  vulkan-validation-layers \
  vulkan-validation-layers-devel \
  vulkan-loader.i686 \
  nvidia-vulkan-layer

From this command, only vulkan-validation-layers and vulkan-validation-layers-devel needed to be installed. Everything else was already installed by default in Bazzite. I rebooted the system after that.

  1. I tried some workarounds using environment variables for, among other things, specifying the Vulkan version:
export VK_LAYER_NV_optimus=NVIDIA_only
export __GL_SYNC_TO_VBLANK=0
export VK_PRESENT_MODE=immediate
export VK_API_VERSION=1.2

And I also tried to disable some Vulkan layers that I thought might be causing the problem:

export VK_LOADER_LAYERS_DISABLE="VK_LAYER_FROG_gamescope_wsi_x86,VK_LAYER_FROG_gamescope_wsi_x86_64"

This is my hardware:

OS

“Bazzite 41 (FROM Fedora Kinoite)” (64 bit)
Kernel Name: Linux
Kernel Version: 6.11.5-307.bazzite.fc41.x86_64
X Server Vendor: The X.Org Foundation
X Server Release: 12401003
X Window Manager: KWin

GPU

Driver: NVIDIA Corporation NVIDIA GeForce RTX 4060/PCIe/SSE2
Driver Version: 4.6.0 NVIDIA 565.57.01
OpenGL Version: 4.6
Desktop Color Depth: 24 bits per pixel
Monitor Refresh Rate: 74 Hz
VendorID: 0x10de
DeviceID: 0x2882
Revision Not Detected
Number of Monitors: 1
Number of Logical Video Cards: 1
Primary Display Resolution: 1920 x 1080
Desktop Resolution: 1920 x 1080
Primary Display Size: 20.79" x 11.69" (23.82" diag), 52.8cm x 29.7cm (60.5cm diag)
Primary VRAM: 8188 MB

I can also provide the output of the vulkaninfo command, but as before, it’s too large to post here. I can upload it to Pastebin if necessary.

Bazzite feels stable and smooth for the most part. It would be very nice if it turns out to be a good platform for gaming and game development. It is very common to play games when developing games to get inspiration from them, so using the same system as a gaming platform for both would be nice.

Does anyone have any ideas about why this is happening?