Search Issue Tracker

Won't Fix

Votes

1

Found in

2021.3.55f1

2022.3.65f1

6000.0.55f1

6000.2.0f1

6000.3.0a4

Issue ID

UUM-114180

Regression

No

[Android] [iOS] Application silently crashes when creating and setting up Textures2D in large amounts

-

How to reproduce:
1. Open the “ReproDiff.zip“ project
2. Open the “SampleScene“
3. Build and Run for Android
4. Press the “RegisterTexture 1000“ button
5. Wait for a few seconds

Expected result: Application does not crash
Actual result: Application silently crashes

Reproducible with: 2021.3.55f1, 2022.3.64f1, 2022.3.65f1, 6000.0.55f1, 6000.1.15f1, 6000.2.0f1 (eed1c594c913), 6000.3.0a4

Reproducible environment: macOS 15.4.1  (M4 Max)
Not reproducible environment: No other environment tested

Reproducible with these devices:
VLNQA00344, Note20 Ultra 5G USA (SM-N986W), CPU: Snapdragon 865 SM8250, GPU: Adreno 650, OS: 11
VLNQA00368, Galaxy Z Fold2 5G (SM-F916B), CPU: Snapdragon 865 SM8250, GPU: Adreno 650, OS: 11
VLNQA00375, Galaxy S21 Plus 5G (SM-G996U), CPU: Snapdragon 888, GPU: Adreno 660, OS: 11
VLNQA00481, Samsung Galaxy S20 FE 5G (SM-G781B), CPU: Snapdragon 865 SM8250, GPU: Adreno 650, OS: 11
VLNQA00319, Google - (Pixel 4), Android 13, CPU: Snapdragon 855 SM8150, GPU: Adreno (TM) 640
VLNQA00511, Samsung Galaxy S8 (SM-G950F), Android 9, CPU: Exynos 9 Octa 8895, GPU: Mali-G71
VLNQA00335, Samsung Galaxy S20+ 5G (SM-G986B), Android 10, CPU: Exynos 990, GPU: Mali-G77
VLNQA00626, iPhone 16 (MYE73QN/A), CPU: Apple A18 Pro, GPU: Apple designed, OS: 18.5

Notes:
- Issue reproduces with both Vulkan and OpenGLES3 Graphic API
- This devices (VLNQA00335, Samsung Galaxy S20+ 5G (SM-G986B)) shutdowns and restarts instead of just the application crashing

  1. Resolution Note:

    Closing as "Won't Fix" because this is a simple "device out-of-memory" error that we are unable to fix.

    In the provided repro script, 1000 large textures are created and SetPixel / Apply is called on them.
    In a case like this, we would usually recommend the use of an additional "GameObject.DestroyImmediate(texture);" call (immediate after the "Apply" call) in order to clean the textures up once they are no longer needed.

    However: "GameObject.DestroyImmediate" does not actually immediately destroy the graphics API-sided memory.
    This action is, by design, queued onto the RenderThread. This means that some memory might not immediately be released and, as such, some devices might still simply run out of memory if more textures keep on getting created at the same time.

    In this case, it might thus be necessary to create smaller textures, or a smaller amount of textures.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.