A crash occurs on the second launch after integrating a bundled PSO cache.

((This is a translation of a [Japanese [Content removed] by Yoshitaka Hirotoshi).)

After collecting PSO logs with Meta Quest 3, creating a bundled PSO cache, integrating it, and precompiling in Fast mode at startup, a crash occurs on the second launch though on the first launch, it works normally.

The settings in AndroidEngine.ini are as follows:

[ConsoleVariables]

r.ShaderPipelineCache.StartupMode=1

r.Vulkan.EnablePSOFileCacheWhenPrecachingActive=1

[DevOptions.Shaders]

NeedsShaderStableKeys=true

The attached reproduction project was created with the following steps:

a) Create a new VRTemplate project.

b) Add a button to the in-game menu that can execute the console command “r.ShaderPipelineCache.Save”.

c) Put the above AndroidEngine.ini under Config/Android/.

The detailed reproduction steps (including PSO log collection and integration of the bundled PSO cache):

1) Package the attached VRTemplate project for Android.

2) Install it on a Meta Quest 3.

3) With the Quest 3 being ADB-connected, run Build/BatchFiles/RunForCollectPSOs.bat on the Windows machine.

4) When the app launches on the Quest 3, press the menu button on the left side to open the in-game menu.

5) Press the “Save PSO Cache” button in the menu to save the PSO log.

6) Edit Build/BatchFiles/ExpandPSOCaches.bat and set the path to UnrealEditor-Cmd.exe in the “set EDITOR_CMD=” line.

7) With the Quest 3 being ADB-connected, run Build/BatchFiles/ExpandPSOCaches.bat.

8) Exit the game and uninstall the installed app.

9) Package the VRTemplate project for Android again and install it on the Meta Quest 3.

10) Launch the app and confirm that it can run normally.

11) If exiting the app and then launching it again, the crash will be reproduced.

Workaround:

After reproducing the crash in step 11, launching the app again with r.Vulkan.UseChunkedPSOCache=0 prevents the crash from occurring on subsequent launches. If running Build/BatchFiles/RunWithoutChunkedPSOCache.bat, the app will start with this setting.

I am considering precompiling the bundled PSO cache at startup in order to reduce frame drops during the first-time rendering of Niagara effects, etc.

Though I am currently investkigating this, do you think even if using the setting “r.Vulkan.UseChunkedPSOCache=0”, it will still provide the intended effect as a mechanism?

Also, if there are any known bugs or fixes related to this issue, I’d appreciate it if you could share the information.

I guess some related issues may have been fixed in Unreal Engine 5.6, but I use Meta’s customized version of UE 5.5.3 for this project, and that version of UE 5.6 has not been released yet. So, updating to UE 5.6 is currently difficult.

Thank you for your time and help.

[Attachment Removed]

再現手順
Environment for Reproduction:

Unreal Engine 5.5.4 (Epic Games Launcher version)

Development Machine: Windows 11

Test Device: Meta Quest 3

Steps to Reproduce:

i) Package the attached VRTemplate project for Android.

ii) Install and launch it on a Meta Quest 3.

iii) The default VRTemplate scene will be displayed.

iv) Exit the app, and then launch it again.

v) After the system splash screen ends, the app will crash.

[Attachment Removed]

(This is a translation of a Japanese post by Yoshitaka Hirotoshi.)

Have you been able to reproduce this issue on your side, as well?

I would like to use the Bundled PSO Cache to prevent sudden hitches during gameplay. However, it seems that setting r.Vulkan.UseChunkedPSOCache=0 does not improve the issue.

Resolving this issue is a critical requirement to release the game. I’d appreciate it if you could provide any advice or insights about the cause of the crash and possible workarounds.

Thanks.

[Attachment Removed]

Hi Masashiro,

Apologies for the delay getting to this case. I am unable to access the original Japanese Post as it yields a portal error or 404. Can you please attach the repro project from that case to this one?

Many thanks.

[Attachment Removed]

[mention removed]​

file:

[Attachment Removed]

Hi Masahiro,

Thanks for the working URL. Unfortunately, the file attached to the original case is just a log and not a repro project. The file attached to the last response also appears to be inaccessible. It would be useful to ask the licensee for the repro project as the case references bat files that have been created on their end, namely, RunForCollectPSOs.bat and ExpandPSOCaches.bat.

Thanks!

[Attachment Removed]

[mention removed]​

Attached the repro project file:

Thanks

[Attachment Removed]

Hi there,

This issue appears to have been resolved under 5.6.1. Is your project at a stage where moving engine versions is a possibility or are you locked at 5.5? As far as I’m aware, PSO precaching was not complete under 5.5 and would likely require a substantial backporting to resolve under that engine version.

Best regards.

[Attachment Removed]

[mention removed]​

Hello,

The URL is [Content removed]

Also, I have attached the repro project.

Thanks.

Seems I have attached an unavailable fie. So I’ll attached another file to the next post:

[Attachment Removed]

Understood.

I have just asked him for the file.

Thanks.

[Attachment Removed]