[Blocker] IN-68221 Unspecified Crash Logs Rejection from App Submission PS 1.03 Unity 2022.19

We submitted our fully immersive app yesterday. Apple returned the following two crash logs. We’ve been unable to replicate or create any crashes on device for at least a week.

Do either of the following logs look familiar for Unity 2022.19 and PolySpatial 1.0.3 visionOS 1.2 for a fully immersive app?

Filed a bug report here with the log files IN-68221 - [Blocker] VisionOS Rejected from App Store With Unspecided Repro Steps PolySpatial 1.03 Unity 2022.10 Fully Immerive App visionO

We’ve requested more info from the platform. The feedback was:

"Specifically, the app crashed while excersing the game at multiple points and there was no specific actions that led us to crashing. "

Note: I believe they meant running. Ours is not an exercise game. :slight_smile:

Feedback is appreciated. We’re submitting again tonight. We’ve spent most of the afternoon scratching our heads.

Note: attached are some screen shots. The upload button above won’t accept .ips files for some reason. I can do more screen shots or tell me where I can send crashlogs.


1 Like

I’ll see if I can track down the bug report. My first guess is that the app is being killed because it is using too much memory. I can’t remember exactly how that presents in a crash report, but you should see some warnings ahead of the crash that say you’re reaching the limit. Do you know how much memory the app uses when running on the device? It will likely be different in the simulator, and because the simulator is running on macOS, it doesn’t have the same behavior of killing apps that use too much memory.

Yeah it’s a memory issue. I can see in both crash reports that the vmSummary shows 10.1G of total memory use. That’s getting pretty close to the 16G total available memory, and on visionOS and iOS, you don’t get excess memory paged to disk, you just get your process killed by the OS. :frowning:

It’s possible that you’re hitting a memory leak within Unity, or in one of the visionOS packages. But it’s also possible that you just have a lot of big meshes and textures taking up CPU/GPU memory. Without access to your project I can’t say for sure. There are some memory leaks that we’ve fixed over the course of development. They were:

  • Particle systems: fixed circa Unity 2022.3.16f1
  • Hand anchors: fixed circa com.unity.xr.visionos 0.7

So unless a new leak has presented, or these old leaks are back, I’m not aware of anything specific to visionOS XR apps that can cause a leak. The easiest way to spot a leak is to just watch the memory reading in the Xcode debugger as you use the app. Sometimes specific actions can cause it to rise, but sometimes just leaving the thing running is enough. If memory usage just keeps going up and up, and never goes back down, you have a per-frame leak which means it’s always just a matter of time before the thing will crash.

Once you’ve confirmed a leak, tracking it down can be very tricky. Hopefully you’ll find the specific action or scene where it occurs, and that can help, but ultimately you’ll need to rely on Xcode Instruments leak detection to find it. If that doesn’t spot it, you need to get creative. I was able to track down one of the particle system leaks by looking at GPU frame captures, where I noticed hundreds of temporary buffers in a simple app, and more added to the list every frame. This wasn’t tracked by Instruments because they were just being added to a big list, so technically weren’t unclaimed/leaked memory at any point.

If you’re able to share your full project, we can try and help you track this down, but short of that, all I can do is advise from the sidelines.

Appreciate the fast response!

Memory leak is a strong possibility. Knowing our game we’ve been QA’ng on speed runs.

In the simulator we stay between 40-50% of CPU and memory at 370. We pretty much have one main scene, a simple mesh, with no lights.

Theories:

  1. Animations (this was a memory crash early on with Polyspatial when we first joined)
  2. Particles
  3. Moving between scenes

Doing a longer test now on sim and then device. Will report back. Thank you!


Update from Apple on our crash.

Specifically, the app crashed after a couple minutes of use, not at startup or launch. We were not able to identify the exact steps to reproduce the crash, however, it did occur when more environments were loading.


Update from Us: Testing earlier today/last night I noticed a spike in memory going between scenes. Especially from our main scene back to the second intro scene. That adds about 10MB. Many times that memory gets cleaned up going back to the main scene. There’s a particle effect on the main camera and two sounds that play on awake. The intro scene does have lights and 3D models. But not that many.

@mtschoen is there a debugger / memory usage monitor that we can display inside the Vision Pro? Finding it hard to look at xcode and keep the app running. It’s hard to fool the cameras inside the Vision Pro to make it think that I am wearing it.

If not… I’m looking into positioning some mirrors so I can see my laptop while also in VR LOL :slight_smile:

Need to use the app on device for an extended sessions to get the memory usage to move. Since the App is full immersion there’s no passthrough video available. Thank you!

Yeah it’s a pain. If you can’t reproduce the issue in the simulator, you’re going to have to get creative. I submitted feedback to Apple that we need something like the Meta Developer tool which allows you to disable the “user presence” check and run the app without wearing the headset. For now, I’m stuck peeking out the bottom to see my computer screen. The Xcode memory leak instruments are really the tool of choice here, but as you say there’s no way to watch the output and use the headset at the same time. If you can find a friend to play the game, you can look at your computer. That honestly may be your best option.

Otherwise, you should be able to whip up your own stats overlay with some text mesh pro objects and Unity APIs. The Profiler API should have most of what you need. And, of course, the Unity Profiler is a useful tool in all of this that I forgot to mention above. It can show you similar stuff to what Xcode is showing you, but with more awareness of Unity features. The Memory Profiler package should also help.

2 Likes

Very helpful. We submitted and update. Thank you!

Down the road it would be helpful to have something like OVR Metrics available for Oculus. Even our clients could install it.

Appreciate all the support by you and your team as well as the great toolset to bring our game to the Vision Pro!