Search Issue Tracker

Fixed in 2020.3.X

Votes

0

Found in

2019.4

2019.4.13f1

Issue ID

1377349

Regression

No

[iOS] App crashes when "Use HDR" in Graphics settings and "Metal API Validation" in Xcode are checked

Metal

-

How to reproduce:
1. Open the attached project ("1377349_2019.4.32f1.zip")
2. Build an Xcode project (File -> Build Settings -> Build)
3. Open the built Xcode project
4. Check the Metal API Validation checkbox (Product -> Scheme -> Edit Scheme)
5. Deploy and run on an iOS 15 device

Reproducible with: 2019.4.32f1
Not reproducible with: 2020.3.19f1, 2020.3.21f1, 2021.1.27f1, 2021.2.1f1, 2022.1.0a13

Reproducible on: iPhone 13 Mini (iOS 15.0)
Not reproducible on: iPad 6th generation, iPhone 8 Plus (iOS 14.4.2)

Note:
- Disabling "Metal API Validation" prevents the crash from occurring

Stack trace:
* thread #33, name = 'UnityGfxDeviceWorker', stop reason = signal SIGABRT
* frame #0: 0x00000001b92e89c4 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x00000001f2cd3434 libsystem_pthread.dylib`pthread_kill + 268
frame #2: 0x000000018d697f64 libsystem_c.dylib`abort + 164
frame #3: 0x000000018d6ee914 libsystem_c.dylib`__assert_rtn + 212
frame #4: 0x000000019caf0c18 Metal`MTLReportFailure.cold.1 + 56
frame #5: 0x000000019cadc5a0 Metal`MTLReportFailure + 476
frame #6: 0x00000001e3b5ed24 MetalTools`-[MTLDebugCommandBuffer lockPurgeableObjects] + 220
frame #7: 0x00000001e3b5e168 MetalTools`-[MTLDebugCommandBuffer preCommit] + 608
frame #8: 0x00000001e3b0d450 MetalTools`-[MTLToolsCommandBuffer commit] + 32
frame #9: 0x00000001067d766c UnityFramework`GfxTaskExecutorMetal::DoExecute(id<MTLCommandBuffer>, MetalContext::CommandBufferCommitType) + 136
frame #10: 0x00000001067d7cf4 UnityFramework`GfxTaskExecutorMetal::Execute(id<MTLCommandBuffer>, MetalContext::CommandBufferCommitType) + 340
frame #11: 0x00000001067cabac UnityFramework`GfxDeviceMetal::ExecuteCommandBuffer(id<MTLCommandBuffer>, MetalContext::CommandBufferCommitType) + 16
frame #12: 0x00000001067de4f8 UnityFramework`MetalContext::CommitCommandBuffer(MetalContext::CommandBufferCommitType) + 152
frame #13: 0x00000001067bfcdc UnityFramework`metal::PrepareEndFrame() + 212
frame #14: 0x00000001067cad28 UnityFramework`GfxDeviceMetal::PresentFrame() + 372
frame #15: 0x0000000105e406e0 UnityFramework`GfxDeviceWorker::RunCommand(ThreadedStreamBuffer&) + 32768
frame #16: 0x00000001067cca48 UnityFramework`GfxDeviceWorkerAutoreleasePoolProxy + 68
frame #17: 0x0000000105e41518 UnityFramework`GfxDeviceWorker::RunExt(ThreadedStreamBuffer&) + 92
frame #18: 0x0000000105e414b0 UnityFramework`GfxDeviceWorker::Run() + 156
frame #19: 0x0000000105e38398 UnityFramework`GfxDeviceWorker::RunGfxDeviceWorker(void*) + 12
frame #20: 0x0000000106461ad8 UnityFramework`Thread::RunThreadWrapper(void*) + 496
frame #21: 0x00000001f2ccda60 libsystem_pthread.dylib`_pthread_start + 148

  1. Resolution Note (fix version 2020.3):

    Fixed in: 2020.3.19f1

Comments (1)

  1. tzm

    May 24, 2022 17:48

    Hi, unfortunately. We reappeared on unity version 2020.3.25, xcode version 13.2.1(13C100) , metal api verification is off,
    Version distribution:
    75%
    iOS 15
    13%
    iOS 14
    10%
    iPadOS 15
    1%
    iPadOS 14

    stack:
    0
    libsystem_kernel.dylib
    __pthread_kill + 8
    1
    libsystem_pthread.dylib
    pthread_kill + 208
    2
    libsystem_c.dylib
    abort + 120
    3
    IOGPU
    -[IOGPUMetalTextureLayout initWithDevice:descriptor:] + 394
    4
    AGXMetalA10
    (缺少 UUID 85f3c688dda9320d844a64b44e5076c8)
    5
    AGXMetalA10
    (缺少 UUID 85f3c688dda9320d844a64b44e5076c8)
    6
    AGXMetalA10
    (缺少 UUID 85f3c688dda9320d844a64b44e5076c8)
    7
    AGXMetalA10
    (缺少 UUID 85f3c688dda9320d844a64b44e5076c8)
    8
    AGXMetalA10
    (缺少 UUID 85f3c688dda9320d844a64b44e5076c8)
    9
    UnityFramework
    MetalContext.mm - Line 408
    MetalContext::CreateNewEncoder(MTLRenderPassDescriptor*) + 408
    10
    UnityFramework
    FrameBufferMetal.mm - Line 706
    metal::PrepareRenderTargetIfNeeded(GfxDeviceMetalBase&) + 706
    11
    UnityFramework
    GfxDeviceMetal.mm - Line 3841
    GfxDeviceMetal::SetRenderTargetsImpl(GfxRenderTargetSetup const&) + 3841
    12
    UnityFramework
    GfxDeviceWorker.cpp - Line 1092
    GfxDeviceWorker::RunCommand(ThreadedStreamBuffer&) + 1092
    13
    UnityFramework
    GfxDeviceMetal.mm - Line 5289
    GfxDeviceWorkerAutoreleasePoolProxy + 5289
    14
    UnityFramework
    GfxDeviceWorker.cpp - Line 389
    GfxDeviceWorker::RunExt(ThreadedStreamBuffer&) + 389
    15
    UnityFramework
    GfxDeviceWorker.cpp - Line 353
    GfxDeviceWorker::RunGfxDeviceWorker(void*) + 353
    16
    UnityFramework
    Thread.cpp - Line 81
    Thread::RunThreadWrapper(void*) + 81
    17
    libsystem_pthread.dylib
    _pthread_start + 116
    18
    libsystem_pthread.dylib
    thread_start + 8

    I can also provide more stacks if you need.
    Please tell me what happened and how I can fix this crash

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.