Skip to content

Firestore crash / assertion failed / failed to commit transaction / collect garbage #2846

Closed
@mikehardy

Description

@mikehardy

[READ] Step 1: Are you in the right place?

  • For issues or feature requests related to the code in this repository
    file a Github issue.
    • If this is a feature request make sure the issue title starts with "FR:".
  • For general technical questions, post a question on StackOverflow
    with the firebase tag.
  • For general Firebase discussion, use the firebase-talk
    google group.
  • For help troubleshooting your application that does not fall under one
    of the above categories, reach out to the personalized
    Firebase support channel.

[REQUIRED] Step 2: Describe your environment

  • Xcode version: 12.1
  • Firebase SDK version: 5.20.1
  • Firebase Component: Firestore_ (Auth, Core, Database, Firestore, Messaging, Storage, etc)
  • Component version: 1.2.1_

[REQUIRED] Step 3: Describe the problem

App crashes (as detected by Crashlytics). Apparently while in garbage collection. I have a stack trace but it doesn't make much sense as it appears to be collection 0 garbage, and fails as operation not permitted on a file. The error and stack trace are likely the most useful items:

error:

Fatal Exception: NSInternalInconsistencyException FIRESTORE INTERNAL ASSERTION FAILED: Failed to commit transaction: <LevelDbTransaction Collect garbage: 0 changes (0 bytes):> Failed: IO error: /var/mobile/Containers/Data/Application/919A1947-23CF-45C9-A46F-EAEAA0787A06/Documents/firestore/__FIRAPP_DEFAULT/kscoreapp/main/000015.log: Operation not permitted (expected status.ok()) 

stack:

Fatal Exception: NSInternalInconsistencyException 0 CoreFoundation 0x191990518 __exceptionPreprocess 1 libobjc.A.dylib 0x190b6b9f8 objc_exception_throw 2 CoreFoundation 0x1918aa148 +[_CFXNotificationTokenRegistration keyCallbacks] 3 Foundation 0x1923b9f5c -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] 4 KScoreApp 0x100bfcfcc firebase::firestore::util::internal::Fail(char const*, char const*, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) (hard_assert_apple.mm:34) 5 KScoreApp 0x100bfd0e4 firebase::firestore::util::internal::Fail(char const*, char const*, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) (hard_assert_apple.mm:54) 6 KScoreApp 0x100c0a1b0 firebase::firestore::local::LevelDbTransaction::Commit() (leveldb_transaction.cc:211) 7 KScoreApp 0x100bb568c -[FSTLevelDB commitTransaction] (FSTLevelDB.mm:505) 8 KScoreApp 0x100bbeffc -[FSTLocalStore collectGarbage:] (FSTPersistence.h:216) 9 KScoreApp 0x100bac900 std::__1::__function::__func<-[FSTFirestoreClient scheduleLruGarbageCollection]::$_3, std::__1::allocator<-[FSTFirestoreClient scheduleLruGarbageCollection]::$_3>, void ()>::operator()() (FSTFirestoreClient.mm:267) 10 KScoreApp 0x100b71dbc firebase::firestore::util::AsyncQueue::ExecuteBlocking(std::__1::function<void ()> const&) (atomic:921) 11 KScoreApp 0x100b84ebc firebase::firestore::util::TimeSlot::InvokedByLibdispatch(void*) (executor_libdispatch.mm:179) 12 libdispatch.dylib 0x1913d17d4 _dispatch_client_callout 13 libdispatch.dylib 0x191376018 _dispatch_continuation_pop$VARIANT$mp 14 libdispatch.dylib 0x191385fa4 _dispatch_source_invoke$VARIANT$mp 15 libdispatch.dylib 0x19137a1ec _dispatch_lane_serial_drain$VARIANT$mp 16 libdispatch.dylib 0x19137ae3c _dispatch_lane_invoke$VARIANT$mp 17 libdispatch.dylib 0x1913834a8 _dispatch_workloop_worker_thread 18 libsystem_pthread.dylib 0x1915b1114 _pthread_wqthread 19 libsystem_pthread.dylib 0x1915b3cd4 start_wqthread 

Steps to reproduce:

I would love to have steps to reproduce but I haven't seen this locally, and don't have the logs or discussion of steps from relevant users / devices

Any instinct on how this could happen that could help me pinpoint it would be welcome

Relevant Code:

Unsure as this appears to be an internal routine. The relevant file appears to have last been edited by Grand Moff Harkin long ago and I'm not familiar enough with Firestore internals to make any guess as to possible modes of failure in a GC.

I may have missed them but I was similarly unable to find any open or closed issues in this repo that seemed relevant though I did try.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    close