Arfoundation-samples: Persistent crashes on iOS when unloading scene

Created on 4 Feb 2019  路  31Comments  路  Source: Unity-Technologies/arfoundation-samples

I'm seeing persistent crashes when unloading an AR foundation scene on iOS, even using all the latest software.

When I unload a scene, sometimes it works the first couple of times and then crashes, other times it will crash on first try.

Error in XCode is UnityGfxDeviceWorker (31): EXC_BAD_ACCESS (code=1, address=0xdc56d9600)

Crash log: https://pastebin.com/DUGSPDyS

Software fingerprint:

Unity 2018.3.4f1
iOS 12.1.2
iPhone SE

AR Foundation 1.0.0-preview.22
ARCore XR Plugin 1.0.0-preview.24
ARKit XR Plugin 1.0.0-preview.23

bug fixed

Most helpful comment

Good news! I was finally able to reproduce this - the key was using an old device (an iPhone 6+ in my case).

The fix has been published for 3.1.0-preview.8 with backports to 3.0 (verified) and 2.1 (verified) on the way.

All 31 comments

Hi @nilsk123 , could you provide the symbolicated crash log instead?

See here how to do it: https://developer.apple.cosm/library/archive/technotes/tn2151/_index.html

The easiest way is to get it from XCode via the Devices & Simulators list.

  1. In Xcode > Window > Devices & Simulators , select a connected iPhone/iPad/etc top left.
  2. View Device Logs
  3. All Logs

More: https://stackoverflow.com/a/25927122

Hi @nilsk123 , could you provide the symbolicated crash log instead?

See here how to do it: https://developer.apple.cosm/library/archive/technotes/tn2151/_index.html

The easiest way is to get it from XCode via the Devices & Simulators list.

  1. In Xcode > Window > Devices & Simulators , select a connected iPhone/iPad/etc top left.
  2. View Device Logs
  3. All Logs

More: https://stackoverflow.com/a/25927122

Here it is:

https://pastebin.com/6ZxiP4G1

Getting a similar issue with crashing when unloading an AR scene.

https://pastebin.com/LHyrxVs3

Same here

Unity 2018.3.6
same issue

Can we expect this issue to be fixed? Is there any workaround atm? -> Scenes with ar foundation / Arkit loaded crash when unloaded with the SceneManager.

I had problems with a ARKit image tracking scene crashing in my app. I rebuilt the scene using ARFoundation image tracking and I have no more crashes.

@dorkbot For us it also happens with ARFoundation (but not on every unload)

this hasn't been fixed in the latest versions as far as I can tell (haven't tried the 2.* versions as I don't want to update to unity beta's)

We work around it by just never unloading the AR scene, we disable the gameobjects and keep everything in memory when AR isn't used.

haven't tried the 2.* versions as I don't want to update to unity beta's

ARFoundation 2.1 is compatible with Unity 2019.1 (released) and 2019.2 (beta)
ARFoundation 1.5 is the exact same package compatible with 2018.3/4

We were not able to reproduce the issue in 1.5/2.1. Are you able to update to 1.5?

haven't tried the 2.* versions as I don't want to update to unity beta's

ARFoundation 2.1 is compatible with Unity 2019.1 (released) and 2019.2 (beta)
ARFoundation 1.5 is the exact same package compatible with 2018.3/4

We were not able to reproduce the issue in 1.5/2.1. Are you able to update to 1.5?

It is compatible? Then I have probably misunderstood the docs on this. I will try using the very latest of all plugins (arfoundation, arkit, arcore) and report back here

haven't tried the 2.* versions as I don't want to update to unity beta's

ARFoundation 2.1 is compatible with Unity 2019.1 (released) and 2019.2 (beta)
ARFoundation 1.5 is the exact same package compatible with 2018.3/4

We were not able to reproduce the issue in 1.5/2.1. Are you able to update to 1.5?

Docs say:

Requirements

This version of AR Foundation is compatible with the following versions of the Unity Editor:

2019.2a8 and later

That's an error in the docs (fixing soon).

ARFoundation 2.1 is compatible with Unity 2019.1 (released) and 2019.2 (beta)
ARFoundation 1.5 is the exact same package compatible with 2018.3/4

Is correct.

I have a well reproducible crash (UnityGfxDeviceWorker / EXC_BAD_ACCESS) using Unity 2019.2.0f1 and ARFoundation 2.1.1 on iOS 12.3. It happens when you do this (around 50% of time):

arSession.enabled = false; 
arCamera.gameObject.SetActive(false);  // <-- comment this out to prevent crash

If you are not deactivating the arCamera, things seem to work fine. I suspect the pointer to the AR texture is freed by the camera deactivation but ar foundation still is writing / tries to write into it. This would be a thread synchronization problem inside the arkit/arfoundation interface.

I have not yet tried disabling the camera in the next frame...

We have temporarily worked around this by disabling multithreaded rendering. Same scenario as above, reset arsession and disable camera gameobject

I'm having this issue too, 2019.2.0f1 and ARFoundation 3.0.0 preview 2

We still see this problem sporadicaly too, even without multithreaded rendering. Never in test environments ofcourse, only in production =P

My gut feeling is that it has something to do with the fact we use ScreenCapture.CaptureScreenshotAsTexture() around the same time we reset an AR session, but i'm not entirely sure

for me it's about 90% of the time when ending an AR session.
@tdmowrer Is this being looked at? Or fixed in a newer version of Unity? :)
If you're unable to reproduce it then do you have any ideas what we might be doing wrong?
Thanks!

I'm getting the same thing when disabling the ARHumanBodyManager, I'm creating a new issue for it. #308

I have a well reproducible crash (UnityGfxDeviceWorker / EXC_BAD_ACCESS) using Unity 2019.2.0f1 and ARFoundation 2.1.1 on iOS 12.3. It happens when you do this (around 50% of time):

arSession.enabled = false; 
arCamera.gameObject.SetActive(false);  // <-- comment this out to prevent crash

If you are not deactivating the arCamera, things seem to work fine. I suspect the pointer to the AR texture is freed by the camera deactivation but ar foundation still is writing / tries to write into it. This would be a thread synchronization problem inside the arkit/arfoundation interface.

I have not yet tried disabling the camera in the next frame...

I am unable to reproduce this. One possible difference is my device is running iOS 13. Have you ever seen the issue in iOS 13 or only in iOS 12.x?

@tdmowrer I can still reproduce this crash with Unity 2019.2.6f1 and iOS 13.1.1. To reproduce, it needs "Multithreaded Rendering" activated. Seems it does not happen as often as with iOS 12.x, but it's definitely still there.
image
PS. ARFoundation 3.0.0 preview 3 (but does not seem related to version of arfoundation)

I've got Unity 2019.2.7f2, ARFoundation 3.0.0-preview.3, iOS 13.1, and multithreaded rendering enabled. In my test, I have a button which does the following:

m_Active = !m_Active;
arSession.enabled = m_Active; 
arCamera.gameObject.SetActive(m_Active);

which is the code you posted earlier. I have tried an iPhone X and iPad Pro. Toggling the session and camera on and off multiple times has the expected behavior and does not crash. Anything else I might be missing to reproduce this?

I have a well reproducible crash (UnityGfxDeviceWorker / EXC_BAD_ACCESS) using Unity 2019.2.0f1 and ARFoundation 2.1.1 on iOS 12.3. It happens when you do this (around 50% of time). I can still reproduce this crash with Unity 2019.2.6f1 and iOS 13.1.1

I've got Unity 2019.2.7f2, ARFoundation 3.0.0-preview.3, iOS 13.1

Slim chance, and Tim you're probably confident nothing related has changed between these versions, but.. using the exact same setup as him might help? From your 2 responses it looks like you haven't had a chance to try it in similar conditions. For me it definitely happens consistently with anything under preview 3.

@kaij Do you get the problem in one of the arfoundation sample scene too or only your own project?

I have a well reproducible crash (UnityGfxDeviceWorker / EXC_BAD_ACCESS) using Unity 2019.2.0f1 and ARFoundation 2.1.1 on iOS 12.3. It happens when you do this (around 50% of time). I can still reproduce this crash with Unity 2019.2.6f1 and iOS 13.1.1

I've got Unity 2019.2.7f2, ARFoundation 3.0.0-preview.3, iOS 13.1

Slim chance, and Tim you're probably confident nothing related has changed between these versions, but.. using the exact same setup as him might help? :) From your 2 responses it looks like you haven't had a chance to try it in similar conditions. For me it definitely happens consistently with anything under preview 3.

Fair point. This issue was originally reported in ARKit XR Plugin 1.0.0-preview.23 which was largely rewritten in 2.0 and continues to be reported, so it seems unlikely that a point release within 2.1 or 3.0 would matter significantly. Nevertheless, I tested 2019.2.0f1 with ARFoundation 2.1.4 and ARKit XR Plugin 2.1.2 (i.e., the latest stable releases of those packages). My test script toggles the ARSession component and camera's GameObject once per second:

using System.Collections;
using UnityEngine;
using UnityEngine.XR.ARFoundation;

public class CrashieMcCrasherson : MonoBehaviour
{
    public ARSession arSession;
    public ARCameraManager arCameraManager;
    bool m_Active = true;

    void OnEnable()
    {
        StartCoroutine(Toggle());
    }

    IEnumerator Toggle()
    {
        while (true)
        {
            m_Active = !m_Active;
            Debug.Log($"{(m_Active ? "Enabling" : "Disabling")} session and camera");
            arSession.enabled = m_Active;
            arCameraManager.gameObject.SetActive(m_Active);
            yield return new WaitForSeconds(1);
        }
    }
}

This works as expected and fails to reproduce the crash on iOS 13.1 (a version reported to reproduce the problem).

Could someone submit a bug report, attach a minimal project that reproduces the crash, and then post the case number here so I can investigate further?

@ovkhan This sounds unrelated to the issue being discussed in this thread. Could you open a new issue, please?

@ovkhan This sounds unrelated to the issue being discussed in this thread. Could you open a new issue, please?

Hi,

Here's a new twist. I can reliably reproduce this in a build that's been downloaded from testflight. The exact same build transfered to a phone using xcode runs just fine on the same device.

I have a well reproducible crash (UnityGfxDeviceWorker / EXC_BAD_ACCESS) using Unity 2019.2.0f1 and ARFoundation 2.1.1 on iOS 12.3. It happens when you do this (around 50% of time). I can still reproduce this crash with Unity 2019.2.6f1 and iOS 13.1.1

I've got Unity 2019.2.7f2, ARFoundation 3.0.0-preview.3, iOS 13.1

Slim chance, and Tim you're probably confident nothing related has changed between these versions, but.. using the exact same setup as him might help? :) From your 2 responses it looks like you haven't had a chance to try it in similar conditions. For me it definitely happens consistently with anything under preview 3.

Fair point. This issue was originally reported in ARKit XR Plugin 1.0.0-preview.23 which was largely rewritten in 2.0 and continues to be reported, so it seems unlikely that a point release within 2.1 or 3.0 would matter significantly. Nevertheless, I tested 2019.2.0f1 with ARFoundation 2.1.4 and ARKit XR Plugin 2.1.2 (i.e., the latest stable releases of those packages). My test script toggles the ARSession component and camera's GameObject once per second:

using System.Collections;
using UnityEngine;
using UnityEngine.XR.ARFoundation;

public class CrashieMcCrasherson : MonoBehaviour
{
    public ARSession arSession;
    public ARCameraManager arCameraManager;
    bool m_Active = true;

    void OnEnable()
    {
        StartCoroutine(Toggle());
    }

    IEnumerator Toggle()
    {
        while (true)
        {
            m_Active = !m_Active;
            Debug.Log($"{(m_Active ? "Enabling" : "Disabling")} session and camera");
            arSession.enabled = m_Active;
            arCameraManager.gameObject.SetActive(m_Active);
            yield return new WaitForSeconds(1);
        }
    }
}

This works as expected and fails to reproduce the crash on iOS 13.1 (a version reported to reproduce the problem).

Could someone submit a bug report, attach a minimal project that reproduces the crash, and then post the case number here so I can investigate further?

This script produces a crash intermittently running with:

ARFoundation 2.1.0 - preview 3
ARKit XR Plugin 2.1.0 - preview 5
iOS 12.4.1
Unity 2019.1.3f1
XCode 11.2.1
I've tested on a phone running iOS 13.1.3 which doesn't produce a crash.

Same problem here... crashes right after I import ARCore XR Plugin , then if I try to open the project it crashes after 5 seconds...

This issue still persists in Unity 2019.3.0 with preview7 of ARKit
Starting and stopping an ARSession will reliably(!) cause EXC_BAD_ACCESS.

It doesn't seem to present on all devices though.

We have tested on an iPhoneX with no issue, however an IPad5 did crash using the same build. The iPad was running an older version of iOS ~12 and was updated to 13.3.1 which made no difference to the result.

The solution we've currently found is, as above, un-checking multi-threaded rendering, we have also disabled Compute Skinning and Graphic Jobs (however the builds still crashed if multi-threaded was enabled with these disabled)

Please submit a bug with a project that reproduces the issue, and post the case id here.

Good news! I was finally able to reproduce this - the key was using an old device (an iPhone 6+ in my case).

The fix has been published for 3.1.0-preview.8 with backports to 3.0 (verified) and 2.1 (verified) on the way.

Was this page helpful?
0 / 5 - 0 ratings