After upgrading one of our apps to target Android SDK 29 we are detecting in firebase crashlytics that around 0,5% of our users (we have +100k daily users) are having randomly this Crash, no matter the activity. All our activities extend AppCompatActivity, and the crash happens at "super.onCreate" so it's all related to internal Android code, not ours, we are not iterating or modifying any list. It happens mainly on Android 9 (>80% of occurrences). We suspect that the culprit is a bug on any of the Androidx dependencies. Has anybody had to deal with this rare crash too?
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.ui.activities.MyActivity}: java.util.ConcurrentModificationException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2925)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1818)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6762)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by java.util.ConcurrentModificationException
at androidx.collection.SimpleArrayMap.put(SimpleArrayMap.java:482)
at com.google.android.gms.measurement.internal.zzin.zza(zzin.java:108)
at com.google.android.gms.measurement.internal.zzid.onActivityCreated(zzid.java:11)
at android.app.Application.dispatchActivityCreated(Application.java:220)
at android.app.Activity.onCreate(Activity.java:1048)
at androidx.core.app.ComponentActivity.onCreate(ComponentActivity.java:81)
at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:154)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:312)
at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:106)
at com.myapp.ui.activities.MyActivity.onCreate(MyActivity.java:34)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2905)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1818)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6762)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
object Versions {
val compileSdk = 29
val minSdk = 21
val targetSdk = 29
val kotlin = "1.3.61"
val coroutines = "1.3.3"
val junit = "4.13"
val mockitoCore = "3.2.4"
val mockitoAndroid = "3.2.4"
val annotation = "1.0.1"
val testCore = "1.2.0"
val testExt = "1.1.1"
val testRunner = "1.2.0"
val espressoCore = "3.2.0"
val googleThruth = "0.42"
val multidex = "2.0.1"
val multidexInstrumentation = "2.0.0"
val workManager = "2.3.0"
val constraintLayout = "1.1.3"
val appCompat = "1.1.0"
val recyclerView = "1.1.0"
val material = "1.1.0-rc02"
val lifecycle = "2.2.0"
val rxjava2 = "2.2.17"
val rxAndroid2 = "2.1.1"
val rxKotlin2 = "2.4.0"
val materialProgress = "1.6.1"
val materialDialogs = "3.1.1"
val jodaTime = "2.10.5"
val gson = "2.8.6"
val subsamplingImageView = "3.10.0"
val koin = "2.0.1"
val playServicesAds = "18.3.0"
val playServicesMaps = "17.0.0"
val playServicesGcm = "17.0.0"
val playServicesIid = "17.0.0"
val playServicesAuth = "17.0.0"
val playServicesLocation = "17.0.0"
val playServicesBase = "17.1.0"
val mapUtils = "0.6.2"
val inAppBilling = "2.0.3"
val okHttp = "4.3.1"
val retrofit = "2.7.1"
val okIo = "2.4.3"
val keyboardVisibility = "2.3.0"
val crashlytics = "2.10.1"
val firebaseAnalytics = "17.2.2"
val firebaseAuth = "19.2.0"
val firebaseFirestore = "21.3.1"
val firebasePerf = "19.0.5"
val firebaseInAppMessagingDisplay = "19.0.3"
val firebaseConfig = "19.1.0"
val firebaseFunctions = "19.0.1"
val firebaseDatabase = "19.2.0"
val firebaseMessaging = "20.1.0"
val firebaseAppDistribution = "1.3.1"
}