Running Unreal Editor -Game or Unreal Client in a Linux Container

Hello,

We are trying to process replays to produce videos of gameplay in a linux container and I have failed to launch either the editor or a linux build in both WLS2 and a docker container following the official instructions.

In both instances I am able to launch the editor/game, but it it quickly crashes/exits early due to vulkan /other graphics /window issues.

Are their any official instructions to get the the editor/game working on a linux container? Most of what I’ve found is either for a dedicated server or building the game/dlc. The only other UDN post I found (which has the exact same error that I have) implies that this is unsupported by Epic

[Content removed]

Best Regards

Hi Michael,

Are you observing the same error as on the related EPS post where a Vulkan driver cannot be found under those execution conditions?

Best regards.

Yes, I see the exact same line in my log, which I’ve attached below

Best Regards

[2025.08.12-14.09.40:845][ 0]LogInit: -allowsyscallfilterfile=PATH_TO_FILE - sets up a system call filter allow list. any invalid syscall in this list *will* cause a crash [2025.08.12-14.09.40:845][ 0]LogInit: - Physical RAM available (not considering process quota): 16 GB (15825 MB, 16204976 KB, 16593895424 bytes) [2025.08.12-14.09.40:845][ 0]LogInit: - VirtualMemoryAllocator pools will grow at scale 1 [2025.08.12-14.09.40:845][ 0]LogInit: - MemoryRangeDecommit() will be a no-op (re-run with -vmapoolevict to change) [2025.08.12-14.09.40:845][ 0]LogInit: - PageSize 4096 [2025.08.12-14.09.40:845][ 0]LogInit: - BinnedPageSize 65536 [2025.08.12-14.09.40:845][ 0]LogCsvProfiler: Display: Metadata set : extradevelopmentmemorymb="0" [2025.08.12-14.09.40:846][ 0]LogInit: Physics initialised using underlying interface: Chaos [2025.08.12-14.09.40:846][ 0]LogInit: Using OS detected language (en-US-POSIX). [2025.08.12-14.09.40:846][ 0]LogInit: Using OS detected locale (en-US-POSIX). [2025.08.12-14.09.40:846][ 0]LogTextLocalizationManager: No specific localization for 'en-US-POSIX' exists, so 'en' will be used for the language. [2025.08.12-14.09.40:874][ 0]LogHAL: Warning: Splash screen image not found. [2025.08.12-14.09.40:885][ 0]LogSlate: New Slate User Created. Platform User Id 0, User Index 0, Is Virtual User: 0 [2025.08.12-14.09.40:885][ 0]LogSlate: Slate User Registered. User Index 0, Is Virtual User: 0 [2025.08.12-14.09.40:918][ 0]LogVulkanRHI: Display: Found VULKAN_SDK= [2025.08.12-14.09.40:918][ 0]LogVulkanRHI: Display: Registering provided Vulkan validation layers [2025.08.12-14.09.40:918][ 0]LogVulkanRHI: Display: Updated VK_LAYER_PATH=../../../Engine/Binaries/ThirdParty/Vulkan/Linux [2025.08.12-14.09.40:918][ 0]LogVulkanRHI: Display: Updated LD_LIBRARY_PATH=../../../Engine/Binaries/ThirdParty/Vulkan/Linux [2025.08.12-14.09.40:918][ 0]LogInit: Using SDL_WINDOW_VULKAN [2025.08.12-14.09.40:919][ 0]LogVulkanRHI: Vulkan PSO Precaching = 0, PipelineFileCache = 1 [2025.08.12-14.09.40:919][ 0]LogVulkanRHI: Display: Built with Vulkan header version 1.3.250 [2025.08.12-14.09.40:919][ 0]LogVulkanRHI: Starting Vulkan Profile check for VP_UE_Vulkan_SM5_RT: [2025.08.12-14.09.41:069][ 0]LogVulkanRHI: Warning: None of the 1 devices meet all the criteria! [2025.08.12-14.09.41:070][ 0]LogVulkanRHI: Vulkan Profile check complete. [2025.08.12-14.09.41:070][ 0]LogVulkanRHI: Display: Vulkan RayTracing disabled because SM6 shader platform is required (r.RayTracing.RequireSM6=1). [2025.08.12-14.09.41:070][ 0]LogVulkanRHI: Using API Version 1.1. [2025.08.12-14.09.41:070][ 0]LogHMD: OpenXRHMDModule::InitInstance using DefaultLoader. Error [GENERAL | | OpenXR-Loader] : RuntimeManifestFile::FindManifestFiles - failed to determine active runtime file path for this environment Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntimes - unknown error Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntimes - failed to load a runtime Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed to find default runtime with RuntimeInterface::LoadRuntime() Error [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Failed querying extension properties [2025.08.12-14.09.41:073][ 0]LogHMD: xrEnumerateInstanceExtensionProperties failed, suggests no runtime is installed. [2025.08.12-14.09.41:073][ 0]LogHMD: Failed to enumerate extensions. Please check that you have a valid OpenXR runtime installed. [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: Found 20 available instance extensions : [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_EXT_acquire_drm_display [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_EXT_acquire_xlib_display [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_EXT_debug_report [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: + VK_EXT_debug_utils [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_EXT_direct_mode_display [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_EXT_display_surface_counter [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: + VK_EXT_swapchain_colorspace [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_device_group_creation [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_display [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_external_fence_capabilities [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_external_memory_capabilities [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_external_semaphore_capabilities [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_get_display_properties2 [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_get_physical_device_properties2 [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_get_surface_capabilities2 [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: + VK_KHR_surface [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_surface_protected_capabilities [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_wayland_surface [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: - VK_KHR_xcb_surface [2025.08.12-14.09.41:080][ 0]LogVulkanRHI: Display: + VK_KHR_xlib_surface [2025.08.12-14.09.41:082][ 0]LogVulkanRHI: Display: Found 1 available instance layers : [2025.08.12-14.09.41:082][ 0]LogVulkanRHI: Display: * VK_LAYER_MESA_device_select [2025.08.12-14.09.41:087][ 0]LogVulkanRHI: Warning: None of the 1 devices meet all the criteria! [2025.08.12-14.09.41:090][ 0]LogLinux: Warning: MessageBox: Vulkan failed to select physical device after passing profile checks.: No Vulkan driver found!: [2025.08.12-14.09.41:090][ 0]LogCore: FUnixPlatformMisc::RequestExit(bForce=true, ReturnCode=1, CallSite=<NoCallSiteInfo>) [2025.08.12-14.09.41:090][ 0]LogCore: FUnixPlatformMisc::RequestExit(1, <NoCallSiteInfo>)

Hi Michael,

What is the output of vulkaninfo on WSL2. What GPU is on the host? Is it showing as forwarded to WSL2?

Best regards.

Bellow is my vulkaninfo --summary

I’m assuming that “driverID = DRIVER_ID_MESA_LLVMPIPE” means that my GPU is not being detected. I’ve tried to follow the instructions at https://devblogs.microsoft.com/commandline/d3d12\-gpu\-video\-acceleration\-in\-the\-windows\-subsystem\-for\-linux\-now\-available/\#setting\-up\-video\-acceleration\-in\-wslg

however it fails, in particular, when i run “vainfo --display drm --device /dev/dri/card0” i get “Failed to open the given device!”. I suppose the more I look at this, the more it looks like a failure to setup WSL2 correctly on my side and not an Unreal issue. Are you able to confirm that someone at Epic has successfully ran editor/shipping builds on wsl2 vulkan without any fancy setup instructions?

Best Regards

`vulkaninfo --summary
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 2. Skipping ICD.

VULKANINFO

Vulkan Instance Version: 1.3.204

Instance Extensions: count = 20

VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 4
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6

Instance Layers: count = 3

VK_LAYER_INTEL_nullhw INTEL NULL HW 1.1.73 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211 version 1
VK_LAYER_MESA_overlay Mesa Overlay layer 1.3.211 version 1

Devices:

GPU0:
apiVersion = 4206847 (1.3.255)
driverVersion = 1 (0x0001)
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 15.0.7, 256 bits)
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 23.2.1-1ubuntu3.1~22.04.3 (LLVM 15.0.7)
conformanceVersion = 1.3.1.1
deviceUUID = 6d657361-3233-2e32-2e31-2d3175627500
driverUUID = 6c6c766d-7069-7065-5555-494400000000`

Hi Michael,

It appears the GPU device type is CPU.

Does running with the -AllowCPUDevices get you past the initialization?

Best regards.

Thanks for the suggestion.

I ran with -AllowCPUDevices and I now make it to an actual Window being displayed. Unfortunately the window is black and after about 60 seconds it errors out and shuts down.

In the log i see

[2025.08.14-18.54.54:069][ 0]LogCore: Error: appError called: Fatal error: [File:.\Runtime/RenderCore/Private/RenderingThread.cpp] [Line: 1415]

GameThread timed out waiting for RenderThread after 60.00 secs

I tried running with -RenderOffScreen as well to see if I would get lucky, but no dice. For reference, I’m processing replays and converting them into videos using ffmpeg. So I don’t need to actually see gameplay, but rendering/render targets need to work enough that I can generate images for ffmpeg.

I’ve found a handful of posts of people having a similar issue but no resolutions, the posts speculate that this is related to not having a GPU. Do you have any other suggestions to get this working in CPU only mode without a GPU? While not desirable, CPU rendering is fine for local development, theoretically our Devops pipeline won’t have that problem. That said, I’m still trying to figure out why I can’t see my GPU in WSL2. I’m speculating (without hard evidence) that this is actually a hardware limitation with my laptop.

Best Regards,

Hi Michael,

From what you are describing, it does look likely that the CPU driver doesn’t provide necessary functionality for UE to render correctly. Does setting up a GPU and forwarding it to WSL help? If there is any additional data as to the cause of the failure on the RenderThread, let us know.

Best regards.