firebase-ios-sdk: iOS 10 : Crashes in RCNConfigDBManager and FIRIAMActionURLFollower

[REQUIRED] Step 1: Describe your environment

  • Xcode version: 11.4
  • Firebase SDK version: 6.21.0
  • Firebase Component: FirebaseRemoteConfig
  • Component version: 4.4.7
  • Installation method: CocoaPods

[REQUIRED] Step 2: Describe the problem

Steps to reproduce:

We’ve recently updated from version 6.17.0 to 6.21.0 and now we are getting crashes on iOS 10 (only). It seems to be related to RemoteConfig. We didn’t change anything in the code that uses remote config between these two releases.

The crashes are :

Plantage : com.apple.main-thread
EXC_BAD_ACCESS KERN_PROTECTION_FAILURE 0x00000000382f4000

Here are some stack traces :

Stacktrace
FIRIAMActionURLFollower.m line 77
__44+[FIRIAMActionURLFollower actionURLFollower]_block_invoke
```
com.apple.root.default-qos
0  ???                            0x1c3de554 (Manquant)
1  ???                            0x1c2eea9d (Manquant)
2  ???                            0x1c2eeb9b (Manquant)
3  ???                            0x1c2ecb39 (Manquant)
4  ***                           0x40eae7 __44+[FIRIAMActionURLFollower actionURLFollower]_block_invoke + 77 (FIRIAMActionURLFollower.m:77)
5  ???                            0x1c2de253 (Manquant)
6  ***                           0x40e7f3 +[FIRIAMActionURLFollower actionURLFollower] + 84 (once.h:84)
7  ***                           0x429af9 -[FIRIAMRuntimeManager internalStartRuntimeWithSDKSettings:] + 327 (FIRIAMRuntimeManager.m:327)
8  ???                            0x1c2dd797 (Manquant)
9  ???                            0x1c2eab1d (Manquant)
10 ???                            0x1c2ec1b5 (Manquant)
11 ???                            0x1c2ec00f (Manquant)
12 ???                            0x1c49287d (Manquant)
13 ???                            0x1c49245c (Manquant)
```

RCNConfigDBManager.m line 450 -[RCNConfigDBManager insertMainTableWithValues:fromSource:]

com.google.GoogleConfigService.database
0  ???                            0x1c3ca2fc (Manquant)
1  ???                            0x1d0b6cd1 (Manquant)
2  ???                            0x1d0bf23b (Manquant)
3  ???                            0x1d0b67fd (Manquant)
4  ???                            0x1d0a7eb7 (Manquant)
5  ???                            0x1d0818fb (Manquant)
6  ???                            0x1d0a2e17 (Manquant)
7  ???                            0x1d0965ab (Manquant)
8  ***                           0x169f717 -[RCNConfigDBManager insertMainTableWithValues:fromSource:] + 450 (RCNConfigDBManager.m:450)
9  ***                           0x169f499 __77-[RCNConfigDBManager insertMainTableWithValues:fromSource:completionHandler:]_block_invoke + 401 (RCNConfigDBManager.m:401)
10 ???                            0x1c2dd797 (Manquant)
11 ???                            0x1c2ea59d (Manquant)
12 ???                            0x1c2e0b71 (Manquant)
13 ???                            0x1c2eaa1f (Manquant)
14 ???                            0x1c2ec1b5 (Manquant)
15 ???                            0x1c2ec00f (Manquant)
16 ???                            0x1c49287d (Manquant)
17 ???                            0x1c49245c (Manquant)

RCNConfigDBManager.m line 979 -[RCNConfigDBManager executeQuery:withParams:]

com.google.GoogleConfigService.database
0  ???                            0x1d5762fc (Manquant)
1  ???                            0x1e262cd1 (Manquant)
2  ???                            0x1e26b23b (Manquant)
3  ???                            0x1e2627fd (Manquant)
4  ???                            0x1e253eb7 (Manquant)
5  ???                            0x1e22d8fb (Manquant)
6  ???                            0x1e24ee17 (Manquant)
7  ???                            0x1e2425ab (Manquant)
8  ***                           0x1627a23 -[RCNConfigDBManager executeQuery:withParams:] + 979 (RCNConfigDBManager.m:979)
9  ***                           0x16276cf __89-[RCNConfigDBManager deleteRecordFromMainTableWithNamespace:bundleIdentifier:fromSource:]_block_invoke + 920 (RCNConfigDBManager.m:920)
10 ???                            0x1d489797 (Manquant)
11 ???                            0x1d49659d (Manquant)
12 ???                            0x1d48cb71 (Manquant)
13 ???                            0x1d496a1f (Manquant)
14 ???                            0x1d4981b5 (Manquant)
15 ???                            0x1d49800f (Manquant)
16 ???                            0x1d63e87d (Manquant)
17 ???                            0x1d63e45c (Manquant)

GULLogger.m line 173 __GULLogBasic_block_invoke

GULLoggingClientQueue
0  ???                            0x1d43fcc2 (Manquant)
1  ???                            0x1d366375 (Manquant)
2  ???                            0x1d440c79 (Manquant)
3  ???                            0x1d440b8d (Manquant)
4  ???                            0x1d2a8219 (Manquant)
5  GoogleUtilities                0x271bbb9 __GULLogBasic_block_invoke + 173 (GULLogger.m:173)
6  ???                            0x1d26d797 (Manquant)
7  ???                            0x1d27a59d (Manquant)
8  ???                            0x1d270b71 (Manquant)
9  ???                            0x1d27c1b5 (Manquant)
10 ???                            0x1d27c00f (Manquant)
11 ???                            0x1d42287d (Manquant)
12 ???                            0x1d42245c (Manquant)

RCNUserDefaultsManager.m line 199 -[RCNUserDefaultsManager instanceUserDefaults]

com.google.GoogleConfigService.FIRRemoteConfig
0  ???                            0x1afdd920 (Manquant)
1  ???                            0x1b092cc9 (Manquant)
2  ???                            0x1aa9ed95 (Manquant)
3  ???                            0x1aa9eb9f (Manquant)
4  ???                            0x1aa9eb65 (Manquant)
5  ???                            0x1aaa51af (Manquant)
6  ???                            0x1b7a442b (Manquant)
7  ???                            0x1b7c232d (Manquant)
8  ???                            0x1b0bc04f (Manquant)
9  ???                            0x1b7c2273 (Manquant)
10 ???                            0x1b7c2ab7 (Manquant)
11 ???                            0x1b84858d (Manquant)
12 ???                            0x1b7c2a77 (Manquant)
13 ???                            0x1b0a7305 (Manquant)
14 ???                            0x1b0a7327 (Manquant)
15 ???                            0x1b7c29db (Manquant)
16 ???                            0x1b7c25a5 (Manquant)
17 ???                            0x1b7c27a1 (Manquant)
18 ???                            0x1b7c2ec9 (Manquant)
19 ???                            0x1b7c17d5 (Manquant)
20 ???                            0x1b841407 (Manquant)
21 ???                            0x1b846d09 (Manquant)
22 ???                            0x1b7c41df (Manquant)
23 ???                            0x1b7c3b21 (Manquant)
24 ???                            0x1b7c40a1 (Manquant)
25 ???                            0x1b846c6d (Manquant)
26 ???                            0x1b849803 (Manquant)
27 ???                            0x1c071e11 (Manquant)
28 ???                            0x1c0713c9 (Manquant)
29 ***                           0x15e507d -[RCNUserDefaultsManager instanceUserDefaults] + 199 (RCNUserDefaultsManager.m:199)
30 ***                           0x15e4c81 -[RCNUserDefaultsManager lastFetchTime] + 124 (RCNUserDefaultsManager.m:124)
31 ***                           0x15e04a7 -[RCNConfigSettings hasMinimumFetchIntervalElapsed:] + 445 (RCNConfigSettings.m:445)
32 ***                           0x15e21d1 __70-[RCNConfigFetch fetchConfigWithExpirationDuration:completionHandler:]_block_invoke + 144 (RCNFetch.m:144)
33 ???                            0x1aedd797 (Manquant)
34 ???                            0x1aeea59d (Manquant)
35 ???                            0x1aee0b71 (Manquant)
36 ???                            0x1aeeaa1f (Manquant)
37 ???                            0x1aeec1b5 (Manquant)
38 ???                            0x1aeec00f (Manquant)
39 ???                            0x1b09287d (Manquant)
40 ???                            0x1b09245c (Manquant)

ANSUploader.m line 107 -[ANSUploader supportsBackgroundRequests]

io.answers.EventQueue :: NSOperation 0x16e42290 (QOS: BACKGROUND)
0  ???                            0x1b4ecdde (Manquant)
1  ***                           0x2e22fb -[ANSUploader supportsBackgroundRequests] + 107 (ANSUploader.m:107)
2  ***                           0x2e23d1 __70-[ANSUploader attemptToReconnectBackgroundSessionWithCompletionBlock:]_block_invoke + 113 (ANSUploader.m:113)
3  Foundation                     0x1cb7db01 <redacted> + 8
4  Foundation                     0x1cad3aef <redacted> + 146
5  Foundation                     0x1cac5fe7 <redacted> + 770
6  Foundation                     0x1cb7fd39 <redacted> + 190
7  ???                            0x1b93259d (Manquant)
8  ???                            0x1b928b71 (Manquant)
9  ???                            0x1b9341b5 (Manquant)
10 ???                            0x1b93400f (Manquant)
11 ???                            0x1bada87d (Manquant)
12 ???                            0x1bada45c (Manquant)

RCNConfigDBManager.m line 808 -[RCNConfigDBManager loadInternalMetadataTable]

com.google.perf.FPREventsQueue
0  ???                            0x1b226554 (Manquant)
1  ???                            0x1b136a9d (Manquant)
2  ???                            0x1b136b9b (Manquant)
3  ???                            0x1b134b39 (Manquant)
4  ***                           0x15e6d69 -[RCNConfigDBManager loadInternalMetadataTable] + 808 (RCNConfigDBManager.m:808)
5  ***                           0x15e8db7 -[RCNConfigSettings initWithDatabaseManager:namespace:firebaseAppName:googleAppID:] + 98 (RCNConfigSettings.m:98)
6  ***                           0x15e0321 -[FIRRemoteConfig initWithAppName:FIROptions:namespace:DBManager:configContent:analytics:] + 160 (FIRRemoteConfig.m:160)
7  ***                           0x15e2d61 -[FIRRemoteConfigComponent remoteConfigForNamespace:] + 73 (FIRRemoteConfigComponent.m:73)
8  ***                           0x15e00cf +[FIRRemoteConfig remoteConfigWithFIRNamespace:app:] + 117 (FIRRemoteConfig.m:117)
9  ***                           0x15866b5 __38+[FPRRemoteConfigFlags sharedInstance]_block_invoke + 23258805
10 ???                            0x1b125783 (Manquant)
11 ???                            0x1b126253 (Manquant)
12 ***                           0x1586661 +[FPRRemoteConfigFlags sharedInstance] + 23258721
13 ***                           0x1585869 -[FPRConfigurations setupRemoteConfigFlags] + 23255145
14 ***                           0x15857af -[FPRConfigurations update] + 23254959
15 ***                           0x1588fa1 __42-[FPRClient startWithConfiguration:error:]_block_invoke + 23269281
16 ???                            0x1b125797 (Manquant)
17 ???                            0x1b132339 (Manquant)
18 ???                            0x1b128b71 (Manquant)
19 ???                            0x1b132a1f (Manquant)
20 ???                            0x1b1341b5 (Manquant)
21 ???                            0x1b13400f (Manquant)
22 ???                            0x1b2da87d (Manquant)
23 ???                            0x1b2da45c (Manquant)

Relevant Code:

Basically, from func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool

We call :

  • FirebaseApp.configure()
  • Performance.sharedInstance().isInstrumentationEnabled = false
  • RemoteConfig.remoteConfig().setDefaults(fromPlist: “xxx”)
  • (void)fetchWithExpirationDuration:(NSTimeInterval)expirationDuration completionHandler:(nullable FIRRemoteConfigFetchCompletion) completionHandler;

The crashes occur at launch.

Thanks for your help !

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 3
  • Comments: 25 (9 by maintainers)

Most upvoted comments

There might be an Apple bug building applications with Xcode 11.4 for 32 bit devices. See the discussion at #5233.

Can you confirm that all crashes come from 32bit devices? Is building with Xcode 11.3.1 a workaround?

@dmandar For me too. I used 6.19.0 too and we had a regression (this crash) in this current version.

@dmandar Our last sdk version was 6.19.0, and it worked well.

@Cafielo what last previous version worked for you?