How to reproduce:
1. Open the “ReproProject.zip“ project
2. In the “File > Build Settings“ switch to the iOS module
3. Build the Xcode project
4. Open the “Unity-iPhone.xcodeproj“ file in Xcode
5. Build to a physical device
6. Put the device to sleep and wake it or swipe up the application to enter App Switcher and select the app from one once again
Expected result: The application does not freeze
Actual result: The application freezes
Reproducible with: 2022.3.58f1, 6000.0.38f1, 6000.1.0b6, 6000.2.0a3
Reproducible environment: macOS 15.2 (M4 Max)
Not reproducible environment: No other environment tested
Reproducible with these devices:
VLNQA00535, iPhone XS (MT9F2ET/A), CPU: Apple A12 Bionic, GPU: Apple designed, OS: 17.6.1
VLNQA00416, iPhone 13 Pro (MLVA3ET/A), CPU: Apple A15 Bionic, GPU: Apple designed, OS: 16.1.1
VLNQA00626, iPhone 16 (MYE73QN/A), CPU: Apple A18 Pro, GPU: Apple designed, OS: 18.0.1
VLNQA00232, iPhone 8 Plus (MQ8M2ET/A), CPU: Apple A11 Bionic, GPU: Apple designed, OS: 16.7.10
VLNQA00600, iPad Pro (9.7 inch, WiFi), CPU: Apple A9X, GPU: Apple designed, OS: 14.8 (The application freezes on launch)
Notes:
- Exchange the “UnityBatchPlayerLoop()“ to the “UnityPlayerLoop()“ in the “.mm“ files in the Xcode project, not a workaround “UnityPlayerLoop()“ causes a flood of OS errors since Unity (Metal) is trying to use the graphics while in the background
- It freezes on the first launch of the app from Xcode, but consistent reproduction will happen once the app is put to the background and brought back to the foreground