[5.5] Pixel 10 crash in UEngine::TrimMemory

Our game crashes on the Pixel 10 when loading from our title map to our main map. It seems basically 100% when running with render thread active, and maybe ~50% when running with -onethread. Here is the callstack when using -onethread:

 	libart.so!art_sigsegv_fault()	unknown
 	libart.so!art::FaultManager::HandleSigsegvFault()	unknown
 	libsigchain.so!art::SignalChain::Handler()	unknown
 	[vdso]!__kernel_rt_sigreturn()	unknown
 	vulkan.powervr.so!IMG_vkTrimCommandPoolKHR()	unknown
>	libUnreal.so!VulkanRHI::vkTrimCommandPool(VkDevice Device, VkCommandPool CommandPool, VkCommandPoolTrimFlags Flags) Line 989	c++14
 	libUnreal.so!FVulkanCommandBufferPool::FreeUnusedCmdBuffers(FVulkanCommandBufferPool * this, FVulkanQueue * InQueue, bool bTrimMemory) Line 856	c++14
 	libUnreal.so!FRHICommandListImmediate::FlushResources(FRHICommandListImmediate * this) Line 4828	c++14
 	libUnreal.so!RHIFlushResources() Line 5565	c++14
 	libUnreal.so!UEngine::TrimMemory()::$_98::operator()(FRHICommandList&) const(const (unnamed class) * this, FRHICommandList & RHICmdList) Line 16130	c++14
 	libUnreal.so!void EnqueueUniqueRenderCommand<TRenderCommandTag<UEngine::TrimMemory()::TSTR_FlushCommand16127>, UEngine::TrimMemory()::$_98>((unnamed class) && Lambda) Line 362	c++14
 	libUnreal.so!void FRenderCommandPipe::Enqueue<TRenderCommandTag<UEngine::TrimMemory()::TSTR_FlushCommand16127>, UEngine::TrimMemory()::$_98>((unnamed class) && Lambda) Line 481	c++14
 	libUnreal.so!UEngine::TrimMemory() Line 16126	c++14
 	libUnreal.so!UEngine::LoadMap(USCGameEngine * this, FWorldContext & WorldContext, FURL URL, UPendingNetGame * Pending, FString & Error) Line 15712	c++14
 	libUnreal.so!UEngine::Browse(USCGameEngine * this, FWorldContext & WorldContext, FURL URL, FString & Error) Line 15195	c++14
 	libUnreal.so!UEngine::TickWorldTravel(USCGameEngine * this, FWorldContext & Context, float DeltaSeconds) Line 15393	c++14
 	libUnreal.so!UGameEngine::Tick(USCGameEngine * this, float DeltaSeconds, bool bIdleMode) Line 1772	c++14
 	libUnreal.so!FEngineLoop::Tick(FEngineLoop * this) Line 5870	c++14
 	libUnreal.so!AndroidMain(android_app * state) Line 749	c++14
 	libUnreal.so!android_main(android_app * state) Line 996	c++14
 	libUnreal.so!android_app_entry(void * param) Line 225	c99
 	libc.so!__pthread_start()	unknown
 	libc.so!__start_thread()	unknown

I’ve tried fiddling with the Engine.DelayTrimMemoryDuringMapLoadMode and Engine.FlushRTAndRHIBeforeGCInTrimMemory CVar to alter the timing, but it doesn’t appear to have an impact. The crash always seems to occur in the RHIFlushResources() call that occurs after the TrimMemory GC, on which the CVars have no impact.

Naturally, the Pixel 10 has a PowerVR SoC unlike most other Android devices. The crash does seem to happen within the PowerVR driver, and I’ve waited for a couple of weeks to see if recent driver updates addressed it. If it was crashing this easily, I imagine either Epic or the vendor would have had an internal fix… But I also cannot reproduce it using a stock UE5 project, so this might be a long shot.

I’m in the process of shelving all of our rendering-related cherry picks and engine mods one by one to see if the problem goes away. In the meantime, does this look like something that’s been encountered internally?

Steps to Reproduce
Pixel 10

Android 16

Deferred Renderer

Hi Camille,

We currently have Vulkan disabled for the new PowerVR chipsets internally, though for different reasons (lack of 3d compressed texture support). As 5.5 predates this chipset, you’d need to define device profiles to disable VK on those devices to address this driver issue until further fixes are provided by Imagination. Once fixed, we could potentially tie reenabling VK to a specific driver version. If you are in a position to share any sort of repro of the issue, it would be great as we could share with the OEM.

Best regards.

Hi Camille,

I doubt that the issue you’re experiencing is related to lack of 3D ASTS support. Integrating device profiles Android_PowerVR_Series_[High|Low|id] from https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Config/BaseDeviceProfiles.ini should force that chipset to GLES. We will report the issue to Imagination in case they have any further insight.

Best regards

Hi Camille,

Thank you for the repro as the GPU designer was asking for just that. Building this against stock 5.5.4 and running the best case mentioned above should provide reliable repro of the crash?

Internally, we are specifically not targeting Vulkan on this chipset and current driver versions for the upcoming 5.7 so I wouldn’t foresee immediate resolution until various issues are addressed at OEM level via driver updates.

Best regards.

Thanks Camille, we will pass this information on to the GPU driver development team.

I tried setting up a repro project, and it’s not as simple as “load a new level” using stock UE5.5. I’d heard of the missing ASTC 3D texture support, how would that manifest as? It seems unlikely to be the source of the problem here, but since it doesn’t happen with a stock project, there has to be some functionality we’re using that’s not in my stock project, and I’d like to rule out 3D textures.

Re: device profiles, we don’t have OpenGL as a fallback and so I have updated device profiles accordingly. I may have to selectively reallow OpenGL, the reasons for that decision no longer apply.

Oh, I meant I did cherry pick those device profiles, but changed them to only allow Vulkan as we currently do not target OpenGL RHI at all. That decision was made before I joined the project, I assume due to mobile deferred not efficiently supporting OpenGL at the time, before pixel local storage was available. We may well have to turn that back on, but I must admit I would prefer to avoid the overhead of managing two Android RHIs.

In any event, I was able to reproduce the issue with just a stock UE5 TopDown project, simply by configuring Vulkan device profiles for the PowerVR Series, and just alternating between two maps constantly at the tap of a button. I also did change the bTrimMemory argument to true in RHIEndFrame_RenderThread, just as a small cheat to expedite repro. I’m not sure that’s necessary, considering it’s a 100% crash without it on our project. But I suspect it’s the same crash with or without it.

I see the repro project attachment says “The file is no longer available.” Trying again--I think there might be a max download size?

Edit: guess we’re good to go!

Duly noted for not targeting Vulkan. I’ll look into reinstating OpenGL.

I double checked and confirm that it does happen with stock UE5.5.4, my trick of setting bTrimMemory=true is not necessary. Just tapping the change level button will eventually crash on the level transition trim:

10-16 11:57:04.788 24552 24552 F DEBUG : Build fingerprint: ‘google/frankel/frankel:16/BD3A.251005.003.W3/14147046:user/release-keys’

10-16 11:57:04.788 24552 24552 F DEBUG : Kernel Release: ‘6.6.82-android15-8-gd4aed7ed470e-ab13759939-4k’

10-16 11:57:04.788 24552 24552 F DEBUG : Revision: ‘MP1.0’

10-16 11:57:04.788 24552 24552 F DEBUG : ABI: ‘arm64’

10-16 11:57:04.788 24552 24552 F DEBUG : Timestamp: 2025-10-16 11:57:04.167440044-0700

10-16 11:57:04.788 24552 24552 F DEBUG : Process uptime: 568s

10-16 11:57:04.788 24552 24552 F DEBUG : Executable: /system/bin/app_process64

10-16 11:57:04.788 24552 24552 F DEBUG : Cmdline: com.test.Pixel10Repro

10-16 11:57:04.788 24552 24552 F DEBUG : pid: 20348, tid: 20487, name: RHIThread >>> com.test.Pixel10Repro <<<

10-16 11:57:04.788 24552 24552 F DEBUG : uid: 10314

10-16 11:57:04.788 24552 24552 F DEBUG : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)

10-16 11:57:04.788 24552 24552 F DEBUG : pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)

10-16 11:57:04.788 24552 24552 F DEBUG : esr: 0000000092000006 (Data Abort Exception 0x24)

10-16 11:57:04.788 24552 24552 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000010 (read)

10-16 11:57:04.788 24552 24552 F DEBUG : Cause: null pointer dereference

10-16 11:57:04.788 24552 24552 F DEBUG : x0 0000006e9b6d0010 x1 0000000000000000 x2 0000000000000000 x3 000011e132e3266a

10-16 11:57:04.788 24552 24552 F DEBUG : x4 00ffffffffffffff x5 00000000020bb92a x6 00000000ffffffff x7 0000006cf5310000

10-16 11:57:04.788 24552 24552 F DEBUG : x8 0000006d0ea8f800 x9 ffffffffffffffff x10 0000000000000001 x11 0000006cfe26b978

10-16 11:57:04.788 24552 24552 F DEBUG : x12 0000000000020bbf x13 000000007fffffff x14 00000000020bb92a x15 000011e132e4f761

10-16 11:57:04.788 24552 24552 F DEBUG : x16 0000006e5850f180 x17 0000007154d26d80 x18 0000000000000028 x19 0000006d282933e0

10-16 11:57:04.788 24552 24552 F DEBUG : x20 0000000000000000 x21 0000006d282933e0 x22 0000000000000001 x23 0000000000000001

10-16 11:57:04.788 24552 24552 F DEBUG : x24 0000000000000000 x25 0000006d28293848 x26 0000006d28293648 x27 0000006d28293448

10-16 11:57:04.788 24552 24552 F DEBUG : x28 0000000000000002 x29 0000006e9edf0d70

10-16 11:57:04.788 24552 24552 F DEBUG : lr 00143c6d6abcc3c8 sp 0000006e9edf0d70 pc 0000006e5850f1f0 pst 0000000000001000

10-16 11:57:04.788 24552 24552 F DEBUG : esr 0000000092000006

10-16 11:57:04.788 24552 24552 F DEBUG : 16 total frames

10-16 11:57:04.788 24552 24552 F DEBUG : backtrace:

10-16 11:57:04.788 24552 24552 F DEBUG : #00 pc 00000000000b21f0 /vendor/lib64/hw/vulkan.powervr.so (IMG_vkTrimCommandPoolKHR+112) (BuildId: ccf9b7a6a76efac4a08742c7ad27bd62)

10-16 11:57:04.788 24552 24552 F DEBUG : #01 pc 000000001548c3c4 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FVulkanCommandBufferPool::FreeUnusedCmdBuffers(FVulkanQueue*, bool)+104) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #02 pc 0000000015493468 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FRHICommand<FRHICommandFreeUnusedCmdBuffers, FUnnamedRhiCommand>::ExecuteAndDestruct(FRHICommandListBase&)+240) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #03 pc 000000000c8a4c94 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FRHICommandListBase::Execute()+348) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #04 pc 000000000c8a6f9c /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FRHICommandListExecutor::FTranslateState::Translate(FRHICommandListBase*)+116) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #05 pc 000000000c8e4bb0 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #06 pc 000000000c8a58c8 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FRHICommandListExecutor::FTaskPipe::Execute(FRHICommandListExecutor::FTaskPipe::FTask*, TRefCountPtr<FBaseGraphTask> const&) const+536) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #07 pc 000000000b097d10 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (TGraphTask<TFunctionGraphTaskImpl<void (ENamedThreads::Type, TRefCountPtr<FBaseGraphTask> const&), (ESubsequentsMode::Type)0>>::ExecuteTask()+108) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #08 pc 000000000aaa4e10 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (UE::Tasks::Private::FTaskBase::TryExecuteTask()+348) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #09 pc 000000000aaaf19c /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FNamedTaskThread::ProcessTasksNamedThread(int, bool)+1988) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #10 pc 000000000aaae070 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FNamedTaskThread::ProcessTasksUntilQuit(int)+244) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.788 24552 24552 F DEBUG : #11 pc 000000000c9e5840 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FRHIThread::Run()+336) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.789 24552 24552 F DEBUG : #12 pc 000000000ac97564 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FRunnableThreadPThread::Run()+132) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.789 24552 24552 F DEBUG : #13 pc 000000000aaa8fd8 /data/app/~~YlXqtHivCbkvOjhAtG-RNg==/com.test.Pixel10Repro-ovoZuFOVZE3xXv_z2-ypVw==/lib/arm64/libUnreal.so (FRunnableThreadPThread::_ThreadProc(void*)+116) (BuildId: 99261f7eb99caffe04da5c46a0a59fecc95a4899)

10-16 11:57:04.789 24552 24552 F DEBUG : #14 pc 00000000000875d4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*) (.__uniq.67847048707805468364044055584648682506)+180) (BuildId: 4a26e04ea2224937eb165e0d5fee74ad)

10-16 11:57:04.789 24552 24552 F DEBUG : #15 pc 0000000000079e54 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 4a26e04ea2224937eb165e0d5fee74ad)