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

High Frequency of random crashes due to Firebase sdk

Open jack45j opened this issue 1 year ago • 0 comments

Description

Since our app's release of a certain version update, there has been a huge amount of random crashes related to APM, such as:

  • APMPersistentDictionary stringForKey:
  • APMPBMeasurementBundle protoBuffer
  • APMScreenViewReporter viewControllerDidDisappear:
  • APMDatabase insertIfNotExistsRawEventMetadata:error:
  • APMPersistedConfig stringForKey: _block_invoke
  • APMEManager flagValueForFlagName:SDKName: _block_invoke
  • APMValue initWithString and so on.

Specifically, these crashes started appearing in large numbers after an update that introduced a new resetDatabase() method. This method is called on some users' devices and always after Firebase.configure(). Here is the method:

extension CoreDataMainContext {
    func resetDatabase() {
        self.managedObjectContext.perform {
            do {
                try self.stack.persistentStoreCoordinator.managedObjectModel.entities.forEach { entity in
                    if let name = entity.name {
                        let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: name)
                        let request = NSBatchDeleteRequest(fetchRequest: fetch)
                        try self.managedObjectContext.execute(request)
                    }
                }
                try self.managedObjectContext.save()
            } catch {
                print("Reset database failure with error: \(error.localizedDescription)")
            }
        }
    }
}

In my understanding, this resetDatabase() should only affect a specific CoreDataStack. Even if Firebase also uses SQLite, it shouldn't be affected, right? I noticed issue #12796 mentioned a similar situation, but it seems there hasn't been a conclusion yet.

I'm attaching some related stack traces here. If you need any other information or if there's something I might have done wrong, please let me know. Thanks for all your hard work for the community, you guys are really doing a great job.

截圖 2024-05-13 下午3 24 56 截圖 2024-05-13 下午3 17 20 截圖 2024-05-13 下午3 17 26 截圖 2024-05-13 下午3 17 32

stacktrace.zip

Reproducing the issue

No response

Firebase SDK Version

10.22.1

Xcode Version

15.3

Installation Method

Swift Package Manager

Firebase Product(s)

Analytics, Crashlytics, DynamicLinks

Targeted Platforms

iOS

Relevant Log Output

No response

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

Expand Package.resolved snippet
{
  "object": {
    "pins": [
      {
        "package": "abseil",
        "repositoryURL": "https://github.com/google/abseil-cpp-binary.git",
        "state": {
          "branch": null,
          "revision": "bfc0b6f81adc06ce5121eb23f628473638d67c5c",
          "version": "1.2022062300.0"
        }
      },
      {
        "package": "AppCheck",
        "repositoryURL": "https://github.com/google/app-check.git",
        "state": {
          "branch": null,
          "revision": "3e464dad87dad2d29bb29a97836789bf0f8f67d2",
          "version": "10.18.1"
        }
      },
      {
        "package": "Charts",
        "repositoryURL": "https://github.com/danielgindi/Charts.git",
        "state": {
          "branch": null,
          "revision": "07b23476ad52b926be772f317d8f1d4511ee8d02",
          "version": "4.1.0"
        }
      },
      {
        "package": "Facebook",
        "repositoryURL": "https://github.com/facebook/facebook-ios-sdk",
        "state": {
          "branch": null,
          "revision": "e14f349945ba3f9516e3292107f42be19fe9fbe5",
          "version": "12.3.2"
        }
      },
      {
        "package": "Firebase",
        "repositoryURL": "https://github.com/firebase/firebase-ios-sdk.git",
        "state": {
          "branch": null,
          "revision": "be49849dcba96f2b5ee550d4eceb2c0fa27dade4",
          "version": "10.22.1"
        }
      },
      {
        "package": "FSPagerView",
        "repositoryURL": "https://github.com/olbartek/FSPagerView",
        "state": {
          "branch": null,
          "revision": "f07d67c1d0a19cadfb94014d4d9653ccdf25169d",
          "version": "0.8.3"
        }
      },
      {
        "package": "GoogleAppMeasurement",
        "repositoryURL": "https://github.com/google/GoogleAppMeasurement.git",
        "state": {
          "branch": null,
          "revision": "482cfa4e5880f0a29f66ecfd60c5a62af28bd1f0",
          "version": "10.22.1"
        }
      },
      {
        "package": "GoogleDataTransport",
        "repositoryURL": "https://github.com/google/GoogleDataTransport.git",
        "state": {
          "branch": null,
          "revision": "a732a4b47f59e4f725a2ea10f0c77e93a7131117",
          "version": "9.3.0"
        }
      },
      {
        "package": "GoogleUtilities",
        "repositoryURL": "https://github.com/google/GoogleUtilities.git",
        "state": {
          "branch": null,
          "revision": "bc27fad73504f3d4af235de451f02ee22586ebd3",
          "version": "7.12.1"
        }
      },
      {
        "package": "gRPC",
        "repositoryURL": "https://github.com/google/grpc-binary.git",
        "state": {
          "branch": null,
          "revision": "a673bc2937fbe886dd1f99c401b01b6d977a9c98",
          "version": "1.49.1"
        }
      },
      {
        "package": "GTMSessionFetcher",
        "repositoryURL": "https://github.com/google/gtm-session-fetcher.git",
        "state": {
          "branch": null,
          "revision": "76135c9f4e1ac85459d5fec61b6f76ac47ab3a4c",
          "version": "3.3.1"
        }
      },
      {
        "package": "InteropForGoogle",
        "repositoryURL": "https://github.com/google/interop-ios-for-google-sdks.git",
        "state": {
          "branch": null,
          "revision": "2d12673670417654f08f5f90fdd62926dc3a2648",
          "version": "100.0.0"
        }
      },
      {
        "package": "JWTDecode",
        "repositoryURL": "https://github.com/auth0/JWTDecode.swift",
        "state": {
          "branch": null,
          "revision": "58af7278797871e460d79496621b3e5366b865b2",
          "version": "3.1.0"
        }
      },
      {
        "package": "leveldb",
        "repositoryURL": "https://github.com/firebase/leveldb.git",
        "state": {
          "branch": null,
          "revision": "9d108e9112aa1d65ce508facf804674546116d9c",
          "version": "1.22.3"
        }
      },
      {
        "package": "LineSDK",
        "repositoryURL": "https://github.com/line/line-sdk-ios-swift",
        "state": {
          "branch": null,
          "revision": "ccfdf2c2e0bdebc303e24edf8978e09d768b1002",
          "version": "5.11.0"
        }
      },
      {
        "package": "MKRingProgressView",
        "repositoryURL": "https://github.com/maxkonovalov/MKRingProgressView",
        "state": {
          "branch": null,
          "revision": "660888aab1d2ab0ed7eb9eb53caec12af4955fa7",
          "version": "2.3.0"
        }
      },
      {
        "package": "nanopb",
        "repositoryURL": "https://github.com/firebase/nanopb.git",
        "state": {
          "branch": null,
          "revision": "819d0a2173aff699fb8c364b6fb906f7cdb1a692",
          "version": "2.30909.0"
        }
      },
      {
        "package": "Promises",
        "repositoryURL": "https://github.com/google/promises.git",
        "state": {
          "branch": null,
          "revision": "e70e889c0196c76d22759eb50d6a0270ca9f1d9e",
          "version": "2.3.1"
        }
      },
      {
        "package": "SDWebImage",
        "repositoryURL": "https://github.com/SDWebImage/SDWebImage",
        "state": {
          "branch": null,
          "revision": "b11493f76481dff17ac8f45274a6b698ba0d3af5",
          "version": "5.18.11"
        }
      },
      {
        "package": "swift-algorithms",
        "repositoryURL": "https://github.com/apple/swift-algorithms",
        "state": {
          "branch": null,
          "revision": "f6919dfc309e7f1b56224378b11e28bab5bccc42",
          "version": "1.2.0"
        }
      },
      {
        "package": "swift-numerics",
        "repositoryURL": "https://github.com/apple/swift-numerics.git",
        "state": {
          "branch": null,
          "revision": "0a5bc04095a675662cf24757cc0640aa2204253b",
          "version": "1.0.2"
        }
      },
      {
        "package": "SwiftProtobuf",
        "repositoryURL": "https://github.com/apple/swift-protobuf.git",
        "state": {
          "branch": null,
          "revision": "65e8f29b2d63c4e38e736b25c27b83e012159be8",
          "version": "1.25.2"
        }
      },
      {
        "package": "Swinject",
        "repositoryURL": "https://github.com/Swinject/Swinject",
        "state": {
          "branch": null,
          "revision": "8bc503e60965298984fb58cf47b71c541449fe2a",
          "version": "2.8.3"
        }
      }
    ]
  },
  "version": 1
}

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet

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

jack45j avatar May 13 '24 07:05 jack45j