From 38fb1eee4a9c3e4255af569dd85e6bcec1a42ac3 Mon Sep 17 00:00:00 2001 From: Tobias Barendt Date: Thu, 11 Nov 2021 13:49:49 +0000 Subject: [PATCH 1/3] Cancel callbacks for messaging util::Terminate is referenced counted som when there ar more APIs than messaging active the callbacks will not be canceled until later and still cause a NULL ref due to the FutureData being destroyed now. --- messaging/src/android/cpp/messaging.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/messaging/src/android/cpp/messaging.cc b/messaging/src/android/cpp/messaging.cc index 8f5d257bec..e2919575ed 100644 --- a/messaging/src/android/cpp/messaging.cc +++ b/messaging/src/android/cpp/messaging.cc @@ -704,6 +704,7 @@ void Terminate() { g_firebase_messaging = nullptr; SetListener(nullptr); ReleaseClasses(env); + util::CancelCallbacks(env, kApiIdentifier); util::Terminate(env); FutureData::Destroy(); } From 0a35af322717ecc1b8f84cef0232b3ec00d0611d Mon Sep 17 00:00:00 2001 From: Tobias Barendt Date: Thu, 11 Nov 2021 14:55:00 +0000 Subject: [PATCH 2/3] Cancel callback earlier --- messaging/src/android/cpp/messaging.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messaging/src/android/cpp/messaging.cc b/messaging/src/android/cpp/messaging.cc index e2919575ed..0f3a8e04e2 100644 --- a/messaging/src/android/cpp/messaging.cc +++ b/messaging/src/android/cpp/messaging.cc @@ -677,6 +677,7 @@ void Terminate() { } internal::UnregisterTerminateOnDefaultAppDestroy(); JNIEnv* env = g_app->GetJNIEnv(); + util::CancelCallbacks(env, kApiIdentifier); // Dereference the app. { MutexLock lock(g_app_mutex); @@ -704,7 +705,6 @@ void Terminate() { g_firebase_messaging = nullptr; SetListener(nullptr); ReleaseClasses(env); - util::CancelCallbacks(env, kApiIdentifier); util::Terminate(env); FutureData::Destroy(); } From ba926ec38b1b12c71ae7418c73610a850baa15cd Mon Sep 17 00:00:00 2001 From: Tobias Barendt Date: Fri, 12 Nov 2021 12:39:11 +0000 Subject: [PATCH 3/3] Update readme --- release_build_files/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release_build_files/readme.md b/release_build_files/readme.md index 739dc91794..392024ae91 100644 --- a/release_build_files/readme.md +++ b/release_build_files/readme.md @@ -574,6 +574,8 @@ code. ([#737](https://github.com/firebase/firebase-cpp-sdk/issues/737)) - Messaging (Android): Fixed crash during termination. ([#739](https://github.com/firebase/firebase-cpp-sdk/pull/739)) + ([#745](https://github.com/firebase/firebase-cpp-sdk/pull/745)) + ### 8.7.0 - Changes