Reproduction steps:
1. Open the attached project "ReproProject"
2. Go to Edit > Build Settings > Player Settings
3. Switch to Vulkan Graphics API
4. Build and run on an Oculus Quest 2 device
5. Play for about 2 minutes
Expected result: The player continues to run
Actual result: The player freezes
Reproducible with: 3.2.3-pre.1 (2021.3.11f1)
Could not test with: 2020.3.45f1, 2021.3.18f1, 2022.2.5f1, 2023.2.0a1 (com.unity.2d.common@9.0.0-pre.2\Runtime\InternalBridge\IAnimationPreviewable.cs(5,39): error CS0246: The type or namespace name 'IAnimationPreviewable' could not be found)
Reproducible with devices:
VLNQA00379, Oculus (Quest 2), Android 10, CPU: Snapdragon XR2, GPU: Adreno (TM) 650
Reproducible on: Windows 10 Enterprise 21H2
Notes:
- Reproduces on OpenGLES 3, but takes from about 2 minutes to 1 hour to freeze than with Vulkan and might be a different cause, but should be investigated
- The cause is most likely the OculusXR plugin since the issue does not reproduce with OpenXR
- Android LogCat before the freeze with OpenGLES 3: W/OpenXR_Handle: FromHandle failed. Handle( 864691128455147113, Type: 12, id: 11881 )
- Android LogCat before the freeze with Vulkan: SpatialAnchorPipeline: [Throttled count=149] checkStateEq: getActiveGuardian Called in an invalid state. IDLE
- The freeze can usually be "fixed" by taking off the quest, waiting until it goes into the "sleep" mode, and putting it on again. (Takes about 15-20 seconds)
- In the Unity Profiler, we could observe that one frame begins at the start of the freeze and ends when it is "fixed"
- The project is big and complicated, but the user could not recreate the issue on a different project.
- If building the project fails, follow these steps:
1. Close the SceneReserver Window (located on the right side of the editor)
2. Delete the File “SceneReserverConfig” Located at Assets/Resources
3. Delete the Folder “SceneReserver” Located at Assets/Scripts/Utility/Editor