Search Unity

  1. Unity Asset Manager is now available in public beta. Try it out now and join the conversation here in the forums.
    Dismiss Notice
  2. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  3. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Crash deactivating a collider when unloading game scene

Discussion in '5.4 Beta' started by kierand, Apr 20, 2016.

  1. kierand

    kierand

    Joined:
    Sep 22, 2014
    Posts:
    32
    This crash seems to be quite random. We see it a few times a day in our studio. It always has the same call stack. It seems to happen mostly when running in editor. When it crashes in editor, it wipes out the editor completely and the crash dump has the following callstack.

    Note that we do not use adative scene loading, only ever one scene loaded at a time via UnityEngine.SceneManagement.SceneManager.LoadSceneAsync.

    The bug has been reported and is case 790176.

    > Unity.exe!sorted_vector<class Collider *,struct std::less<class Collider *>,class std::allocator<class Collider *> >::erase_one<class Collider *>(class Collider * const &) Unknown
    Unity.exe!Collider::Deactivate(enum DeactivateOperation) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    Unity.exe!GameObject::ActivateAwakeRecursively(enum DeactivateOperation) Unknown
    Unity.exe!GameObject::Deactivate(enum DeactivateOperation) Unknown
    Unity.exe!DestroyGameObjectHierarchy(class GameObject &) Unknown
    Unity.exe!DestroyObjectHighLevel(class Object *,bool) Unknown
    Unity.exe!UnloadGameScene(void) Unknown
    Unity.exe!LoadSceneOperation::playerLoadSceneFromThread(void) Unknown
    Unity.exe!LoadSceneOperation::IntegrateMainThread(void) Unknown
    Unity.exe!PreloadManager::UpdatePreloadingSingleStep(enum PreloadManager::UpdatePreloadingFlags,int) Unknown
    Unity.exe!PreloadManager::UpdatePreloading(void) Unknown
    Unity.exe!PlayerLoop(bool,bool,class IHookEvent *) Unknown
    Unity.exe!Application::UpdateScene(bool) Unknown
    Unity.exe!Application::UpdateSceneIfNeeded(void) Unknown
    Unity.exe!Application::TickTimer(void) Unknown
    Unity.exe!FindMonoBinaryToUse(void) Unknown
    Unity.exe!WinMain() Unknown
    Unity.exe!read() Unknown
    kernel32.dll!0000000076fe59bd() Unknown
    ntdll.dll!000000007721a2e1() Unknown
     
  2. kierand

    kierand

    Joined:
    Sep 22, 2014
    Posts:
    32
  3. kierand

    kierand

    Joined:
    Sep 22, 2014
    Posts:
    32
    We have just upgraded to b21 and still have this crash. New callstack:

    b21test1.exe!sorted_vector<class Collider *,struct std::less<class Collider *>,class std::allocator<class Collider *> >::erase_one<class Collider *>(class Collider * const &) Unknown
    > b21test1.exe!Collider::Deactivate(enum DeactivateOperation) Unknown
    b21test1.exe!GameObject::ActivateAwakeRecursivelyInternal(enum DeactivateOperation,class AwakeFromLoadQueue &) Unknown
    b21test1.exe!GameObject::ActivateAwakeRecursively(enum DeactivateOperation) Unknown
    b21test1.exe!GameObject::Deactivate(enum DeactivateOperation) Unknown
    b21test1.exe!DestroyGameObjectHierarchy(class GameObject &) Unknown
    b21test1.exe!DestroyObjectHighLevel(class Object *,bool) Unknown
    b21test1.exe!UnloadGameScene(void) Unknown
    b21test1.exe!LoadSceneOperation::playerLoadSceneFromThread(void) Unknown
    b21test1.exe!LoadSceneOperation::IntegrateMainThread(void) Unknown
    b21test1.exe!PreloadManager::UpdatePreloadingSingleStep(enum PreloadManager::UpdatePreloadingFlags,int) Unknown
    b21test1.exe!PreloadManager::UpdatePreloading(void) Unknown
    b21test1.exe!PlayerLoop(bool,bool,class IHookEvent *) Unknown
    b21test1.exe!GfxDisplayGLES::GfxDisplayGLES(void) Unknown
    b21test1.exe!PlayerMainWndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64) Unknown
    b21test1.exe!PlayerWinMain(struct HINSTANCE__ *,struct HINSTANCE__ *,char *,int) Unknown
    b21test1.exe!memcpy_s() Unknown
    kernel32.dll!00000000770659bd() Unknown
    ntdll.dll!000000007729a2e1() Unknown
     
  4. Alan-Liu

    Alan-Liu

    Joined:
    Jan 23, 2014
    Posts:
    390
    I have the same issue. My case is due to call Physics.IgnoreCollision(collider0, collider1) when collider1.gameObject.activeInHierarchy is FALSE.
     
  5. kierand

    kierand

    Joined:
    Sep 22, 2014
    Posts:
    32
    Thanks for the reply Alan!

    There is a case where we may be doing that. I will guard against it and see if it stops the crash.
     
  6. kierand

    kierand

    Joined:
    Sep 22, 2014
    Posts:
    32
    Wrapping IgnoreCollision to check that both colliders are enabled in the hierarchy appears to have fixed this. Many thanks once again Alan!