Search Unity

Unity sometimes is crashing while using AdMob plugin

Discussion in 'Editor & General Support' started by thiagolrosa, Feb 28, 2020.

  1. thiagolrosa

    thiagolrosa

    Joined:
    Feb 22, 2017
    Posts:
    60
    We are having a lot of crashes reported on Firebase Crashlytics and on Android Vitals (around 10% of our users). As it is not reproducible on our test environment, it took us several weeks to finally find out what was causing all these errors.

    When we removed and stopped using the Google Mobile Ads plugin, absolutely all the crashes were gone. To be sure, we added it again on a new release and just a few minutes after the update was live the crashes started to happen again.

    I also opened a ticket on the plugin github, so they can also investigate the issue:
    https://github.com/googleads/googleads-mobile-unity/issues/1171

    There are a few different stack traces causing the crashes:

    CRASH 1

    Code (CSharp):
    1. il2cpp::vm::Method::GetParamCount(MethodInfo const*)
    2. scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool)
    3. ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool)
    4. UnityJavaProxy_invoke(_JNIEnv*, _jobject*, long long, _jstring*, _jobjectArray*)
    CRASH 2

    Code (CSharp):
    1. std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
    2. std::_Rb_tree_iterator<DelayedCallManager::Callback> std::_Rb_tree<DelayedCallManager::Callback, DelayedCallManager::Callback, std::_Identity<DelayedCallManager::Callback>, std::less<DelayedCallManager::Callback>, memory_pool<DelayedCallManager::Callback> >::_M_insert_<DelayedCallManager::Callback const&>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, DelayedCallManager::Callback const&)
    3. CallDelayed(CallObjectState (*)(Object*, void*), PPtr<Object>, float, void*, float, CallObjectState (*)(void*), DelayedCallManager::DelayedCallMode)
    4. Coroutine::HandleIEnumerableCurrentReturnValue(ScriptingObjectPtr)
    5. Coroutine::ProcessCoroutineCurrent()
    6. Coroutine::Run(bool*)
    7. MonoBehaviour::TryCreateAndRunCoroutine(ScriptingObjectPtr, ScriptingMethodPtr, Coroutine**)
    8. MonoBehaviour::StartCoroutineManaged2(ScriptingObjectPtr)
    9. MonoBehaviour_CUSTOM_StartCoroutineManaged2(ScriptingBackendNativeObjectPtrOpaque*, ScriptingBackendNativeObjectPtrOpaque*)
    10. EventHandler_1_Invoke_mBF3979EE17B68658C4C1AB3A8D64B24F263E3B98_gshared
    11. EventHandler_1_Invoke_mBF3979EE17B68658C4C1AB3A8D64B24F263E3B98_gshared
    12. RuntimeInvoker_TrueVoid_t22962CB4C05B1D89B55A6E1139F0E87A90987017_RuntimeObject(void (*)(), MethodInfo const*, void*, void**)
    13. il2cpp::vm::Runtime::Invoke(MethodInfo const*, void*, void**, Il2CppException**)
    CRASH 3

    Code (CSharp):
    1. std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)
    2. std::_Rb_tree<DelayedCallManager::Callback, DelayedCallManager::Callback, std::_Identity<DelayedCallManager::Callback>, std::less<DelayedCallManager::Callback>, memory_pool<DelayedCallManager::Callback> >::erase[abi:cxx11](std::_Rb_tree_const_iterator<DelayedCallManager::Callback>)
    3. DelayedCallManager::Update(int)
    4. ExecutePlayerLoop(NativePlayerLoopSystem*)
    5. ExecutePlayerLoop(NativePlayerLoopSystem*)
    6. PlayerLoop()
    7. UnityPlayerLoop()
    8. nativeRender(_JNIEnv*, _jobject*)