Android crash on low end devices

So if i use any instanced static mesh the game crashes with this error only happening on low end devices
To test it for sure is a instanced static mesh issue I create a empty level packaged and the game opend fine.
Then i added unreal default cube directly around 8 of them it open
but then i added them using instanced static mesh around 5 of them (later tried only single instaced also and tried folliage also) and it crashed
this is the log

[2026.03.02-13.12.16:099][ 0]LogAndroid: Display: Low Power Mode Changed: 0
[2026.03.02-13.12.16:232][ 0]LogRenderer: Forcing update for all mesh draw commands: SkyLight real-time capture change
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: === Critical error: ===
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error:
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:Runtime/Core/Public/Containers/Array.h] [Line: 1095]
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: Array index out of bounds: 10 into an array of size 8
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B82534C5C libUnreal.so(0x000000000370FC5C)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B88766150 libUnreal.so(0x0000000009941150)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B88767604 libUnreal.so(0x0000000009942604)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B88766E98 libUnreal.so(0x0000000009941E98)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B83B17394 libUnreal.so(0x0000000004CF2394)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B83CECA78 libUnreal.so(0x0000000004EC7A78)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B83B1B7D0 libUnreal.so(0x0000000004CF67D0)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B83B1DDD0 libUnreal.so(0x0000000004CF8DD0)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B83B4ADA8 libUnreal.so(0x0000000004D25DA8)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B83B1C1AC libUnreal.so(0x0000000004CF71AC)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B8281ADC0 libUnreal.so(0x00000000039F5DC0)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B8221C830 libUnreal.so(0x00000000033F7830)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B82259D34 libUnreal.so(0x0000000003434D34)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B82258F28 libUnreal.so(0x0000000003433F28)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B83C8BA9C libUnreal.so(0x0000000004E66A9C)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B824424FC libUnreal.so(0x000000000361D4FC)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007B8221E790 libUnreal.so(0x00000000033F9790)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007CCE185DC4 libc.so(0x0000000000102DC4)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: [Callstack] 0x0000007CCE119B54 libc.so(0x0000000000096B54)Unknown
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error:
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error:
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error:
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error:
[2026.03.02-13.12.16:253][ 0]LogExit: Executing StaticShutdownAfterError
[2026.03.02-13.12.16:264][ 0]LogAndroid: FAndroidMisc::RequestExit(1, FAndroidErrorOutputDevice::Serialize.!GIsGuarded)

Hello there @vishalking123!

Checking through your log extract, you are getting a quite clear critical error:

[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:Runtime/Core/Public/Containers/Array.h] [Line: 1095]
[2026.03.02-13.12.16:242][ 0]LogAndroid: Error: Array index out of bounds: 10 into an array of size 8

This line means that UE is trying to render your instanced mesh, and the hardware is unable to pull it off, due memory limits, which corresponds with low-end devices. It’s also happening at very start of the rendering process, as it’s captured right after the SkyLight change.

There are a few methods to test here, but take in consideration that certain low end platforms may just not be able to run certain features, mostly due old hardware being unable to process said features.

  • First of all, go to your project settings, look for “Enable GPUScene in Mobile”, and disable it. This should force the engine to use older tech for drawing distances. It will affect performance a bit, but the crash should dissapear

    image

  • Next, since your skylight was part of the initial trigger, this could result in a memory spike. To prevent that, open your skylight, and in Details, disable Real-Time Capture, and set to source type to Captured Scene

    UnrealEditor_XqvR2pgI5d

  • Finally, there’s a mobile setting for VR, which you are most likely not using, but if enabled, it could create this very same error type. Go back to project settings, use the search bar to look for “Mobile Multi-View”, and disable it

    image

Hope this helps, and good luck!

thanks for the reply

i was not able to see enable gpu scene on mobile in project settings i am using using unreal 5.7
I have deleted the sky light as i am not using it anyways in my actual level
and checked that mobile multi view is disabled

Hey i have one more post regarding a issue for the same game and i think you are much more experienced in mobile dev using unreal engine so if you can also check and see if you can help me out in this

Basically this game is live on play store and lots of user are facing this issue not replicated on my phone happened once though but not happening now can this be the same issue or its a difference one and how should i go and debug if needed.

**[libUnreal.so] FVulkanCommandListContext::RHISetGraphicsPipelineState(FRHIGraphicsPipelineState*, unsigned int, bool)
**


pid: 0, tid: 5928 >>> com.studioberserk.survivalrally <<<

backtrace:
#00 pc 0x00000000000747c0 /vendor/lib64/hw/vulkan.adreno.so (qglinternal::vkCmdBindPipeline(VkCommandBuffer_T*, VkPipelineBindPoint, VkPipeline_T*)+152)
#01 pc 0x0000000008685b34 /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FVulkanCommandListContext::RHISetGraphicsPipelineState(FRHIGraphicsPipelineState*, unsigned int, bool)) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#02 pc 0x0000000002c4d56c /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FRHICommandListExecutor::FTranslateState::Translate(FRHICommandListBase*)) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#03 pc 0x0000000002c4c8f4 /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FRHICommandListExecutor::FTaskPipe::Execute(FRHICommandListExecutor::FTaskPipe::FTask*, TRefCountPtr const&) const) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#04 pc 0x0000000002c58084 /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (TGraphTask<TFunctionGraphTaskImpl<void (ENamedThreads::Type, TRefCountPtr const&), (ESubsequentsMode::Type)0>>::ExecuteTask()) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#05 pc 0x0000000002331318 /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (UE::Tasks::Private::FTaskBase::TryExecuteTask()) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#06 pc 0x0000000002349140 /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FNamedTaskThread::ProcessTasksNamedThread(int, bool)) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#07 pc 0x00000000023489ec /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FNamedTaskThread::ProcessTasksUntilQuit(int)) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#08 pc 0x0000000002d152cc /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FRHIThread::Run()) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#09 pc 0x00000000023b5f1c /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FRunnableThreadPThread::Run()) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#10 pc 0x00000000023323b4 /data/app/~~AcrneZhkPhhUXP0-J4zdzg==/com.studioberserk.survivalrally-yr9e_j2V2zzA72liibMYSQ==/lib/arm64/libUnreal.so (FRunnableThreadPThread::_ThreadProc(void*)) (BuildId: e9f36891db4b185004498a725c77eef6d6f80bb5)
#11 pc 0x00000000000f0df4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264)
#12 pc 0x000000000008d63c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68)

Ok i tried disabling the gpu scene on mobile using defaultEngine.ini
r.Mobile.SupportGPUScene=0
r.Mobile.UseGPUSceneTexture=0

the game runs not but everything is black i can only see widgets the level is totally blacked out

Hello again!

Thank you for the update, and yes, pushing the changes via defaultEngine.ini is a good approach, since the GPU scene toggle is not available. The thing is, that combinantion made your world go invisible, which means, we can rule out tinkering with GPU scene at full.

Instead, let’s test using commands that only affect the instancing component, or how the GPU stores instance data. First of all, set the values from GPUScene back to 1:

r.Mobile.SupportGPUScene=1
r.Mobile.UseGPUSceneTexture=1

Then, add the following lines to defaultEngine.ini:

r.Mobile.UseGPUSceneInstancing=0
r.Mobile.StaticMesh.AutoInstancing=0

These changes should prevent UE from forcing instances in the affected meshes, preventing the out of bounds array error. The rest of the GPU scene pipeline remains active, so your world should be visible again.

I tried this settings but it crashes after i added this two and removed the old one
but i found another solution not sure though it is optimal or not

r.Mobile.SupportGPUScene=0
r.Mobile.UseGPUSceneTexture=0

I keep these two like this and update occlusion culling from 0.03 to 0.02 and everything is visible now

is this a good solution?

Hello again!

Glad to hear it was resolved! As for the solution status, the initial approach was to disable GPUScene to create stability in older devices, but it wasn’t working cause the world was not visible.

And that was most likely due the occlusion value culling everything on sight. Adjusting to a less aggressive value did the trick. So, I would say it is a good solution for this very specific scenario.