Firebase-ios-sdk: GDTCORStorage.m line 312 `-[GDTCORStorage encodeWithCoder:]`

Created on 23 Dec 2019  路  8Comments  路  Source: firebase/firebase-ios-sdk

  • Xcode version: 11.3 (11C29
  • Firebase SDK version: 6.13.0
Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000e037cb690
-[GDTCORStorage encodeWithCoder:]

CoreUI: deallocating _CUIInternalLinkRendition 7600 /private/var/containers/Bundle/Application/84BEFDCB-5A0B-4345-B15B-FFE9E99C0CD2/MyApp.app/Assets.car

Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x1a3ae0fb0 objc_msgSend + 16
1  Foundation                     0x1a418664c _encodeObject + 212
2  Foundation                     0x1a4105aec -[NSOrderedSet(NSOrderedSet) encodeWithCoder:] + 268
3  Foundation                     0x1a4186a34 _encodeObject + 1212
4  MyInternalAppCoreServices                0x10567f90c -[GDTCORStorage encodeWithCoder:] + 312 (GDTCORStorage.m:312)
5  Foundation                     0x1a4186a34 _encodeObject + 1212
6  Foundation                     0x1a4099e8c +[NSKeyedArchiver archivedDataWithRootObject:requiringSecureCoding:error:] + 116
7  MyInternalAppCoreServices                0x10567f554 -[GDTCORStorage appWillTerminate:] + 261 (GDTCORStorage.m:261)
8  MyInternalAppCoreServices                0x10567cb88 -[GDTCORLifecycle applicationWillTerminate:] + 109 (GDTCORLifecycle.m:109)
9  Foundation                     0x1a419706c __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_2 + 28
10 CoreFoundation                 0x1a3d2499c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 28
11 CoreFoundation                 0x1a3d249ec ___CFXRegistrationPost1_block_invoke + 68
12 CoreFoundation                 0x1a3d23ce4 _CFXRegistrationPost1 + 396
13 CoreFoundation                 0x1a3d2397c ___CFXNotificationPost_block_invoke + 108
14 CoreFoundation                 0x1a3c9c910 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1424
15 CoreFoundation                 0x1a3d232ac _CFXNotificationPost + 1268
16 Foundation                     0x1a4085bfc -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
17 MyInternalAppCoreServices                0x10567d158 -[GDTCORApplication iOSApplicationWillTerminate:] + 164 (GDTCORPlatform.m:164)
18 Foundation                     0x1a419706c __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_2 + 28
19 CoreFoundation                 0x1a3d2499c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 28
20 CoreFoundation                 0x1a3d249ec ___CFXRegistrationPost1_block_invoke + 68
21 CoreFoundation                 0x1a3d23ce4 _CFXRegistrationPost1 + 396
22 CoreFoundation                 0x1a3d2397c ___CFXNotificationPost_block_invoke + 108
23 CoreFoundation                 0x1a3c9c910 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1424
24 CoreFoundation                 0x1a3d232ac _CFXNotificationPost + 1268
25 Foundation                     0x1a4085bfc -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
26 UIKitCore                      0x1a7ec00d8 -[UIApplication _terminateWithStatus:] + 304
27 UIKitCore                      0x1a765183c -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 128
28 UIKitCore                      0x1a7651498 -[_UISceneLifecycleMultiplexer forceExitWithTransitionContext:scene:] + 220
29 UIKitCore                      0x1a7eb62b4 -[UIApplication workspaceShouldExit:withTransitionContext:] + 216
30 FrontBoardServices             0x1a8fa798c -[FBSUIApplicationWorkspaceShim workspaceShouldExit:withTransitionContext:] + 88
31 FrontBoardServices             0x1a8fd5264 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke_2 + 80
32 FrontBoardServices             0x1a8fb9ef4 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 240
33 FrontBoardServices             0x1a8fd51f0 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke + 140
34 libdispatch.dylib              0x1a3a71fd8 _dispatch_client_callout + 20
35 libdispatch.dylib              0x1a3a74d1c _dispatch_block_invoke_direct + 264
36 FrontBoardServices             0x1a8ffc254 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 48
37 FrontBoardServices             0x1a8ffbf00 -[FBSSerialQueue _queue_performNextIfPossible] + 432
38 FrontBoardServices             0x1a8ffc46c -[FBSSerialQueue _performNextFromRunLoopSource] + 32
39 CoreFoundation                 0x1a3d48108 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
40 CoreFoundation                 0x1a3d4805c __CFRunLoopDoSource0 + 84
41 CoreFoundation                 0x1a3d477c8 __CFRunLoopDoSources0 + 184
42 CoreFoundation                 0x1a3d42694 __CFRunLoopRun + 1068
43 CoreFoundation                 0x1a3d41f40 CFRunLoopRunSpecific + 480
44 GraphicsServices               0x1adfbf534 GSEventRunModal + 108
45 UIKitCore                      0x1a7ebaa60 UIApplicationMain + 1940
46 MyMyInternalApp                          0x10425f5fc main + 14 (LogoutResponder.swift:14)
47 libdyld.dylib                  0x1a3bc0e18 start + 4

Podfile.lock

PODS:
  - Alamofire (4.9.1)
  - Crashlytics (3.14.0):
    - Fabric (~> 1.10.2)
  - CryptoSwift (1.2.0)
  - DifferenceKit (1.1.4):
    - DifferenceKit/Core (= 1.1.4)
    - DifferenceKit/UIKitExtension (= 1.1.4)
  - DifferenceKit/Core (1.1.4)
  - DifferenceKit/UIKitExtension (1.1.4):
    - DifferenceKit/Core
  - Fabric (1.10.2)
  - Firebase/Core (6.13.0):
    - Firebase/CoreOnly
    - FirebaseAnalytics (= 6.1.6)
  - Firebase/CoreOnly (6.13.0):
    - FirebaseCore (= 6.4.0)
  - Firebase/Performance (6.13.0):
    - Firebase/CoreOnly
    - FirebasePerformance (~> 3.1.7)
  - Firebase/RemoteConfig (6.13.0):
    - Firebase/CoreOnly
    - FirebaseRemoteConfig (~> 4.4.5)
  - FirebaseABTesting (3.1.2):
    - FirebaseAnalyticsInterop (~> 1.3)
    - FirebaseCore (~> 6.1)
    - Protobuf (>= 3.9.2, ~> 3.9)
  - FirebaseAnalytics (6.1.6):
    - FirebaseCore (~> 6.4)
    - FirebaseInstanceID (~> 4.2)
    - GoogleAppMeasurement (= 6.1.6)
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (= 0.3.9011)
  - FirebaseAnalyticsInterop (1.4.0)
  - FirebaseCore (6.4.0):
    - FirebaseCoreDiagnostics (~> 1.0)
    - FirebaseCoreDiagnosticsInterop (~> 1.0)
    - GoogleUtilities/Environment (~> 6.2)
    - GoogleUtilities/Logger (~> 6.2)
  - FirebaseCoreDiagnostics (1.1.2):
    - FirebaseCoreDiagnosticsInterop (~> 1.0)
    - GoogleDataTransportCCTSupport (~> 1.0)
    - GoogleUtilities/Environment (~> 6.2)
    - GoogleUtilities/Logger (~> 6.2)
    - nanopb (~> 0.3.901)
  - FirebaseCoreDiagnosticsInterop (1.1.0)
  - FirebaseInstanceID (4.2.7):
    - FirebaseCore (~> 6.0)
    - GoogleUtilities/Environment (~> 6.0)
    - GoogleUtilities/UserDefaults (~> 6.0)
  - FirebasePerformance (3.1.7):
    - FirebaseCore (~> 6.4)
    - FirebaseInstanceID (~> 4.2)
    - FirebaseRemoteConfig (~> 4.4)
    - GoogleToolboxForMac/Logger (~> 2.1)
    - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
    - GoogleUtilities/Environment (~> 6.2)
    - GoogleUtilities/ISASwizzler (~> 6.2)
    - GoogleUtilities/MethodSwizzler (~> 6.2)
    - GTMSessionFetcher/Core (~> 1.1)
    - Protobuf (~> 3.9)
  - FirebaseRemoteConfig (4.4.5):
    - FirebaseABTesting (~> 3.1)
    - FirebaseAnalyticsInterop (~> 1.4)
    - FirebaseCore (~> 6.2)
    - FirebaseInstanceID (~> 4.2)
    - GoogleUtilities/Environment (~> 6.2)
    - "GoogleUtilities/NSData+zlib (~> 6.2)"
    - Protobuf (>= 3.9.2, ~> 3.9)
  - GoogleAnalytics (3.17.0)
  - GoogleAppMeasurement (6.1.6):
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (= 0.3.9011)
  - GoogleDataTransport (3.2.0)
  - GoogleDataTransportCCTSupport (1.2.2):
    - GoogleDataTransport (~> 3.2)
    - nanopb (~> 0.3.901)
  - GoogleSymbolUtilities (1.1.2)
  - GoogleTagManager (7.1.2):
    - FirebaseAnalytics (~> 6.0)
    - GoogleAnalytics (~> 3.17)
    - GoogleUtilitiesLegacy (~> 1.3)
  - GoogleToolboxForMac/Defines (2.2.2)
  - GoogleToolboxForMac/Logger (2.2.2):
    - GoogleToolboxForMac/Defines (= 2.2.2)
  - "GoogleToolboxForMac/NSData+zlib (2.2.2)":
    - GoogleToolboxForMac/Defines (= 2.2.2)
  - GoogleUtilities/AppDelegateSwizzler (6.3.2):
    - GoogleUtilities/Environment
    - GoogleUtilities/Logger
    - GoogleUtilities/Network
  - GoogleUtilities/Environment (6.3.2)
  - GoogleUtilities/ISASwizzler (6.3.2)
  - GoogleUtilities/Logger (6.3.2):
    - GoogleUtilities/Environment
  - GoogleUtilities/MethodSwizzler (6.3.2):
    - GoogleUtilities/Logger
  - GoogleUtilities/Network (6.3.2):
    - GoogleUtilities/Logger
    - "GoogleUtilities/NSData+zlib"
    - GoogleUtilities/Reachability
  - "GoogleUtilities/NSData+zlib (6.3.2)"
  - GoogleUtilities/Reachability (6.3.2):
    - GoogleUtilities/Logger
  - GoogleUtilities/UserDefaults (6.3.2):
    - GoogleUtilities/Logger
  - GoogleUtilitiesLegacy (1.3.2):
    - GoogleSymbolUtilities (~> 1.1)
  - GTMSessionFetcher/Core (1.3.0)
  - MyInternalAppPaySDK (4.4.0):
    - Alamofire
    - CryptoSwift
  - iOSSnapshotTestCase (6.1.0):
    - iOSSnapshotTestCase/SwiftSupport (= 6.1.0)
  - iOSSnapshotTestCase/Core (6.1.0)
  - iOSSnapshotTestCase/SwiftSupport (6.1.0):
    - iOSSnapshotTestCase/Core
  - KeychainSwift (12.0.0)
  - Kingfisher (4.10.0)
  - lottie-ios (3.1.2)
  - nanopb (0.3.9011):
    - nanopb/decode (= 0.3.9011)
    - nanopb/encode (= 0.3.9011)
  - nanopb/decode (0.3.9011)
  - nanopb/encode (0.3.9011)
  - Protobuf (3.11.1)
  - RxSwift (5.0.1)
  - RxTest (5.0.1):
    - RxSwift (~> 5)
  - SwiftFormat/CLI (0.42.0)
  - SwiftLint (0.27.0)

DEPENDENCIES:
  - Crashlytics
  - DifferenceKit
  - Firebase/Core (~> 6.13.0)
  - Firebase/Performance (~> 6.13.0)
  - Firebase/RemoteConfig (~> 6.13.0)
  - GoogleTagManager
  - "MyInternalAppPaySDK (from `[email protected]:pos-dev/MyInternalAppPaySDK_iOS.git`, tag `4.4.0`)"
  - iOSSnapshotTestCase (from `https://github.com/Harmek/ios-snapshot-test-case.git`)
  - KeychainSwift (= 12.0.0)
  - Kingfisher (= 4.10.0)
  - lottie-ios (= 3.1.2)
  - RxSwift (~> 5.0.0)
  - RxTest
  - SwiftFormat/CLI
  - SwiftLint (= 0.27.0)

SPEC REPOS:
  https://github.com/cocoapods/specs.git:
    - Alamofire
    - Crashlytics
    - CryptoSwift
    - DifferenceKit
    - Fabric
    - Firebase
    - FirebaseABTesting
    - FirebaseAnalytics
    - FirebaseAnalyticsInterop
    - FirebaseCore
    - FirebaseCoreDiagnostics
    - FirebaseCoreDiagnosticsInterop
    - FirebaseInstanceID
    - FirebasePerformance
    - FirebaseRemoteConfig
    - GoogleAnalytics
    - GoogleAppMeasurement
    - GoogleDataTransport
    - GoogleDataTransportCCTSupport
    - GoogleSymbolUtilities
    - GoogleTagManager
    - GoogleToolboxForMac
    - GoogleUtilities
    - GoogleUtilitiesLegacy
    - GTMSessionFetcher
    - KeychainSwift
    - Kingfisher
    - lottie-ios
    - nanopb
    - Protobuf
    - RxSwift
    - RxTest
    - SwiftFormat
    - SwiftLint

EXTERNAL SOURCES:
  MyInternalAppPaySDK:
    :git: "[email protected]:pos-dev/MyInternalAppPaySDK_iOS.git"
    :tag: 4.4.0
  iOSSnapshotTestCase:
    :git: https://github.com/Harmek/ios-snapshot-test-case.git

CHECKOUT OPTIONS:
  MyInternalAppPaySDK:
    :git: "[email protected]:pos-dev/MyInternalAppPaySDK_iOS.git"
    :tag: 4.4.0
  iOSSnapshotTestCase:
    :commit: b608fdc7d672d3c732d0e0d5261332db0fba932d
    :git: https://github.com/Harmek/ios-snapshot-test-case.git

SPEC CHECKSUMS:
  Alamofire: 85e8a02c69d6020a0d734f6054870d7ecb75cf18
  Crashlytics: 540b7e5f5da5a042647227a5e3ac51d85eed06df
  CryptoSwift: 40e374e45291d8dceedcb0d6184da94533eaabdf
  DifferenceKit: d7e8a7edd2ae706f1e1f05c8103d4cf858e04b78
  Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74
  Firebase: 458d109512200d1aca2e1b9b6cf7d68a869a4a46
  FirebaseABTesting: 0d10f3cdc3fa00f3f175b5b56c1003c8e888299f
  FirebaseAnalytics: 45f36d9c429fc91d206283900ab75390cd05ee8a
  FirebaseAnalyticsInterop: d48b6ab67bcf016a05e55b71fc39c61c0cb6b7f3
  FirebaseCore: 307ea2508df730c5865334e41965bd9ea344b0e5
  FirebaseCoreDiagnostics: 511f4f3ed7d440bb69127e8b97c2bc8befae639e
  FirebaseCoreDiagnosticsInterop: e9b1b023157e3a2fc6418b5cb601e79b9af7b3a0
  FirebaseInstanceID: ebd2ea79ee38db0cb5f5167b17a0d387e1cc7b6e
  FirebasePerformance: 22273a775eaed4cd3e072c9b88396a5e4b285c3f
  FirebaseRemoteConfig: 6ad68503c04701b8d9d709240711bc0bf6edaf94
  GoogleAnalytics: f42cc53a87a51fe94334821868d9c8481ff47a7b
  GoogleAppMeasurement: dfe55efa543e899d906309eaaac6ca26d249862f
  GoogleDataTransport: 8e9b210c97d55fbff306cc5468ff91b9cb32dcf5
  GoogleDataTransportCCTSupport: ef79a4728b864946a8aafdbab770d5294faf3b5f
  GoogleSymbolUtilities: 631ee17048aa5e9ab133470d768ea997a5ef9b96
  GoogleTagManager: 1821fef94a9648b63c6c3469077adcba4bff8dee
  GoogleToolboxForMac: 800648f8b3127618c1b59c7f97684427630c5ea3
  GoogleUtilities: 547a86735c6f0ee30ad17e94df4fc21f616b71cb
  GoogleUtilitiesLegacy: 5501bedec1646bd284286eb5fc9453f7e23a12f4
  GTMSessionFetcher: 43b8b64263023d4f32caa0b40f4c8bfa3c5f36d8
  MyInternalAppPaySDK: ef8dfd0cb2d64924b181a0f617eff6b9472a6219
  iOSSnapshotTestCase: 7de154eb02641691d553d832c66bcff9a45c4414
  KeychainSwift: d5e776578587ee5958ce36601df22f168f65138a
  Kingfisher: 43c4b802d8b5256cf1f4379e9cd10b329be6d3e2
  lottie-ios: 49cd85b1f24f61a7708ad7ec76a523ab2d0e3100
  nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
  Protobuf: 20d79da7f20b5928b80043b05080b816e802659e
  RxSwift: e2dc62b366a3adf6a0be44ba9f405efd4c94e0c4
  RxTest: 0132f952a61da82d5233abedaa559df91e5330e5
  SwiftFormat: 5faa819600268dfaa5c19f1359730883db151678
  SwiftLint: 3207c1faa2240bf8973b191820a116113cd11073

PODFILE CHECKSUM: ca26942263baf055f72116e1ad2764308b6b778a

COCOAPODS: 1.7.5

Getting a very small number of reported crashes on this. Might be related to https://github.com/firebase/firebase-ios-sdk/issues/4280.

GoogleDataTransport

Most helpful comment

Doh, I was missing a dispatch_sync in appWillTerminate. Thanks for the test case, I'll include it in a PR shortly. Double checked: all the other singletons have dispatch_syncs in them to finish work.

All 8 comments

I found a few problems with this issue:

  • I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
  • This issue does not seem to follow the issue template. Make sure you provide all the required information.

I have the same crash.

  • Xcode version: 11.2.1
  • Firebase SDK version: 6.11.0

Crash information

  • Crash happens on iOS 10,11 and 13
# Date: 2020-01-06T10:50:00Z
# OS Version: 13.1.3 (17A878)
# Device: iPhone X
# RAM Free: 4.6%
# Disk Free: 2.5%

#0. Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x1bbefd1a0 objc_msgSend + 32
1  Foundation                     0x1bc587f54 _encodeObject + 208
2  Foundation                     0x1bc50bf44 -[NSOrderedSet(NSOrderedSet) encodeWithCoder:] + 264
3  Foundation                     0x1bc58833c _encodeObject + 1208
4  SwvlAnalyticsKit               0x1024637a0 -[GDTCORStorage encodeWithCoder:] + 313(GDTCORStorage.m:313)
5  Foundation                     0x1bc58833c _encodeObject + 1208
6  Foundation                     0x1bc4a2eb8 +[NSKeyedArchiver archivedDataWithRootObject:requiringSecureCoding:error:] + 112
7  SwvlAnalyticsKit               0x102463384 -[GDTCORStorage appWillTerminate:] + 262 (GDTCORStorage.m:262)
8  SwvlAnalyticsKit               0x1024607a4 -[GDTCORLifecycle applicationWillTerminate:] + 109 (GDTCORLifecycle.m:109)
9  CoreFoundation                 0x1bc13409c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
10 CoreFoundation                 0x1bc1340e4 ___CFXRegistrationPost1_block_invoke + 64
11 CoreFoundation                 0x1bc133444 _CFXRegistrationPost1 + 368
12 CoreFoundation                 0x1bc1330fc ___CFXNotificationPost_block_invoke + 104
13 CoreFoundation                 0x1bc0af43c -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1416
14 CoreFoundation                 0x1bc132a4c _CFXNotificationPost + 1244
15 Foundation                     0x1bc48f2d8 -[NSNotificationCenter postNotificationName:object:userInfo:] + 60
16 Swvl                           0x100ab85cc -[GDTCORApplication iOSApplicationWillTerminate:] + 181 (GDTCORPlatform.m:181)
17 CoreFoundation                 0x1bc13409c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
18 CoreFoundation                 0x1bc1340e4 ___CFXRegistrationPost1_block_invoke + 64
19 CoreFoundation                 0x1bc133444 _CFXRegistrationPost1 + 368
20 CoreFoundation                 0x1bc1330fc ___CFXNotificationPost_block_invoke + 104
21 CoreFoundation                 0x1bc0af43c -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1416
22 CoreFoundation                 0x1bc132a4c _CFXNotificationPost + 1244
23 Foundation                     0x1bc48f2d8 -[NSNotificationCenter postNotificationName:object:userInfo:] + 60
24 UIKitCore                      0x1c01eb9a4 -[UIApplication _terminateWithStatus:] + 300
25 UIKitCore                      0x1bf9c0ec0 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 124
26 UIKitCore                      0x1bf9c0b40 -[_UISceneLifecycleMultiplexer forceExitWithTransitionContext:scene:] + 216
27 UIKitCore                      0x1c01e1edc -[UIApplication workspaceShouldExit:withTransitionContext:] + 212
28 FrontBoardServices             0x1c126ab00 -[FBSUIApplicationWorkspaceShim workspaceShouldExit:withTransitionContext:] + 84
29 FrontBoardServices             0x1c1296184 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke_2 + 76
30 FrontBoardServices             0x1c127c0f8 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 232
31 FrontBoardServices             0x1c1296114 __83-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:withAcknowledgement:]_block_invoke + 124
32 libdispatch.dylib              0x1bbea6184 _dispatch_client_callout + 16
33 libdispatch.dylib              0x1bbe8044c _dispatch_block_invoke_direct$VARIANT$armv81 + 216
34 FrontBoardServices             0x1c12bb540 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 40
35 FrontBoardServices             0x1c12bb20c -[FBSSerialQueue _queue_performNextIfPossible] + 404
36 FrontBoardServices             0x1c12bb734 -[FBSSerialQueue _performNextFromRunLoopSource] + 28
37 CoreFoundation                 0x1bc1567e0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
38 CoreFoundation                 0x1bc156738 __CFRunLoopDoSource0 + 80
39 CoreFoundation                 0x1bc155f20 __CFRunLoopDoSources0 + 260
40 CoreFoundation                 0x1bc15101c __CFRunLoopRun + 1080
41 CoreFoundation                 0x1bc1508bc CFRunLoopRunSpecific + 464
42 GraphicsServices               0x1c5fbc328 GSEventRunModal + 104
43 UIKitCore                      0x1c01e66d4 UIApplicationMain + 1936
44 Swvl                           0x100733e30 main + 17 (FetchUserProfileSettingsWorker.swift:17)
45 libdyld.dylib                  0x1bbfdb460 start + 4

Podfile.lock

PODS:
  - Adjust (4.18.3):
    - Adjust/Core (= 4.18.3)
  - Adjust/Core (4.18.3)
  - Alamofire (4.7.3)
  - Amplitude-iOS (4.0.4)
  - AnimatedCollectionViewLayout (0.4.0)
  - Appboy-iOS-SDK (3.20.1):
    - Appboy-iOS-SDK/UI (= 3.20.1)
  - Appboy-iOS-SDK/ContentCards (3.20.1):
    - Appboy-iOS-SDK/Core
    - SDWebImage (~> 5.0)
  - Appboy-iOS-SDK/Core (3.20.1)
  - Appboy-iOS-SDK/InAppMessage (3.20.1):
    - Appboy-iOS-SDK/Core
    - SDWebImage (~> 5.0)
  - Appboy-iOS-SDK/NewsFeed (3.20.1):
    - Appboy-iOS-SDK/Core
    - SDWebImage (~> 5.0)
  - Appboy-iOS-SDK/UI (3.20.1):
    - Appboy-iOS-SDK/ContentCards
    - Appboy-iOS-SDK/Core
    - Appboy-iOS-SDK/InAppMessage
    - Appboy-iOS-SDK/NewsFeed
  - Cosmos (17.0.0)
  - Crashlytics (3.11.0):
    - Fabric (~> 1.8.0)
  - Fabric (1.8.0)
  - FBSDKCoreKit (5.8.0):
    - FBSDKCoreKit/Basics (= 5.8.0)
    - FBSDKCoreKit/Core (= 5.8.0)
  - FBSDKCoreKit/Basics (5.8.0)
  - FBSDKCoreKit/Core (5.8.0):
    - FBSDKCoreKit/Basics
  - FBSDKCoreKit/Swift (5.8.0):
    - FBSDKCoreKit/Core
  - FBSDKLoginKit/Login (5.8.0):
    - FBSDKCoreKit (~> 5.0)
  - FBSDKLoginKit/Swift (5.8.0):
    - FBSDKCoreKit/Swift (~> 5.8.0)
    - FBSDKLoginKit/Login
  - Firebase (6.11.0):
    - Firebase/Core (= 6.11.0)
  - Firebase/Core (6.11.0):
    - Firebase/CoreOnly
    - FirebaseAnalytics (= 6.1.3)
  - Firebase/CoreOnly (6.11.0):
    - FirebaseCore (= 6.3.2)
  - Firebase/Messaging (6.11.0):
    - Firebase/CoreOnly
    - FirebaseMessaging (~> 4.1.7)
  - FirebaseAnalytics (6.1.3):
    - FirebaseCore (~> 6.3)
    - FirebaseInstanceID (~> 4.2)
    - GoogleAppMeasurement (= 6.1.3)
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (~> 0.3.901)
  - FirebaseAnalyticsInterop (1.4.0)
  - FirebaseCore (6.3.2):
    - FirebaseCoreDiagnostics (~> 1.0)
    - FirebaseCoreDiagnosticsInterop (~> 1.0)
    - GoogleUtilities/Environment (~> 6.2)
    - GoogleUtilities/Logger (~> 6.2)
  - FirebaseCoreDiagnostics (1.1.1):
    - FirebaseCoreDiagnosticsInterop (~> 1.0)
    - GoogleDataTransportCCTSupport (~> 1.0)
    - GoogleUtilities/Environment (~> 6.2)
    - GoogleUtilities/Logger (~> 6.2)
    - nanopb (~> 0.3.901)
  - FirebaseCoreDiagnosticsInterop (1.0.0)
  - FirebaseInstanceID (4.2.6):
    - FirebaseCore (~> 6.0)
    - GoogleUtilities/Environment (~> 6.0)
    - GoogleUtilities/UserDefaults (~> 6.0)
  - FirebaseMessaging (4.1.7):
    - FirebaseAnalyticsInterop (~> 1.3)
    - FirebaseCore (~> 6.2)
    - FirebaseInstanceID (~> 4.1)
    - GoogleUtilities/AppDelegateSwizzler (~> 6.2)
    - GoogleUtilities/Environment (~> 6.2)
    - GoogleUtilities/Reachability (~> 6.2)
    - GoogleUtilities/UserDefaults (~> 6.2)
    - Protobuf (>= 3.9.2, ~> 3.9)
  - FormTextField (2.0.1)
  - GoogleAppMeasurement (6.1.3):
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (~> 0.3.901)
  - GoogleDataTransport (3.0.1)
  - GoogleDataTransportCCTSupport (1.2.1):
    - GoogleDataTransport (~> 3.0)
    - nanopb (~> 0.3.901)
  - GoogleMaps (3.5.0):
    - GoogleMaps/Maps (= 3.5.0)
  - GoogleMaps/Base (3.5.0)
  - GoogleMaps/Maps (3.5.0):
    - GoogleMaps/Base
  - GoogleSignIn (4.1.2):
    - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)"
    - "GoogleToolboxForMac/NSString+URLArguments (~> 2.1)"
    - GTMOAuth2 (~> 1.0)
    - GTMSessionFetcher/Core (~> 1.1)
  - GoogleToolboxForMac/DebugUtils (2.2.2):
    - GoogleToolboxForMac/Defines (= 2.2.2)
  - GoogleToolboxForMac/Defines (2.2.2)
  - "GoogleToolboxForMac/NSDictionary+URLArguments (2.2.2)":
    - GoogleToolboxForMac/DebugUtils (= 2.2.2)
    - GoogleToolboxForMac/Defines (= 2.2.2)
    - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.2)"
  - "GoogleToolboxForMac/NSString+URLArguments (2.2.2)"
  - GoogleUtilities/AppDelegateSwizzler (6.3.1):
    - GoogleUtilities/Environment
    - GoogleUtilities/Logger
    - GoogleUtilities/Network
  - GoogleUtilities/Environment (6.3.1)
  - GoogleUtilities/Logger (6.3.1):
    - GoogleUtilities/Environment
  - GoogleUtilities/MethodSwizzler (6.3.1):
    - GoogleUtilities/Logger
  - GoogleUtilities/Network (6.3.1):
    - GoogleUtilities/Logger
    - "GoogleUtilities/NSData+zlib"
    - GoogleUtilities/Reachability
  - "GoogleUtilities/NSData+zlib (6.3.1)"
  - GoogleUtilities/Reachability (6.3.1):
    - GoogleUtilities/Logger
  - GoogleUtilities/UserDefaults (6.3.1):
    - GoogleUtilities/Logger
  - GTMOAuth2 (1.1.6):
    - GTMSessionFetcher (~> 1.1)
  - GTMSessionFetcher (1.3.0):
    - GTMSessionFetcher/Full (= 1.3.0)
  - GTMSessionFetcher/Core (1.3.0)
  - GTMSessionFetcher/Full (1.3.0):
    - GTMSessionFetcher/Core (= 1.3.0)
  - InputBarAccessoryView (4.2.2)
  - Instructions (1.2.0)
  - IQKeyboardManagerSwift (6.4.2)
  - Kingfisher (4.10.1)
  - KMPlaceholderTextView (1.4.0)
  - Marshal (1.2.7)
  - MessageKit (3.0.0):
    - InputBarAccessoryView (~> 4.2.2)
  - Mixpanel-swift (2.6.6):
    - Mixpanel-swift/Complete (= 2.6.6)
  - Mixpanel-swift/Complete (2.6.6)
  - nanopb (0.3.901):
    - nanopb/decode (= 0.3.901)
    - nanopb/encode (= 0.3.901)
  - nanopb/decode (0.3.901)
  - nanopb/encode (0.3.901)
  - PhoneNumberKit (2.5.0):
    - PhoneNumberKit/PhoneNumberKitCore (= 2.5.0)
    - PhoneNumberKit/UIKit (= 2.5.0)
  - PhoneNumberKit/PhoneNumberKitCore (2.5.0)
  - PhoneNumberKit/UIKit (2.5.0):
    - PhoneNumberKit/PhoneNumberKitCore
  - Protobuf (3.10.0)
  - SDWebImage (5.2.5):
    - SDWebImage/Core (= 5.2.5)
  - SDWebImage/Core (5.2.5)
  - Shimmer (1.0.2)
  - SkyFloatingLabelTextField (3.7.0)
  - SlideMenuControllerSwift (4.0.0)
  - Socket.IO-Client-Swift (13.3.1):
    - Starscream (~> 3.0.2)
  - Starscream (3.0.6)
  - SVProgressHUD (2.2.5)
  - SwiftDate (6.0.3)
  - UIScrollView-InfiniteScroll (1.1.0)
  - Validator (3.2.1)

DEPENDENCIES:
  - Adjust (= 4.18.3)
  - Alamofire (= 4.7.3)
  - Amplitude-iOS (= 4.0.4)
  - AnimatedCollectionViewLayout (= 0.4.0)
  - Appboy-iOS-SDK (= 3.20.1)
  - Cosmos (= 17.0.0)
  - Crashlytics (= 3.11)
  - Fabric (= 1.8)
  - FBSDKLoginKit/Swift (= 5.8.0)
  - Firebase
  - Firebase/Core (= 6.11.0)
  - Firebase/Messaging (= 6.11.0)
  - FormTextField (= 2.0.1)
  - GoogleMaps (= 3.5.0)
  - GoogleSignIn (= 4.1.2)
  - Instructions (= 1.2)
  - IQKeyboardManagerSwift (= 6.4.2)
  - Kingfisher (= 4.10.1)
  - KMPlaceholderTextView (= 1.4.0)
  - Marshal (= 1.2.7)
  - MessageKit (= 3.0.0)
  - Mixpanel-swift (= 2.6.6)
  - nanopb (= 0.3.901)
  - PhoneNumberKit (= 2.5.0)
  - Shimmer (= 1.0.2)
  - SkyFloatingLabelTextField (= 3.7.0)
  - SlideMenuControllerSwift (= 4.0.0)
  - Socket.IO-Client-Swift (= 13.3.1)
  - SVProgressHUD (= 2.2.5)
  - SwiftDate (= 6.0.3)
  - UIScrollView-InfiniteScroll (= 1.1.0)
  - Validator (= 3.2.1)

SPEC REPOS:
  trunk:
    - Adjust
    - Alamofire
    - Amplitude-iOS
    - AnimatedCollectionViewLayout
    - Appboy-iOS-SDK
    - Cosmos
    - Crashlytics
    - Fabric
    - FBSDKCoreKit
    - FBSDKLoginKit
    - Firebase
    - FirebaseAnalytics
    - FirebaseAnalyticsInterop
    - FirebaseCore
    - FirebaseCoreDiagnostics
    - FirebaseCoreDiagnosticsInterop
    - FirebaseInstanceID
    - FirebaseMessaging
    - FormTextField
    - GoogleAppMeasurement
    - GoogleDataTransport
    - GoogleDataTransportCCTSupport
    - GoogleMaps
    - GoogleSignIn
    - GoogleToolboxForMac
    - GoogleUtilities
    - GTMOAuth2
    - GTMSessionFetcher
    - InputBarAccessoryView
    - Instructions
    - IQKeyboardManagerSwift
    - Kingfisher
    - KMPlaceholderTextView
    - Marshal
    - MessageKit
    - Mixpanel-swift
    - nanopb
    - PhoneNumberKit
    - Protobuf
    - SDWebImage
    - Shimmer
    - SkyFloatingLabelTextField
    - SlideMenuControllerSwift
    - Socket.IO-Client-Swift
    - Starscream
    - SVProgressHUD
    - SwiftDate
    - UIScrollView-InfiniteScroll
    - Validator

SPEC CHECKSUMS:
  Adjust: fef133f0bf610d439953b50306372c68c625d7e9
  Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568
  Amplitude-iOS: 2ad4d7270c99186236c1272a3a9425463b1ae1a7
  AnimatedCollectionViewLayout: f0295119f94d8492fc6ac39e2ced64a471b12699
  Appboy-iOS-SDK: 98c00597dafd00e3db6141e73e872b649fb8d7dd
  Cosmos: 309e489f21ffc91a1eeecfebef7f817cd2fcfba6
  Crashlytics: 1448070c1d2731ab71ea7c3faf84ac0f69657287
  Fabric: 4ac1cdfef3004ccd83ce0959b91eda8a6e37df72
  FBSDKCoreKit: e7dcac0aabcfb09d0166998edd95fe3b05a0ce5d
  FBSDKLoginKit: 1b0cf04df0370b37404213157b060d6666ede814
  Firebase: bc9cfc7a96c73268656d5aaab453ff1b4b530e0e
  FirebaseAnalytics: 0e3ecff2c5d86070f7d4325e21f1edabfbd558dc
  FirebaseAnalyticsInterop: d48b6ab67bcf016a05e55b71fc39c61c0cb6b7f3
  FirebaseCore: beeff42c07c30ea94702471d99db2089b594fbbd
  FirebaseCoreDiagnostics: af29e43048607588c050889d19204f4d7b758c9f
  FirebaseCoreDiagnosticsInterop: 6829da2b8d1fc795ff1bd99df751d3788035d2cb
  FirebaseInstanceID: d0eafcd8bdbd3447cd694594734078c3e3e77d8b
  FirebaseMessaging: 5ab57080c83bc98c9961412e1dab379f4193d02a
  FormTextField: 061cd39ee77d5fb3d87b2e5a00728e2c874b3904
  GoogleAppMeasurement: 434cc7be25e71dc04b8d0e3079125127b330e84a
  GoogleDataTransport: 166f9b9f82cbf60a204e8fe2daa9db3e3ec1fb15
  GoogleDataTransportCCTSupport: f6ab1962e9dc05ab1fb938b795e5b310209edeec
  GoogleMaps: 32ca02de09de357a10ac773f2c70f1986751392d
  GoogleSignIn: d9ef55b10f0aa401a5de2747f59b725e4b9732ac
  GoogleToolboxForMac: 800648f8b3127618c1b59c7f97684427630c5ea3
  GoogleUtilities: f895fde57977df4e0233edda0dbeac490e3703b6
  GTMOAuth2: e8b6512c896235149df975c41d9a36c868ab7fba
  GTMSessionFetcher: 43b8b64263023d4f32caa0b40f4c8bfa3c5f36d8
  InputBarAccessoryView: 2b937602598e2fab3149f37f51dd7ad795653812
  Instructions: 763c2452bd78e05d8f969a21c1cbc3c07deef33a
  IQKeyboardManagerSwift: 79a3ec200dfb41cb66a89b8575417b5378107c5d
  Kingfisher: c148cd7b47ebde9989f6bc7c27dcaa79d81279a0
  KMPlaceholderTextView: 2206c3df39979e9396e2d96fa9f427a8951121b0
  Marshal: ef480864a6af10a63f67be7e55bb5d8fe67a16d9
  MessageKit: e892a9ca49ebe6d82684d3a93ad84021fa23e2c6
  Mixpanel-swift: 39c6c0331336d7d0d5ded8936db7c96955d5c11b
  nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48
  PhoneNumberKit: 32a1cd1e0aa9e950feb01886a22fd7386b8cf903
  Protobuf: a4dc852ad69c027ca2166ed287b856697814375b
  SDWebImage: 4eabf2fa6695c95c47724214417a9c036c965e4a
  Shimmer: c5374be1c2b0c9e292fb05b339a513cf291cac86
  SkyFloatingLabelTextField: 4b46db0ab1ccde0919cded29c656e6b4805eda04
  SlideMenuControllerSwift: 021d6318201c53d4d4d3710517d43d6c556c7dd0
  Socket.IO-Client-Swift: 79f8f85fa44881838175a20f9bd2c32bef2c9d37
  Starscream: ef3ece99d765eeccb67de105bfa143f929026cf5
  SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6
  SwiftDate: 8d4f14bf1ef68e95094511504856547bf9e3e1a6
  UIScrollView-InfiniteScroll: 3ef456bcbe759c19f510a383cff96e6647c98c98
  Validator: 80a6f567220c962dfd2d9928ae98a8c1d164f6f4

PODFILE CHECKSUM: 52442bbbe42bd9722f959cf923ffad330fde0e6f

COCOAPODS: 1.8.4

How many of your users are encountering this? Is it reproducible? I'm fairly confident this a low-probability crash occurring on a resource constrained phone. Soon, I'll complete a refactor that gets rid of this code, but that might be a month or so away.

I believe this is only impacting a very small number of users.

How many of your users are encountering this? Is it reproducible? I'm fairly confident this a low-probability occuring on a resource constrained phone. Soon, I'll complete a refactor that gets rid of this code, but that might be a month or so away.

I have 21 crashes in the last 7 days.

I'd ask for your patience while I work on removing NSCoding from the SDK, and I'll update this bug in the future when I push the changes (work is occurring at https://github.com/firebase/firebase-ios-sdk/tree/mph-gdtsqlite)

Test Case '-[GDTCORStorageTest testCrash]' started.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x00007fff513f778b libobjc.A.dylib`objc_msgSend + 11
    frame #1: 0x00007fff2572e0ad Foundation`_encodeObject + 190
    frame #2: 0x00007fff257f9cbe Foundation`-[NSOrderedSet(NSOrderedSet) encodeWithCoder:] + 316
    frame #3: 0x00007fff2572e48e Foundation`_encodeObject + 1183
  * frame #4: 0x000000010d00cd09 GoogleDataTransport-iOS-Unit-Tests-Unit`-[GDTCORStorage encodeWithCoder:](self=0x00007fea8024c640, _cmd="encodeWithCoder:", aCoder=0x00007fea7e43f950) at GDTCORStorage.m:332:5

Test case:

- (void)testCrash {
    NSInteger index = 1;
    do {
        NSString *mappingID = [NSString stringWithFormat:@"%ld", index];
        NSString *testString = [NSString stringWithFormat:@"testString %ld", index];
        GDTCOREvent *event = [[GDTCOREvent alloc] initWithMappingID:mappingID target:target];
        event.dataObjectTransportBytes = [testString dataUsingEncoding:NSUTF8StringEncoding];
        event.clockSnapshot = [GDTCORClock snapshot];
        XCTestExpectation *writtenExpectation = [self expectationWithDescription:@"event written"];
        XCTAssertNoThrow([[GDTCORStorage sharedInstance] storeEvent:event
                                                         onComplete:^(BOOL wasWritten, NSError *error) {
            XCTAssertTrue(wasWritten);
            [writtenExpectation fulfill];
        }]);
        [self waitForExpectationsWithTimeout:10 handler:nil];
        if (index % 5 == 0) {
            [[GDTCORStorage sharedInstance] removeEvents:[GDTCORStorage sharedInstance].storedEvents.set];
        }
        index += 1;
        [NSNotificationCenter.defaultCenter postNotificationName:UIApplicationWillTerminateNotification object:nil];

        if (index > 10000) {
            break;
        }
    } while (true);
}

All write access to GDTCORStorage->__targetToEventSet is done via _storageQueue. But in appWillTerminate you're accessing __targetToEventSet from the main thread, which is probably causing the crash if at the same time __targetToEventSet is being written from _storageQueue.

Doh, I was missing a dispatch_sync in appWillTerminate. Thanks for the test case, I'll include it in a PR shortly. Double checked: all the other singletons have dispatch_syncs in them to finish work.

Was this page helpful?
0 / 5 - 0 ratings