iterable-android-sdk icon indicating copy to clipboard operation
iterable-android-sdk copied to clipboard

Started Seeing Crashes after upgrading to 3.4.10

Open AurimasSikorskas opened this issue 2 years ago • 4 comments

Started seeing these crashes after upgrading to iterable SDK to the 3.4.10. Both are thrown when initialising the IterableAPI component. it affects about 0.03% of users that updated to the new version (the version with updated SDK was released on December 1st)

first one ~11 users, ~28 total crashes mostly Galaxy S22 and Galaxy S22 Ultra devices, and few Pixel 6/7 image

Caused by com.google.crypto.tink.shaded.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
       at com.google.crypto.tink.shaded.protobuf.GeneratedMessageLite.parsePartialFrom(GeneratedMessageLite.java:1566)
       at com.google.crypto.tink.shaded.protobuf.GeneratedMessageLite.parseFrom(GeneratedMessageLite.java:1664)
       at com.google.crypto.tink.proto.Keyset.parseFrom(Keyset.java:957)
       at com.google.crypto.tink.integration.android.SharedPrefKeysetReader.read(SharedPrefKeysetReader.java:84)
       at com.google.crypto.tink.CleartextKeysetHandle.read(CleartextKeysetHandle.java:58)
       at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.read(AndroidKeysetManager.java:328)
       at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readOrGenerateNewKeyset(AndroidKeysetManager.java:287)
       at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:238)
       at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:123)
       at com.iterable.iterableapi.IterableKeychain.<init>(IterableKeychain.kt:20)
       at com.iterable.iterableapi.IterableApi.getKeychain(IterableApi.java:138)
       at com.iterable.iterableapi.IterableApi.migrateAuthDataFromSharedPrefsToKeychain(IterableApi.java:392)
       at com.iterable.iterableapi.IterableApi.updateSDKVersion(IterableApi.java:380)
       at com.iterable.iterableapi.IterableApi.initialize(IterableApi.java:556)
       at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:233)
       at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:229)
       at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:54)
       at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
       at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
       at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:51)
       at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:20)
       at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:51)
       at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:111)
       at org.koin.core.scope.Scope.resolveValue(Scope.kt:255)
       at org.koin.core.scope.Scope.resolveInstance(Scope.kt:242)
       at org.koin.core.scope.Scope.get(Scope.kt:205)
       at org.koin.core.scope.Scope.get$default(Scope.java:131)
       at app.dogo.com.dogo_android.service.App.onCreate(App.kt:150)
       at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1211)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7588)
       at android.app.ActivityThread.access$1700(ActivityThread.java:315)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2286)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.app.ActivityThread.main(ActivityThread.java:8751)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

Second ~2 users, ~10 total crashes all in the background

Caused by java.security.KeyStoreException: the master key android-keystore://_androidx_security_master_key_ exists but is unusable
       at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readOrGenerateNewMasterKey(AndroidKeysetManager.java:275)
       at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:236)
       at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:123)
       at com.iterable.iterableapi.IterableKeychain.<init>(IterableKeychain.kt:20)
       at com.iterable.iterableapi.IterableApi.getKeychain(IterableApi.java:138)
       at com.iterable.iterableapi.IterableApi.migrateAuthDataFromSharedPrefsToKeychain(IterableApi.java:392)
       at com.iterable.iterableapi.IterableApi.updateSDKVersion(IterableApi.java:380)
       at com.iterable.iterableapi.IterableApi.initialize(IterableApi.java:556)
       at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:233)
       at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:229)
       at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:54)
       at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
       at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
       at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:51)
       at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:20)
       at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:51)
       at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:111)
       at org.koin.core.scope.Scope.resolveValue(Scope.kt:255)
       at org.koin.core.scope.Scope.resolveInstance(Scope.kt:242)
       at org.koin.core.scope.Scope.get(Scope.kt:205)
       at org.koin.core.scope.Scope.get$default(Scope.java:131)
       at app.dogo.com.dogo_android.service.App.onCreate(App.kt:150)
       at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5579)
       at android.app.ActivityThread.-wrap2(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1671)
       at android.os.Handler.dispatchMessage(Handler.java:110)
       at android.os.Looper.loop(Looper.java:203)
       at android.app.ActivityThread.main(ActivityThread.java:6327)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

AurimasSikorskas avatar Dec 05 '22 14:12 AurimasSikorskas

Thanks for reporting this issue @AurimasSikorskas! Will have it looked soon.

Any specifics/settings with these devices or profiles? Did all Pixel 6/7 and Samsung 22s had problems or just few of them? Please update if you get any pointers to repro the scenario.

Ayyanchira avatar Dec 05 '22 18:12 Ayyanchira

hey @Ayyanchira ,

So we were not able to reproduce it on any of our devices, and none of the affected devices had their user ids tracked so can't get more info about them.

And I just noticed that while most crashes had empty logs in crash analytics, few of them had a single os_update event.

it's an auto-tracked firebase analytics event, it's tracked when the device operating system is updated to a new version.

AurimasSikorskas avatar Dec 05 '22 18:12 AurimasSikorskas

Seeing same issue in S21-5G/ Google Pixel4. Once you clear app cache it works without any issue(not a fix). Common pattern of crash observed is in Android13

Atul-RB avatar Dec 08 '22 05:12 Atul-RB

Thank you for reporting the crashes. We have updated the 3.4.10 release tag with warning. We're investigating the issue. In the meantime, please test thoroughly. If you see crashes, revert to version 3.4.9

Ayyanchira avatar Dec 09 '22 18:12 Ayyanchira

Sounds like this was fixed in release 3.4.11 https://github.com/Iterable/iterable-android-sdk/releases/tag/3.4.11

To work around a known Android issue that can cause crashes when creating EncryptedSharedPreferences, we've upgraded androidx.security.crypto from version 1.0.0 to 1.1.0-alpha04. When EncryptedSharedPreferences cannot be created, the SDK now uses SharedPreferences (unencrypted).

fegan104 avatar Feb 09 '24 15:02 fegan104

Yes, can validate it, we updated our app a few months back to the latest version, and we haven't seen any crashes.

AurimasSikorskas avatar Feb 12 '24 08:02 AurimasSikorskas