Quest Headset Freezing and Unresponsive During Gameplay, Unable to Shutdown - Seeking Advice!

Hello everyone,

I am a developer for a VR game and we’ve received multiple user reports about a critical issue. Our game appears to be causing the Meta Quest headset to freeze and become completely unresponsive. Below is a user review that describes the problem:

“I would give it 5 stars, but it broke my headset. My game froze and I couldn’t shut my headset off, press any buttons without them not working, I couldn’t even open up to the boot screen. This game is awesome but it breaks your headset. I held my power button for 5 minutes and it did nothing. Eventually my headset restarted and it started working again but I definitely would not recommend playing this game until this issue is fixed. Edit: This is a reply to the developer response. My game froze as I was coming out of the giant room after going through the portal with the key. I could not do anything and if I moved my head, that frame would move around creating a VERY nauseating experience. No buttons worked at all including the power button. This happened twice but the first time it was at a different spot, and for not as long.”

When the game freezes, it fully locks up the headset; surprisingly, even the physical power button fails to respond, which should normally force a shutdown.

Investigation Efforts:

We have already attempted the following methods to replicate the issue:

  • Log Writing Test: We used a code to continuously write logs to fill up the Quest’s storage. Even after the storage was completely filled, the game continued to operate normally.

  • Memory Leak Simulation: We deliberately created a memory leak to exhaust the system’s memory. This resulted in the game freezing, but the headset could still be normally shut down and restarted.

Seeking Advice:

Has anyone else encountered a similar issue with their applications? How could an application potentially affect the functionality of a physical button like the power button on the Meta Quest? This seems technically implausible, and we are trying to understand the scope and root cause of this problem.

We are at a loss for other potential causes that might lead to this issue. Does anyone have any insights or suggestions on what else we could try?

We appreciate any insights, suggestions, or similar experiences you could share to help us resolve this issue. Thank you!

Does it use mixed reality? I have had some system freezes with that.
Which unity version, render pipeline, graphics API, oculus integration/meta SDK version?

Updating might help. I reduced crashing and freezes for me (at the cost of no editor scene API since SDK v65, so gotta test on device only)

Hello,

We are not using any mixed reality features in our project. The Unity version we are using is 2022.3.12f1, and our render pipeline is URP, although we have made some modifications. Our graphics API is Vulkan. Recently, we upgraded our SDK to version 65, but due to some issues, we downgraded back to version 62. Previously, we were using version 57, but it did not recognize the Quest 3, so we had to upgrade. We need to recognize Quest 3 and then enable some rendering settings on it.

Additionally, we initially installed both OpenXR and Oculus XR Plugin because we planned to have a PCVR version, but due to a bug, we removed the OpenXR Plugin.

Could you clarify what you mean by “no editor scene”? Are you unable to enter Play Mode in the editor, or is it something else?

Try disabling graphics jobs if it’s on. OpenGLES3 might also be more stable for some projects, unless you need Vulkan of course.

I also highly recommend updating Unity, as your version is quite outdated

With my comment I meant that the Scene API for MR doesn’t work anymore in the editor. If you don’t use MR that should not be an issue.

We do not have graphics jobs enabled.

I tried using OpenGLES3, but it seems that OpenGLES3 has depth precision issues on the Quest 2, causing severe z-fighting, so we cannot switch to OpenGLES3.

I have upgraded Unity to 2022.3.31f1, upgraded the Meta SDK from v62 to v65, and also updated the Oculus XR Plugin to the latest version.

Based on user feedback and our testing, the freezing issue still persists. However, we found that it is possible to force shut down by holding the power button for 30 seconds. Users who said they couldn’t shut down might not be aware that they can hold the power button for 30 seconds.

Additionally, based on our testing, we found that we can relatively consistently reproduce the issue by repeatedly calling multiple ParticleSystem.Play methods. However, this hasn’t helped us find the root cause.

Then make a bug report about that. Maybe there is an overflow somewhere.
Also with GLES3, could you reduce the far clip plane on the camera?

Hey we are also seeing this issue. Were you able to find a solution? For us, it’s happening whenever a weapon is instantiating or pooled.

I’ve been working on this issue for two months, day and night, and it’s become too hard for me to continue. Here are my latest findings:

  • Not an Issue with Effects: Disabling all effects does not resolve the bug.

  • Memory Allocation: The bug persists even when simply continuously allocating and deallocating memory. The amount of memory isn’t large, so it doesn’t lead to an OutOfMemory error.

  • Reproduction:

  • For us, the bug can be reproduced by reopening the game around 20 times, with each session lasting 2-3 minutes.

  • Increasing the texture size to raise the application’s memory usage can increase the chances of reproducing the issue.

  • Simply placing the headset somewhere and letting it run for 2 hours won’t cause it to freeze. Repeatedly reopening it is necessary.

This bug has severely impacted my game’s user reviews, with most negative feedback mentioning this issue. I don’t plan to continue investigating this problem further, but I hope someone can find the root cause in the future.

I have found the cause of the freeze.

Based on my tests, I discovered that the freeze occurs when there is high memory usage, and continuously allocating and deallocating memory leads to the freeze. By reducing our application’s memory usage, I found that the issue could no longer be reproduced.

Previously, The PSS was around 3.7GB. I managed to reduce it to 2.5GB through various means, and after 200 cycles of repeated openings, there were no freezes. Before, it would freeze after about 20-30 cycles.

I hope this can help future developers.

2 Likes