tchapgouv / tchap-android

A matrix client for Android.
https://play.google.com/store/apps/details?id=fr.gouv.tchap.a
Apache License 2.0
20 stars 7 forks source link

Restore rust crypto migration #1013

Closed yostyle closed 7 months ago

yostyle commented 7 months ago

Type of change

Content

Motivation and context

the app crashes during rust crypto migration.

ACRA caught a OpenStore for fr.gouv.tchap.a
org.matrix.rustcomponents.sdk.crypto.CryptoStoreException$OpenStore: Failed to open the store
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeCryptoStoreError.read(matrix_sdk_crypto_ffi.kt:9)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeCryptoStoreError.read(matrix_sdk_crypto_ffi.kt:1)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverter$DefaultImpls.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:13)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterRustBuffer$DefaultImpls.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:6)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeCryptoStoreError.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:2)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeCryptoStoreError.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:1)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterRustBuffer$DefaultImpls.lift(matrix_sdk_crypto_ffi.kt:6)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeCryptoStoreError.lift(matrix_sdk_crypto_ffi.kt:3)
    at org.matrix.rustcomponents.sdk.crypto.CryptoStoreException$ErrorHandler.lift(matrix_sdk_crypto_ffi.kt:3)
    at org.matrix.rustcomponents.sdk.crypto.CryptoStoreException$ErrorHandler.lift(matrix_sdk_crypto_ffi.kt:1)
    at org.matrix.rustcomponents.sdk.crypto.Matrix_sdk_crypto_ffiKt.checkCallStatus(matrix_sdk_crypto_ffi.kt:75)
    at org.matrix.rustcomponents.sdk.crypto.OlmMachine.<init>(matrix_sdk_crypto_ffi.kt:5)
    at org.matrix.android.sdk.internal.crypto.OlmMachine.<init>(OlmMachine.kt:100)
    at org.matrix.android.sdk.internal.crypto.OlmMachine_Factory.newInstance(OlmMachine_Factory.java:29)
    at org.matrix.android.sdk.internal.crypto.OlmMachine_Factory.get(OlmMachine_Factory.java:2)
    at org.matrix.android.sdk.internal.crypto.OlmMachine_Factory.get(OlmMachine_Factory.java:1)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:14)
    at dagger.internal.DelegateFactory.get(DelegateFactory.java:5)
    at org.matrix.android.sdk.internal.crypto.DecryptRoomEventUseCase_Factory.get(DecryptRoomEventUseCase_Factory.java:2)
    at org.matrix.android.sdk.internal.crypto.DecryptRoomEventUseCase_Factory.get(DecryptRoomEventUseCase_Factory.java:1)
    at org.matrix.android.sdk.internal.crypto.EventDecryptor_Factory.get(EventDecryptor_Factory.java:2)
    at org.matrix.android.sdk.internal.crypto.EventDecryptor_Factory.get(EventDecryptor_Factory.java:1)
    at org.matrix.android.sdk.internal.session.room.event.DefaultFilterAndStoreEventsTask_Factory.get(DefaultFilterAndStoreEventsTask_Factory.java:2)
    at org.matrix.android.sdk.internal.session.room.event.DefaultFilterAndStoreEventsTask_Factory.get(DefaultFilterAndStoreEventsTask_Factory.java:1)
    at org.matrix.android.sdk.internal.session.room.relation.poll.DefaultFetchPollResponseEventsTask_Factory.get(DefaultFetchPollResponseEventsTask_Factory.java:2)
    at org.matrix.android.sdk.internal.session.room.relation.poll.DefaultFetchPollResponseEventsTask_Factory.get(DefaultFetchPollResponseEventsTask_Factory.java:1)
    at org.matrix.android.sdk.internal.session.room.aggregation.poll.DefaultPollAggregationProcessor_Factory.get(DefaultPollAggregationProcessor_Factory.java:2)
    at org.matrix.android.sdk.internal.session.room.aggregation.poll.DefaultPollAggregationProcessor_Factory.get(DefaultPollAggregationProcessor_Factory.java:1)
    at org.matrix.android.sdk.internal.session.room.EventRelationsAggregationProcessor_Factory.get(EventRelationsAggregationProcessor_Factory.java:2)
    at org.matrix.android.sdk.internal.session.room.EventRelationsAggregationProcessor_Factory.get(EventRelationsAggregationProcessor_Factory.java:1)
    at dagger.internal.SetFactory.get(SetFactory.java:11)
    at dagger.internal.SetFactory.get(SetFactory.java:1)
    at org.matrix.android.sdk.internal.database.EventInsertLiveObserver_Factory.get(EventInsertLiveObserver_Factory.java:2)
    at org.matrix.android.sdk.internal.database.EventInsertLiveObserver_Factory.get(EventInsertLiveObserver_Factory.java:1)
    at dagger.internal.SetFactory.get(SetFactory.java:11)
    at dagger.internal.SetFactory.get(SetFactory.java:1)
    at org.matrix.android.sdk.internal.session.DefaultSession_Factory.get(DefaultSession_Factory.java:2)
    at org.matrix.android.sdk.internal.session.DefaultSession_Factory.get(DefaultSession_Factory.java:1)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:14)
    at dagger.internal.DelegateFactory.get(DelegateFactory.java:5)
    at org.matrix.android.sdk.internal.session.DaggerSessionComponent$SessionComponentImpl.session(DaggerSessionComponent.java:3)
    at org.matrix.android.sdk.internal.SessionManager.getOrCreateSession(SessionManager.kt:10)
    at org.matrix.android.sdk.internal.SessionManager.getLastSession(SessionManager.kt:9)
    at org.matrix.android.sdk.internal.auth.DefaultAuthenticationService.getLastAuthenticatedSession(DefaultAuthenticationService.kt:3)
    at im.vector.app.core.di.SessionInitializer.tryInitialize(SessionInitializer.kt:109)
    at im.vector.app.core.di.ActiveSessionHolder.getOrInitializeSession(ActiveSessionHolder.kt:23)
    at im.vector.app.features.start.StartAppViewModel.eagerlyInitializeSession(StartAppViewModel.kt:3)
    at im.vector.app.features.start.StartAppViewModel.access$eagerlyInitializeSession(StartAppViewModel.kt:1)
    at im.vector.app.features.start.StartAppViewModel$handleStartApp$1.invokeSuspend(StartAppViewModel.kt:29)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:124)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:4)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:3)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:15)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:29)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@63e5d80, Dispatchers.IO]
ACRA caught a ExtractMigrationDataFailure for fr.gouv.tchap.a
ExtractMigrationDataFailure(cause=org.matrix.rustcomponents.sdk.crypto.MigrationException$Generic: errorMessage=Failed to initialize the store cipher)
    at org.matrix.android.sdk.internal.crypto.store.db.migration.rust.ExtractMigrationDataUseCase.extractData(ExtractMigrationDataUseCase.kt:18)
    at org.matrix.android.sdk.internal.session.MigrateEAtoEROperation.dynamicExecute(MigrateEAtoEROperation.kt:42)
    at org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo022.doMigrate(MigrateCryptoTo022.kt:21)
    at org.matrix.android.sdk.internal.util.database.RealmMigrator.perform(RealmMigrator.kt:49)
    at org.matrix.android.sdk.internal.crypto.store.db.RealmCryptoStoreMigration.doMigrate(RealmCryptoStoreMigration.kt:321)
    at org.matrix.android.sdk.internal.util.database.MatrixRealmMigration.migrate(MatrixRealmMigration.kt:40)
    at io.realm.BaseRealm$6.onMigrationNeeded(BaseRealm.java:9)
    at io.realm.internal.OsSharedRealm.runMigrationCallback(OsSharedRealm.java:16)
    at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)
    at io.realm.internal.OsSharedRealm.<init>(OsSharedRealm.java:9)
    at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:5)
    at io.realm.BaseRealm.<init>(BaseRealm.java:17)
    at io.realm.BaseRealm.<init>(BaseRealm.java:30)
    at io.realm.Realm.<init>(Realm.java:5)
    at io.realm.Realm.createInstance(Realm.java:1)
    at io.realm.RealmCache.createInstance(RealmCache.java:5)
    at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:93)
    at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:2)
    at io.realm.Realm.getInstance(Realm.java:5)
    at org.matrix.android.sdk.internal.crypto.store.db.HelperKt.doRealmTransaction(Helper.kt:20)
    at org.matrix.android.sdk.internal.crypto.store.RustCryptoStore.<init>(RustCryptoStore.kt:60)
    at org.matrix.android.sdk.internal.crypto.store.RustCryptoStore_Factory.newInstance(RustCryptoStore_Factory.java:11)
    at org.matrix.android.sdk.internal.crypto.store.RustCryptoStore_Factory.get(RustCryptoStore_Factory.java:2)
    at org.matrix.android.sdk.internal.crypto.store.RustCryptoStore_Factory.get(RustCryptoStore_Factory.java:1)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:14)
    at org.matrix.android.sdk.internal.crypto.RustCryptoService_Factory.get(RustCryptoService_Factory.java:2)
    at org.matrix.android.sdk.internal.crypto.RustCryptoService_Factory.get(RustCryptoService_Factory.java:1)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:14)
    at dagger.internal.DelegateFactory.get(DelegateFactory.java:5)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:14)
    at org.matrix.android.sdk.internal.session.room.timeline.RoomSummaryEventDecryptor$1.invokeSuspend(RoomSummaryEventDecryptor.kt:46)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:124)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.os.HandlerThread.run(HandlerThread.java:67)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineName(RoomSummaryDecryptor), StandaloneCoroutine{Cancelling}@546435f, Handler (android.os.Handler) {1ebd1ac}]
Caused by: org.matrix.rustcomponents.sdk.crypto.MigrationException$Generic: errorMessage=Failed to initialize the store cipher
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeMigrationError.read(matrix_sdk_crypto_ffi.kt:5)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeMigrationError.read(matrix_sdk_crypto_ffi.kt:1)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverter$DefaultImpls.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:13)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterRustBuffer$DefaultImpls.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:6)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeMigrationError.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:2)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeMigrationError.liftFromRustBuffer(matrix_sdk_crypto_ffi.kt:1)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterRustBuffer$DefaultImpls.lift(matrix_sdk_crypto_ffi.kt:6)
    at org.matrix.rustcomponents.sdk.crypto.FfiConverterTypeMigrationError.lift(matrix_sdk_crypto_ffi.kt:3)
    at org.matrix.rustcomponents.sdk.crypto.MigrationException$ErrorHandler.lift(matrix_sdk_crypto_ffi.kt:3)
    at org.matrix.rustcomponents.sdk.crypto.MigrationException$ErrorHandler.lift(matrix_sdk_crypto_ffi.kt:1)
    at org.matrix.rustcomponents.sdk.crypto.Matrix_sdk_crypto_ffiKt.checkCallStatus(matrix_sdk_crypto_ffi.kt:75)
    at org.matrix.rustcomponents.sdk.crypto.Matrix_sdk_crypto_ffiKt.migrate(matrix_sdk_crypto_ffi.kt:63)
    at org.matrix.android.sdk.internal.session.MigrateEAtoEROperation$dynamicExecute$1.invoke(MigrateEAtoEROperation.kt:2)
    at org.matrix.android.sdk.internal.session.MigrateEAtoEROperation$dynamicExecute$1.invoke(MigrateEAtoEROperation.kt:1)
    at org.matrix.android.sdk.internal.crypto.store.db.migration.rust.ExtractMigrationDataUseCase.extract(ExtractMigrationDataUseCase.kt:14)
    at org.matrix.android.sdk.internal.crypto.store.db.migration.rust.ExtractMigrationDataUseCase.extractData(ExtractMigrationDataUseCase.kt:11)
    ... 36 more

Screenshots / GIFs

Tests

Tested devices

Checklist

tchap-danger-bot[bot] commented 7 months ago
Warnings
:warning: Please add a changelog. See instructions [here](https://github.com/element-hq/element-android/blob/develop/CONTRIBUTING.md#changelog)
:warning: Please add a reviewer to your PR.

Generated by :no_entry_sign: dangerJS against b8790eb0b3f67e7e9638f248cb69a8bf7c028f07

tchap-danger-bot[bot] commented 7 months ago
Warnings
:warning: Please add a reviewer to your PR.

Generated by :no_entry_sign: dangerJS against 81705e997623bffa934c4e449e464c2c5d1b3a01

tchap-danger-bot[bot] commented 7 months ago
Warnings
:warning: Please add a reviewer to your PR.

Generated by :no_entry_sign: dangerJS against 1a6deb8d29e42c7b13c3e0dd23d6c3858ae5c6f9

tchap-danger-bot[bot] commented 7 months ago
Warnings
:warning: Please add a reviewer to your PR.

Generated by :no_entry_sign: dangerJS against 8bb8b862f6448e5c2d0bf02d1d4e1ad8d883dea8