firebase-ios-sdk icon indicating copy to clipboard operation
firebase-ios-sdk copied to clipboard

FIRMessagingTokenFetchOperation went isFinished=YES without being started by the queue it is in

Open p16r opened this issue 1 year ago • 5 comments

Description

Title is the error I get in the console when I try to log in in my app. I do not have the steps to replicate this 100%, but the most reliable way I have been able to replicate this is when updating my app from an older build (e.g. from TestFlight) to a newer one.

Reproducing the issue


//  This function causes a crash when FirebaseApp.app()?.delete is called.
private func setupFirebase(completion: @escaping () -> Void) {
    let filePath = /* dynamic file path based on scheme */
    let fileopts = FirebaseOptions(contentsOfFile: filePath)!

    if FirebaseApp.app() != nil {
        FirebaseApp.app()?.delete { _ in
            DispatchQueue.main.async {
                FirebaseApp.configure(options: fileopts)
                completion()
            }
        }
    } else {
        FirebaseApp.configure(options: fileopts)
        completion()
    }
}

Firebase SDK Version

8.15.0

Xcode Version

13.2.1

Installation Method

Swift Package Manager

Firebase Product(s)

Messaging

Targeted Platforms

iOS

Relevant Log Output

2022-11-10 20:41:43.007368+0530 FL3XX Crew[26026:6210149] 8.15.0 - [Firebase/Installations][I-FIS002001] -[FIRInstallationsIDController installationWithValidAuthTokenForcingRefresh:0], appName: __FIRAPP_DEFAULT
2022-11-10 20:41:43.007590+0530 FL3XX Crew[26026:6210149] 8.15.0 - [Firebase/Installations][I-FIS002000] -[FIRInstallationsIDController createGetInstallationItemPromise], appName: __FIRAPP_DEFAULT
2022-11-10 20:41:43.010022+0530 FL3XX Crew[26026:6210149] 8.15.0 - [Firebase/Messaging][I-FCM040000] Register request to https://fcmtoken.googleapis.com/register content: X-osv=15.1&device=5488829666173685770&X-scope=*&plat=2&app=com.fl3xx.FL3XX-Crew&app_ver=2.10.18&X-cliv=fiid-8.15.0&sender=254709422554&X-subtype=254709422554&appid=flDI2kpMJUPir9FrFgYHGb&apns_token=s_c98ea63054cc629fbd159eb8802e5edbdb6e377e90d83c96c021757aad9ae27d&gmp_app_id=1:254709422554:ios:fcb5d2224a9896447108e3
2022-11-10 20:41:43.035170+0530 FL3XX Crew[26026:6211053] 8.15.0 - [Firebase/Messaging][I-FCM034001] Token fetch successful, token: flDI2kpMJUPir9FrFgYHGb:APA91bEFTI9wwnDypNjqG6gXYKC6kq7mQcKy1QVtRc1rhr2lvA0Oj3d2biN9AQbXzbykXtj1mnd1c-IBKDwE5dsDUOTYV8PwlRhbGm68yXWayBHwQx5ZlBkggVjkFPes0cps2Wb392sW, authorizedEntity: 254709422554, scope:*
2022-11-10 20:41:45.933263+0530 FL3XX Crew[26026:6211053] 8.15.0 - [Firebase/Crashlytics][I-CLS000000] Cannot instantiate more than one instance of Crashlytics.
2022-11-10 20:41:45.934792+0530 FL3XX Crew[26026:6211053] 8.15.0 - [Firebase/Crashlytics][I-CLS000000] Cannot instantiate more than one instance of Crashlytics.
2022-11-10 20:41:45.936848+0530 FL3XX Crew[26026:6211053] 8.15.0 - [Firebase/Core][I-COR000006] Deleting app named __FIRAPP_DEFAULT
2022-11-10 20:41:45.937006+0530 FL3XX Crew[26026:6211053] 8.15.0 - [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `FirebaseApp.configure()` to your application initialization. This can be done in in the App Delegate's application(_:didFinishLaunchingWithOptions:)` (or the `@main` struct's initializer in SwiftUI). Read more: https://goo.gl/ctyzm8.
2022-11-10 20:41:45.989793+0530 FL3XX Crew[26026:6209977] *** FIRMessagingTokenFetchOperation 0x123d9e110 went isFinished=YES without being started by the queue it is in
2022-11-10 20:41:45.989838+0530 FL3XX Crew[26026:6209977] *** FIRMessagingTokenFetchOperation 0x1258b32a0 went isFinished=YES without being started by the queue it is in
2022-11-10 20:41:45.989867+0530 FL3XX Crew[26026:6209977] *** FIRMessagingTokenFetchOperation 0x125878f20 went isFinished=YES without being started by the queue it is in
2022-11-10 20:41:45.989949+0530 FL3XX Crew[26026:6209977] *** FIRMessagingTokenFetchOperation 0x112556e20 went isFinished=YES without being started by the queue it is in
2022-11-10 20:41:45.990113+0530 FL3XX Crew[26026:6209977] *** FIRMessagingTokenFetchOperation 0x122049a50 went isFinished=YES without being started by the queue it is in
2022-11-10 20:41:45.990213+0530 FL3XX Crew[26026:6209977] *** FIRMessagingTokenFetchOperation 0x1259e7c20 went isFinished=YES without being started by the queue it is in
2022-11-10 20:41:45.992591+0530 FL3XX Crew[26026:6209977] *** FIRMessagingTokenFetchOperation 0x1259f25e0 went isFinished=YES without being started by the queue it is in

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet

{"object":{"pins":[{"package":"abseil","repositoryURL":"https://github.com/firebase/abseil-cpp-SwiftPM.git","state":{"branch":null,"revision":"583de9bd60f66b40e78d08599cc92036c2e7e4e1","version":"0.20220203.2"}},{"package":"Alamofire","repositoryURL":"https://github.com/Alamofire/Alamofire.git","state":{"branch":null,"revision":"8dd85aee02e39dd280c75eef88ffdb86eed4b07b","version":"5.6.2"}},{"package":"AppAuth","repositoryURL":"https://github.com/openid/AppAuth-iOS.git","state":{"branch":null,"revision":"3d36a58a2b736f7bc499453e996a704929b25080","version":"1.6.0"}},{"package":"BetterSheet","repositoryURL":"https://github.com/egeniq/BetterSheet.git","state":{"branch":null,"revision":"3755b61311812e6751029f1bff47640f3779adc7","version":"1.0.0"}},{"package":"BonMot","repositoryURL":"https://github.com/Rightpoint/BonMot.git","state":{"branch":null,"revision":"2df34a28c97e2413c44a7be70b6dd15adf783baf","version":"6.1.1"}},{"package":"BoringSSL-GRPC","repositoryURL":"https://github.com/firebase/boringssl-SwiftPM.git","state":{"branch":null,"revision":"dd3eda2b05a3f459fc3073695ad1b28659066eab","version":"0.9.1"}},{"package":"CocoaLumberjack","repositoryURL":"https://github.com/CocoaLumberjack/CocoaLumberjack.git","state":{"branch":null,"revision":"0188d31089b5881a269e01777be74c7316924346","version":"3.8.0"}},{"package":"Defaults","repositoryURL":"https://github.com/sindresorhus/Defaults.git","state":{"branch":null,"revision":"981ccb0a01c54abbe3c12ccb8226108527bbf115","version":"6.3.0"}},{"package":"Firebase","repositoryURL":"https://github.com/firebase/firebase-ios-sdk.git","state":{"branch":null,"revision":"111d8d6ad1a1afd6c8e9561d26e55ab1e74fcb42","version":"8.15.0"}},{"package":"FXKit","repositoryURL":"[email protected]:FL3XX/FXKit-ios.git","state":{"branch":"qatar-exec","revision":"085ca2c01d01362128731fd6a3f68eadab5d2f5e","version":null}},{"package":"FXLogin","repositoryURL":"[email protected]:FL3XX/FXLogin-ios.git","state":{"branch":"qatar-exec","revision":"b23f642c5c796cf914f4fc34348b1d674b98df05","version":null}},{"package":"GoogleAppMeasurement","repositoryURL":"https://github.com/google/GoogleAppMeasurement.git","state":{"branch":null,"revision":"ef819db8c58657a6ca367322e73f3b6322afe0a2","version":"8.15.0"}},{"package":"GoogleDataTransport","repositoryURL":"https://github.com/google/GoogleDataTransport.git","state":{"branch":null,"revision":"5056b15c5acbb90cd214fe4d6138bdf5a740e5a8","version":"9.2.0"}},{"package":"GoogleSignIn","repositoryURL":"https://github.com/google/GoogleSignIn-iOS.git","state":{"branch":null,"revision":"9c9b36af86a4dd3da16048a36cf37351e63ccfe1","version":"6.2.4"}},{"package":"GoogleUtilities","repositoryURL":"https://github.com/google/GoogleUtilities.git","state":{"branch":null,"revision":"68ea347bdb1a69e2d2ae2e25cd085b6ef92f64cb","version":"7.9.0"}},{"package":"gRPC","repositoryURL":"https://github.com/grpc/grpc-ios.git","state":{"branch":null,"revision":"8440b914756e0d26d4f4d054a1c1581daedfc5b6","version":"1.44.3-grpc"}},{"package":"GTMSessionFetcher","repositoryURL":"https://github.com/google/gtm-session-fetcher.git","state":{"branch":null,"revision":"4e9bbf2808b8fee444e84a48f5f3c12641987d3e","version":"1.7.2"}},{"package":"GTMAppAuth","repositoryURL":"https://github.com/google/GTMAppAuth.git","state":{"branch":null,"revision":"6dee0cde8a1b223737a5159e55e6b4ec16bbbdd9","version":"1.3.1"}},{"package":"IQKeyboardManagerSwift","repositoryURL":"https://github.com/hackiftekhar/IQKeyboardManager.git","state":{"branch":null,"revision":"474f849accae40fe61b5302d9b057dd48ee073ba","version":"6.5.9"}},{"package":"JTAppleCalendar","repositoryURL":"https://github.com/patchthecode/JTAppleCalendar.git","state":{"branch":null,"revision":"89bc6f1c0426b3bd2856409ec600333a7d087e1b","version":"8.0.4"}},{"package":"KeychainSwift","repositoryURL":"https://github.com/evgenyneu/keychain-swift.git","state":{"branch":null,"revision":"96fb84f45a96630e7583903bd7e08cf095c7a7ef","version":"19.0.0"}},{"package":"leveldb","repositoryURL":"https://github.com/firebase/leveldb.git","state":{"branch":null,"revision":"0706abcc6b0bd9cedfbb015ba840e4a780b5159b","version":"1.22.2"}},{"package":"Logger","repositoryURL":"https://github.com/f-meloni/Logger","state":{"branch":null,"revision":"53c3ecca5abe8cf46697e33901ee774236d94cce","version":"0.2.3"}},{"package":"Lottie","repositoryURL":"https://github.com/airbnb/lottie-ios.git","state":{"branch":null,"revision":"b4bd0604ded9574807f41b4004b57dd1226a30a4","version":"3.5.0"}},{"package":"MagazineLayout","repositoryURL":"https://github.com/airbnb/MagazineLayout","state":{"branch":null,"revision":"8cb3e72038b056317c8402d9ad52fb1c7dbd68db","version":"1.6.11"}},{"package":"MSAL","repositoryURL":"https://github.com/AzureAD/microsoft-authentication-library-for-objc","state":{"branch":null,"revision":"31a806298d6aa71b40504e7ebda6d6a8923f0ebf","version":"1.2.5"}},{"package":"Moya","repositoryURL":"https://github.com/Moya/Moya.git","state":{"branch":null,"revision":"b3e5a233e0d85fd4d69f561c80988590859c7dee","version":"14.0.0"}},{"package":"nanopb","repositoryURL":"https://github.com/firebase/nanopb.git","state":{"branch":null,"revision":"7ee9ef9f627d85cbe1b8c4f49a3ed26eed216c77","version":"2.30908.0"}},{"package":"Nimble","repositoryURL":"https://github.com/Quick/Nimble.git","state":{"branch":null,"revision":"7a46a5fc86cb917f69e3daf79fcb045283d8f008","version":"8.1.2"}},{"package":"NSObject-Rx","repositoryURL":"https://github.com/RxSwiftCommunity/NSObject-Rx","state":{"branch":null,"revision":"3dc30072b740ec35a3949ac8a8217f590a7c59b7","version":"5.1.1"}},{"package":"Nuke","repositoryURL":"https://github.com/kean/Nuke.git","state":{"branch":null,"revision":"7f73ceaeacd5df75a7994cd82e165ad9ff1815db","version":"9.6.1"}},{"package":"PackageConfig","repositoryURL":"https://github.com/shibapm/PackageConfig.git","state":{"branch":null,"revision":"bf90dc69fa0792894b08a0b74cf34029694ae486","version":"0.13.0"}},{"package":"PanModal","repositoryURL":"https://github.com/jordanpichler/PanModal.git","state":{"branch":null,"revision":"8f38a7c4490dccb77eba62f6824af1833be7d845","version":"1.2.8"}},{"package":"Promises","repositoryURL":"https://github.com/google/promises.git","state":{"branch":null,"revision":"3e4e743631e86c8c70dbc6efdc7beaa6e90fd3bb","version":"2.1.1"}},{"package":"Quick","repositoryURL":"https://github.com/Quick/Quick.git","state":{"branch":null,"revision":"09b3becb37cb2163919a3842a4c5fa6ec7130792","version":"2.2.1"}},{"package":"QuickLayout","repositoryURL":"https://github.com/huri000/QuickLayout","state":{"branch":null,"revision":"6be62decbe508d8fc8f9dbafc349d05bab03c38b","version":"3.0.1"}},{"package":"Reachability","repositoryURL":"https://github.com/ashleymills/Reachability.swift.git","state":{"branch":null,"revision":"c01bbdf2d633cf049ae1ed1a68a2020a8bda32e2","version":"5.1.0"}},{"package":"ReactiveSwift","repositoryURL":"https://github.com/Moya/ReactiveSwift.git","state":{"branch":null,"revision":"f195d82bb30e412e70446e2b4a77e1b514099e88","version":"6.1.0"}},{"package":"Realm","repositoryURL":"https://github.com/realm/realm-cocoa.git","state":{"branch":null,"revision":"d6f68b8f613dca3b13430da5e0be5d27b500f486","version":"10.7.7"}},{"package":"RealmDatabase","repositoryURL":"https://github.com/realm/realm-core","state":{"branch":null,"revision":"018adb3469c2882904febca251778129ef4a9b70","version":"10.7.2"}},{"package":"Rocket","repositoryURL":"https://github.com/shibapm/Rocket","state":{"branch":null,"revision":"f75c9736733b489a3456b4f3a47cf13adb99f197","version":"0.9.2"}},{"package":"RxDataSources","repositoryURL":"https://github.com/RxSwiftCommunity/RxDataSources","state":{"branch":null,"revision":"a18cee01c9ee55f04d0c7eb15c77a96c3648c88e","version":"4.0.1"}},{"package":"RxExpect","repositoryURL":"https://github.com/devxoul/RxExpect.git","state":{"branch":null,"revision":"c3a3bb3d46ee831582c6619ecc48cda1cdbff890","version":"2.0.0"}},{"package":"RxGesture","repositoryURL":"https://github.com/RxSwiftCommunity/RxGesture","state":{"branch":null,"revision":"867f176b6695829e350fafc00b5a849bb46a1857","version":"3.0.3"}},{"package":"RxOptional","repositoryURL":"https://github.com/RxSwiftCommunity/RxOptional.git","state":{"branch":null,"revision":"98a1895918e9ba9735a15207dd9c7120e9f51843","version":"4.1.0"}},{"package":"RxSwift","repositoryURL":"https://github.com/ReactiveX/RxSwift.git","state":{"branch":null,"revision":"cec68169a048a079f461ba203fe85636548d7a89","version":"5.1.3"}},{"package":"RxSwiftExt","repositoryURL":"https://github.com/RxSwiftCommunity/RxSwiftExt","state":{"branch":null,"revision":"9620cd55a58c1cf3370375140c45379c40049f55","version":"5.2.0"}},{"package":"RxViewController","repositoryURL":"https://github.com/devxoul/RxViewController","state":{"branch":null,"revision":"2974fc02742497ee26ba3622ced199818d580444","version":"1.0.0"}},{"package":"Signals","repositoryURL":"https://github.com/blinkmeoff/Signals.git","state":{"branch":"master","revision":"3f7fb488a24d3494d451f2301540e14f9f8a50ee","version":null}},{"package":"Siren","repositoryURL":"https://github.com/ArtSabintsev/Siren.git","state":{"branch":null,"revision":"9173fc529731705a737658b2801ccbc19dd385c8","version":"5.8.1"}},{"package":"SkeletonView","repositoryURL":"https://github.com/Juanpe/SkeletonView.git","state":{"branch":null,"revision":"b640c1d8eee79c3a5ad6e0ae1afd2ae0fea30423","version":"1.29.3"}},{"package":"SkyFloatingLabelTextField","repositoryURL":"https://github.com/Skyscanner/SkyFloatingLabelTextField.git","state":{"branch":null,"revision":"a0750ebbc7311f3b3debf99c5e59338e854afa59","version":"4.0.0"}},{"package":"SnapKit","repositoryURL":"https://github.com/SnapKit/SnapKit.git","state":{"branch":null,"revision":"f222cbdf325885926566172f6f5f06af95473158","version":"5.6.0"}},{"package":"swift-log","repositoryURL":"https://github.com/apple/swift-log.git","state":{"branch":null,"revision":"6fe203dc33195667ce1759bf0182975e4653ba1c","version":"1.4.4"}},{"package":"SwiftProtobuf","repositoryURL":"https://github.com/apple/swift-protobuf.git","state":{"branch":null,"revision":"88c7d15e1242fdb6ecbafbc7926426a19be1e98a","version":"1.20.2"}},{"package":"SwiftDate","repositoryURL":"https://github.com/malcommac/SwiftDate.git","state":{"branch":null,"revision":"6190d0cefff3013e77ed567e6b074f324e5c5bf5","version":"6.3.1"}},{"package":"SwiftEntryKit","repositoryURL":"https://github.com/jordanpichler/SwiftEntryKit.git","state":{"branch":null,"revision":"a4f66016562d6dc2253e3f72e6af9dfa64b34ccb","version":"1.2.7"}},{"package":"SwifterSwift","repositoryURL":"https://github.com/SwifterSwift/SwifterSwift.git","state":{"branch":null,"revision":"933f27d8e7fa0bf8200a5d6235e0de383b801126","version":"5.3.0"}},{"package":"SwiftMessages","repositoryURL":"https://github.com/SwiftKickMobile/SwiftMessages","state":{"branch":null,"revision":"b29dd21090b708aa0ae9ecbaf6e2d0487028dc3f","version":"9.0.6"}},{"package":"SwiftShell","repositoryURL":"https://github.com/kareman/SwiftShell","state":{"branch":null,"revision":"beebe43c986d89ea5359ac3adcb42dac94e5e08a","version":"4.1.2"}},{"package":"TOCropViewController","repositoryURL":"https://github.com/TimOliver/TOCropViewController.git","state":{"branch":null,"revision":"d0470491f56e734731bbf77991944c0dfdee3e0e","version":"2.6.1"}},{"package":"Yams","repositoryURL":"https://github.com/jpsim/Yams","state":{"branch":null,"revision":"c947a306d2e80ecb2c0859047b35c73b8e1ca27f","version":"2.0.0"}}]},"version":1}

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet

Replace this line with the contents of your Podfile.lock!

p16r avatar Nov 10 '22 16:11 p16r

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

google-oss-bot avatar Nov 10 '22 16:11 google-oss-bot

FYI I cannot update Xcode or Firebase version till 2023 so that is not an option for now.

p16r avatar Nov 10 '22 16:11 p16r

Elsewhere on the internet where Operation went isFinished=YES without being started by the queue it is in:

  • https://github.com/robertmryan/AFHTTPSessionOperation/issues/7
  • https://stackoverflow.com/questions/42789556/what-do-i-do-with-this-exception-tripped-shortly-after-cancelling-all-operations
  • https://stackoverflow.com/questions/48137896/operation-went-isfinished-yes-without-being-started-by-the-queue-it-is-in

p16r avatar Nov 10 '22 16:11 p16r

Thanks for reporting, @p16r. I tried to reproduce the issue but I wasn't able to get the same error. Could you clarify on what you mean by "I have been able to replicate this is when updating my app from an older build (e.g. from TestFlight) to a newer one."? Does it mean you're updating your app itself or the SDK version? Also, did you make any changes in your code that might be the possible cause the issue?

rizafran avatar Nov 11 '22 19:11 rizafran

Thanks for helping me with this! I mean the most reliable method to replicate this crash is by updating the app from a previous build e.g. 2.10.4 build 299 to 2.10.4 build 300. i.e. I download 2.10.4-299 from TestFlight and use it on my phone, then download 2.10.4-300, and when I first run the new build, it will crash. But next run onwards it won't. I'm not changing any of the Firebase-related code in between builds. Neither is the SDK version changing between builds.

p16r avatar Nov 14 '22 10:11 p16r

Hey, just wanted to give an update on this issue. I was able to avoid this crash by replacing existing completion-based API calls with async/await calls. Thanks for helping me out with this issue!

p16r avatar Jan 02 '23 05:01 p16r