Skip to content

🐛 [cloud_firestore] FIRESTORE INTERNAL ASSERTION FAILED #6927

Description

@Tom3652

Bug report

Describe the bug
The bug cause a crash after running a Firestore transaction.
It happened only twice in one week with a daily usage on my physical IOS devices.
It's the exact same issue as mentioned #1216

Expected behavior

The application should not crash.

Logs

Taken from crashlytics :

Fatal Exception: NSInternalInconsistencyException
FIRESTORE INTERNAL ASSERTION FAILED: A transaction object cannot be used after its update callback has been invoked. (expected !committed_)

Fatal Exception: NSInternalInconsistencyException
0  CoreFoundation                 0x18816e708 __exceptionPreprocess
1  libobjc.A.dylib                0x19cc787a8 objc_exception_throw
2  CoreFoundation                 0x1880703b8 -[CFPrefsSearchListSource addManagedSourceForIdentifier:user:]
3  Foundation                     0x18949981c -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:]
4  FirebaseFirestore              0x107af2b50 (Missing)
5  FirebaseFirestore              0x107af2628 (Missing)
6  FirebaseFirestore              0x107b3e69c (Missing)
7  FirebaseFirestore              0x107b3e73c (Missing)
8  FirebaseFirestore              0x107bc57f4 (Missing)
9  FirebaseFirestore              0x107bc5584 (Missing)
10 FirebaseFirestore              0x107b29a18 (Missing)
11 FirebaseFirestore              0x107b29bf8 (Missing)
12 Runner                         0x105350b00 __66-[FLTFirebaseFirestorePlugin transactionGet:withMethodCallResult:]_block_invoke + 348 (FLTFirebaseFirestorePlugin.m:348)
13 libdispatch.dylib              0x187d59a84 _dispatch_call_block_and_release
14 libdispatch.dylib              0x187d5b81c _dispatch_client_callout
15 libdispatch.dylib              0x187d5e968 _dispatch_queue_override_invoke
16 libdispatch.dylib              0x187d6cfe0 _dispatch_root_queue_drain
17 libdispatch.dylib              0x187d6d7d8 _dispatch_worker_thread2
18 libsystem_pthread.dylib        0x1d3dde768 _pthread_wqthread
19 libsystem_pthread.dylib        0x1d3de574c start_wqthread

Flutter doctor

Run flutter doctor and paste the output below:

Click To Expand
✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.2 20G95 darwin-x64, locale fr-FR)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[!] Android Studio (version 2020.3)
    ✗ Unable to find bundled Java version.
[✓] Connected device (2 available)

! Doctor found issues in 1 category.

Flutter dependencies

Run flutter pub deps -- --style=compact and paste the output below:

Click To Expand
Dart SDK 2.13.4
Flutter SDK 2.2.3
myappname 1.0.0+1

dependencies:
- app_tracking_transparency 2.0.1 [flutter]
- badges 2.0.1 [flutter]
- better_player 0.0.73 [flutter cupertino_icons wakelock pedantic meta flutter_widget_from_html_core visibility_detector path_provider collection xml]
- cached_network_image 3.1.0 [flutter flutter_cache_manager octo_image cached_network_image_platform_interface cached_network_image_web]
- camera 0.9.2+1 [camera_platform_interface flutter pedantic quiver flutter_plugin_android_lifecycle]
- clipboard 0.1.3 [flutter]
- cloud_firestore 2.5.1 [cloud_firestore_platform_interface cloud_firestore_web collection firebase_core firebase_core_platform_interface flutter meta]
- cloud_functions 3.0.2 [cloud_functions_platform_interface cloud_functions_web firebase_core firebase_core_platform_interface flutter]
- connectivity 3.0.6 [flutter meta connectivity_platform_interface connectivity_macos connectivity_for_web]
- country_code_picker 2.0.2 [flutter modal_bottom_sheet collection universal_platform]
- crypto 3.0.1 [collection typed_data]
- cupertino_back_gesture 0.1.0 [flutter]
- cupertino_icons 1.0.3
- extended_image 4.1.0 [extended_image_library flutter meta]
- extended_tabs 2.3.0 [flutter]
- firebase_analytics 8.3.1 [firebase_analytics_platform_interface firebase_analytics_web firebase_core flutter meta]
- firebase_app_check 0.0.2+1 [firebase_app_check_platform_interface firebase_app_check_web firebase_core firebase_core_platform_interface flutter]
- firebase_auth 3.1.0 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
- firebase_core 1.6.0 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_crashlytics 2.2.1 [firebase_core firebase_core_platform_interface firebase_crashlytics_platform_interface flutter stack_trace]
- firebase_database 7.2.1 [firebase_core flutter]
- firebase_dynamic_links 2.0.9 [firebase_core flutter]
- firebase_in_app_messaging 0.5.0+9 [firebase_core flutter meta]
- firebase_messaging 10.0.6 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta]
- firebase_performance 0.7.0+9 [firebase_core firebase_core_platform_interface firebase_performance_platform_interface flutter]
- firebase_storage 10.0.3 [firebase_core firebase_core_platform_interface firebase_storage_platform_interface firebase_storage_web flutter]
- flutter 0.0.0 [characters collection meta typed_data vector_math sky_engine]
- flutter_app_badger 1.2.0 [flutter]
- flutter_arc_text 0.5.0 [characters flutter]
- flutter_cache_manager 3.1.2 [clock collection file flutter http path path_provider pedantic rxdart sqflite uuid]
- flutter_contacts 1.1.0+3 [flutter]
- flutter_facebook_auth 3.5.1 [flutter flutter_facebook_auth_platform_interface flutter_facebook_auth_web]
- flutter_ffmpeg 0.4.2 [flutter]
- flutter_image_compress 1.1.0 [flutter]
- flutter_local_notifications 8.1.1+2 [flutter flutter_local_notifications_platform_interface platform timezone]
- flutter_localizations 0.0.0 [flutter intl characters clock collection meta path typed_data vector_math]
- flutter_sound_lite 8.3.10 [path_provider recase uuid provider path synchronized logger flutter flutter_sound_platform_interface flutter_sound_web]
- flutter_staggered_grid_view 0.4.0 [flutter]
- flutter_svg 0.22.0 [flutter meta path_drawing vector_math xml]
- fluttertoast 8.0.8 [flutter flutter_web_plugins]
- geocoding 2.0.1 [flutter geocoding_platform_interface]
- geolocator 7.6.0 [flutter geolocator_platform_interface geolocator_android geolocator_apple geolocator_web]
- google_maps_flutter 2.0.6 [flutter flutter_plugin_android_lifecycle google_maps_flutter_platform_interface]
- google_mobile_ads 0.13.4 [meta flutter]
- google_sign_in 5.0.7 [flutter google_sign_in_platform_interface google_sign_in_web meta]
- image_editor 1.0.0 [flutter]
- in_app_review 2.0.2 [flutter in_app_review_platform_interface]
- intl 0.17.0 [clock path]
- light_compressor 1.1.1 [flutter]
- modal_bottom_sheet 2.0.0 [flutter]
- path 1.8.0
- path_provider 2.0.2 [flutter path_provider_platform_interface path_provider_macos path_provider_linux path_provider_windows]
- permission_handler 8.1.4+2 [flutter meta permission_handler_platform_interface]
- photo_manager 1.3.1 [flutter]
- progressive_image 2.0.0 [flutter]
- provider 6.0.0 [collection flutter nested]
- pull_to_refresh 2.0.0 [flutter]
- rive 0.7.28 [collection flutter graphs http meta]
- scroll_to_index 2.0.0 [flutter]
- scrollable_positioned_list 0.2.0-nullsafety.0 [flutter collection]
- share_plus 2.1.4 [meta mime flutter share_plus_platform_interface share_plus_linux share_plus_macos share_plus_windows share_plus_web]
- shared_preferences 2.0.7 [flutter meta shared_preferences_linux shared_preferences_macos shared_preferences_platform_interface shared_preferences_web shared_preferences_windows]
- sign_in_with_apple 3.0.0 [flutter meta]
- sliver_tools 0.2.5 [flutter]
- translator 0.1.7 [http]
- url_launcher 6.0.9 [flutter meta url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_web url_launcher_windows]
- uuid 3.0.4 [crypto]
- video_player 2.1.14 [flutter meta video_player_platform_interface video_player_web]
- video_thumbnail 0.4.3 [flutter]
- visibility_detector 0.2.0 [flutter]
- volume_watcher 2.0.1 [flutter]
- webview_flutter 2.0.12 [flutter]

dev dependencies:
- flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters charcode collection matcher meta source_span stream_channel string_scanner term_glyph typed_data]

transitive dependencies:
- async 2.6.1 [meta collection]
- boolean_selector 2.1.0 [source_span string_scanner]
- cached_network_image_platform_interface 1.0.0 [flutter flutter_cache_manager]
- cached_network_image_web 1.0.1 [flutter flutter_cache_manager cached_network_image_platform_interface]
- camera_platform_interface 2.1.0 [cross_file flutter meta plugin_platform_interface stream_transform]
- characters 1.1.0
- charcode 1.2.0
- clock 1.1.0
- cloud_firestore_platform_interface 5.4.1 [collection firebase_core flutter meta plugin_platform_interface]
- cloud_firestore_web 2.4.1 [cloud_firestore_platform_interface collection firebase_core firebase_core_web flutter flutter_web_plugins js]
- cloud_functions_platform_interface 5.0.10 [firebase_core flutter meta plugin_platform_interface]
- cloud_functions_web 4.0.12 [cloud_functions_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- collection 1.15.0
- connectivity_for_web 0.4.0+1 [connectivity_platform_interface flutter_web_plugins flutter]
- connectivity_macos 0.2.1+2 [flutter connectivity_platform_interface]
- connectivity_platform_interface 2.0.1 [flutter meta plugin_platform_interface]
- cross_file 0.3.1+4 [flutter meta]
- csslib 0.17.0 [source_span]
- extended_image_library 3.1.0 [crypto flutter http_client_helper path path_provider]
- fake_async 1.2.0 [clock collection]
- ffi 1.1.2
- file 6.1.2 [meta path]
- firebase 9.0.1 [http http_parser js]
- firebase_analytics_platform_interface 2.0.1 [flutter meta]
- firebase_analytics_web 0.3.0+1 [firebase firebase_analytics_platform_interface flutter flutter_web_plugins meta]
- firebase_app_check_platform_interface 0.0.1+5 [firebase_core flutter meta plugin_platform_interface]
- firebase_app_check_web 0.0.1+5 [firebase_app_check_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- firebase_auth_platform_interface 6.1.0 [firebase_core flutter meta plugin_platform_interface]
- firebase_auth_web 3.1.0 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins http_parser intl js meta]
- firebase_core_platform_interface 4.0.1 [collection flutter meta plugin_platform_interface]
- firebase_core_web 1.1.0 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- firebase_crashlytics_platform_interface 3.1.2 [collection firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_platform_interface 3.0.5 [firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_web 2.0.5 [firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta]
- firebase_performance_platform_interface 0.0.1+1 [firebase_core flutter plugin_platform_interface]
- firebase_storage_platform_interface 4.0.2 [collection firebase_core flutter meta plugin_platform_interface]
- firebase_storage_web 3.0.2 [async firebase_core firebase_core_web firebase_storage_platform_interface flutter flutter_web_plugins http js meta]
- flutter_blurhash 0.6.0 [flutter meta pedantic]
- flutter_facebook_auth_platform_interface 2.7.0 [flutter plugin_platform_interface]
- flutter_facebook_auth_web 2.6.0+2 [flutter flutter_web_plugins js flutter_facebook_auth_platform_interface]
- flutter_local_notifications_platform_interface 4.0.1 [flutter plugin_platform_interface]
- flutter_plugin_android_lifecycle 2.0.2 [flutter]
- flutter_sound_platform_interface 8.3.10 [flutter meta plugin_platform_interface logger]
- flutter_sound_web 8.3.10 [flutter_sound_platform_interface flutter logger flutter_web_plugins meta js]
- flutter_web_plugins 0.0.0 [flutter js characters collection meta typed_data vector_math]
- flutter_widget_from_html_core 0.6.2 [csslib flutter html]
- geocoding_platform_interface 2.0.1 [flutter meta plugin_platform_interface]
- geolocator_android 1.0.0 [flutter geolocator_platform_interface]
- geolocator_apple 1.2.0 [flutter geolocator_platform_interface]
- geolocator_platform_interface 2.3.4 [flutter plugin_platform_interface vector_math meta]
- geolocator_web 2.0.6 [flutter flutter_web_plugins geolocator_platform_interface]
- google_maps_flutter_platform_interface 2.1.1 [collection flutter meta plugin_platform_interface stream_transform]
- google_sign_in_platform_interface 2.0.1 [flutter meta quiver]
- google_sign_in_web 0.10.0+2 [flutter flutter_web_plugins google_sign_in_platform_interface js meta]
- graphs 2.0.0
- html 0.15.0 [csslib source_span]
- http 0.13.3 [async http_parser meta path pedantic]
- http_client_helper 2.0.2 [http]
- http_parser 4.0.0 [charcode collection source_span string_scanner typed_data]
- in_app_review_platform_interface 2.0.2 [flutter url_launcher plugin_platform_interface platform]
- js 0.6.3
- logger 1.1.0
- matcher 0.12.10 [stack_trace]
- meta 1.3.0
- mime 1.0.0
- nested 1.0.0 [flutter]
- octo_image 1.0.0+1 [flutter flutter_blurhash]
- path_drawing 0.5.1 [vector_math meta path_parsing flutter]
- path_parsing 0.2.1 [vector_math meta]
- path_provider_linux 2.0.2 [flutter path path_provider_platform_interface xdg_directories]
- path_provider_macos 2.0.2 [flutter]
- path_provider_platform_interface 2.0.1 [flutter meta platform plugin_platform_interface]
- path_provider_windows 2.0.3 [ffi flutter meta path path_provider_platform_interface win32]
- pedantic 1.11.1
- permission_handler_platform_interface 3.6.1 [flutter meta plugin_platform_interface]
- petitparser 4.1.0 [meta]
- platform 3.0.2
- plugin_platform_interface 2.0.1 [meta]
- process 4.2.3 [file path platform]
- quiver 3.0.1 [matcher]
- recase 4.0.0
- rxdart 0.27.1
- share_plus_linux 2.0.4 [share_plus_platform_interface file flutter meta url_launcher]
- share_plus_macos 2.0.2 [share_plus_platform_interface flutter]
- share_plus_platform_interface 2.0.1 [flutter meta mime plugin_platform_interface]
- share_plus_web 2.0.4 [share_plus_platform_interface url_launcher flutter flutter_web_plugins meta]
- share_plus_windows 2.0.3 [share_plus_platform_interface flutter meta url_launcher]
- shared_preferences_linux 2.0.2 [file meta flutter path path_provider_linux shared_preferences_platform_interface]
- shared_preferences_macos 2.0.2 [flutter shared_preferences_platform_interface]
- shared_preferences_platform_interface 2.0.0 [flutter]
- shared_preferences_web 2.0.2 [flutter flutter_web_plugins meta shared_preferences_platform_interface]
- shared_preferences_windows 2.0.2 [flutter file meta path path_provider_platform_interface path_provider_windows shared_preferences_platform_interface]
- sky_engine 0.0.99
- source_span 1.8.1 [collection path term_glyph]
- sqflite 2.0.0+4 [flutter sqflite_common path]
- sqflite_common 2.0.1 [synchronized path meta]
- stack_trace 1.10.0 [path]
- stream_channel 2.1.0 [async]
- stream_transform 2.0.0
- string_scanner 1.1.0 [charcode source_span]
- synchronized 3.0.0
- term_glyph 1.2.0
- test_api 0.3.0 [async boolean_selector collection meta path source_span stack_trace stream_channel string_scanner term_glyph matcher]
- timezone 0.8.0 [path]
- typed_data 1.3.0 [collection]
- universal_platform 1.0.0+1
- url_launcher_linux 2.0.1 [flutter]
- url_launcher_macos 2.0.1 [flutter]
- url_launcher_platform_interface 2.0.4 [flutter plugin_platform_interface]
- url_launcher_web 2.0.4 [flutter flutter_web_plugins meta url_launcher_platform_interface]
- url_launcher_windows 2.0.2 [flutter]
- vector_math 2.1.0
- video_player_platform_interface 4.1.0 [flutter meta flutter_test]
- video_player_web 2.0.3 [flutter flutter_web_plugins meta video_player_platform_interface]
- wakelock 0.5.3+3 [flutter meta wakelock_macos wakelock_platform_interface wakelock_web wakelock_windows]
- wakelock_macos 0.1.0+2 [flutter flutter_web_plugins wakelock_platform_interface]
- wakelock_platform_interface 0.2.1+2 [flutter meta]
- wakelock_web 0.2.0+2 [flutter flutter_web_plugins js wakelock_platform_interface]
- wakelock_windows 0.1.0+1 [flutter wakelock_platform_interface win32]
- win32 2.2.8 [ffi]
- xdg_directories 0.2.0 [meta path process]
- xml 5.1.2 [collection meta petitparser]

Activity

  1. markusaksli-nc commented on Sep 2, 2021

    @markusaksli-nc
    Contributor

    Hi @Tom3652
    Do you have an example of a transaction that can cause this or are you not able to reproduce it yourself?
    Are you overriding the native Firebase pod versions in your Podfile?
    Thank you

  2. added
    platform: iosIssues / PRs which are specifically for iOS.
    type: crashA compile error or crash
    and removed
    Needs AttentionThis issue needs maintainer attention.
    triageIssue is currently being triaged.
    on Sep 2, 2021
  3. Tom3652 commented on Sep 2, 2021

    @Tom3652
    Author

    Hi @markusaksli-nc thanks for your answer

    I am simply adding the pod 'GoogleUtilities' in both of my targets Runner and ImageNotification because i had a conflict.
    I am also overriding pod 'Firebase/Messaging' in ImageNotification as it said in the documentation

    The transaction where it happened (once) was this one :

    Future<int> likePost(Post post, SUser user, SUser currentUser, String hasLikedYourPost) {
        DocumentReference userLike = getLikePostCollection(post.postID).doc(currentUser.uid);
        DocumentReference postToUpdate = getPostsCollection().doc(post.postID);
        DocumentReference otherUser = getUsersCollection().doc(user.uid);
        SNotification notification = SNotification();
        DocumentReference notificationRef = getNotificationCollection().doc(notification.uid);
        return FirebaseFirestore.instance.runTransaction((transaction) async {
          DocumentSnapshot likePostDoc = await transaction.get(userLike);
          if (!likePostDoc.exists) {
            DocumentSnapshot notificationSnap = await transaction.get(notificationRef);
            Follower follower = new Follower(currentUser.uid);
            if (notificationSnap.exists) {
              transaction.set(userLike, follower.toJson());
              transaction.update(postToUpdate, {"likeNum": FieldValue.increment(1)});
            }
            // The notification has already been sent once
            // No matter how many times the current user likes or not the same post will not trigger a new notification
            else {
              transaction.set(userLike, follower.toJson());
              transaction.update(postToUpdate, {"likeNum": FieldValue.increment(1)});
              transaction.update(otherUser, {"actualityNum": FieldValue.increment(1)});
              transaction.set(notificationRef, notification.toJson());
              callEmulatorFunction("sendNotification", notification.toJson());
            }
            return post.likeNum + 1;
          }
          else {
            return post.likeNum;
          }
        });
      }
    

    I also got this error few times with this same transaction and i have started a discussion :

    [cloud_firestore/deadline-exceeded] Deadline expired before operation could complete. 
    For operations that change the state of the system, this error may be returned even if the operation has completed successfully. 
    For example, a successful response from a server could have been delayed long enough for the deadline to expire.. 
    
  4. russellwheatley commented on Mar 8, 2022

    @russellwheatley
    Member

    Hey @Tom3652, did you manage to figure out what was happening here?

  5. Tom3652 commented on Mar 8, 2022

    @Tom3652
    Author

    Hey @russellwheatley, no unfortunately but since i am currently (for few months) not using actively cloud_firestore and no one else had this issue, it's probably been fixed in the newest releases or coming from something wrong in my code that no longer exists... so :)

  6. russellwheatley commented on Mar 8, 2022

    @russellwheatley
    Member

    Thanks for the feedback, @Tom3652. I'll reopen if you circle back and are able to reproduce this issue 😄

  7. Tom3652 commented on Mar 8, 2022

    @Tom3652
    Author

    Sure no problem 👍

  8. locked and limited conversation to collaborators on Apr 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions