duckduckgo/Android

[Bug] Site crash (too fast to report in-app)

2011 opened this issue · 5 comments

Describe the bug

The site https://www.dispostable.com/ crashes DuckDuckGo within seconds.

How to Reproduce

  1. Go to https://www.dispostable.com/.
  2. App will crash within ten seconds (even with no further input)

From the log:

[02-28 01:40:02.321 701:8676 I/ActivityManager]
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher bnds=[800,579][1066,990]} from uid 10011 on display 0

[02-28 01:40:02.374 701:8345 I/ActivityManager]
Start proc 14118:com.duckduckgo.mobile.android/u0a90 for activity com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher

[02-28 01:40:02.622 14118:14144 W/AndroidKeystoreAesGcm]
encountered a potentially transient KeyStore error, will wait and retry
javax.crypto.AEADBadTagException
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:517)
        at javax.crypto.Cipher.doFinal(Cipher.java:2114)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decryptInternal(AndroidKeystoreAesGcm.java:115)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decrypt(AndroidKeystoreAesGcm.java:97)
        at com.google.crypto.tink.KeysetHandle.decrypt(KeysetHandle.java:206)
        at com.google.crypto.tink.KeysetHandle.read(KeysetHandle.java:107)
        at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.read(AndroidKeysetManager.java:311)
        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:155)
        at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:120)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.encryptedPreferences(EmailEncryptedSharedPreferences.kt.kt:39)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.access$encryptedPreferences(EmailEncryptedSharedPreferences.kt.kt:29)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences$encryptedPreferences$2.invoke(EmailEncryptedSharedPreferences.kt.kt:34)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences$encryptedPreferences$2.invoke(EmailEncryptedSharedPreferences.kt.kt:34)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.getEncryptedPreferences(EmailEncryptedSharedPreferences.kt.kt:34)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.getEmailToken(EmailEncryptedSharedPreferences.kt.kt:59)
        at com.duckduckgo.app.email.AppEmailManager.isSignedIn(AppEmailManager.kt:71)
        at com.duckduckgo.app.email.AppEmailManager$1.invokeSuspend(AppEmailManager.kt:63)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: android.security.KeyStoreException: Signature/MAC verification failed
        at android.security.KeyStore.getKeyStoreException(KeyStore.java:666)
        at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
        at android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.doFinal(AndroidKeyStoreAuthenticatedAESCipherSpi.java:373)
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:506)
        ... 27 more

[02-28 01:40:02.638 14118:14144 W/AndroidKeysetManager]
cannot decrypt keyset: 
javax.crypto.AEADBadTagException
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:517)
        at javax.crypto.Cipher.doFinal(Cipher.java:2114)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decryptInternal(AndroidKeystoreAesGcm.java:115)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decrypt(AndroidKeystoreAesGcm.java:101)
        at com.google.crypto.tink.KeysetHandle.decrypt(KeysetHandle.java:206)
        at com.google.crypto.tink.KeysetHandle.read(KeysetHandle.java:107)
        at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.read(AndroidKeysetManager.java:311)
        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:155)
        at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:120)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.encryptedPreferences(EmailEncryptedSharedPreferences.kt.kt:39)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.access$encryptedPreferences(EmailEncryptedSharedPreferences.kt.kt:29)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences$encryptedPreferences$2.invoke(EmailEncryptedSharedPreferences.kt.kt:34)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences$encryptedPreferences$2.invoke(EmailEncryptedSharedPreferences.kt.kt:34)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.getEncryptedPreferences(EmailEncryptedSharedPreferences.kt.kt:34)
        at com.duckduckgo.app.email.db.EmailEncryptedSharedPreferences.getEmailToken(EmailEncryptedSharedPreferences.kt.kt:59)
        at com.duckduckgo.app.email.AppEmailManager.isSignedIn(AppEmailManager.kt:71)
        at com.duckduckgo.app.email.AppEmailManager$1.invokeSuspend(AppEmailManager.kt:63)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: android.security.KeyStoreException: Signature/MAC verification failed
        at android.security.KeyStore.getKeyStoreException(KeyStore.java:666)
        at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
        at android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.doFinal(AndroidKeyStoreAuthenticatedAESCipherSpi.java:373)
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:506)
        ... 27 more

[02-28 01:40:03.024 701:10303 I/ActivityManager]
START u0 {cmp=com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity (has extras)} from uid 10090 on display 0

[02-28 01:40:03.343 14118:14163 I/art]
  at android.webkit.CookieManager com.duckduckgo.cookies.impl.DefaultCookieManagerProvider.get() (DefaultCookieManagerProvider.kt:36)

[02-28 01:40:03.343 14118:14163 I/art]
  at void com.duckduckgo.cookies.impl.WebViewCookieManager.flush() (WebViewCookieManager.kt:88)

[02-28 01:40:03.343 14118:14163 I/art]
  at java.lang.Object com.duckduckgo.app.global.view.ClearPersonalDataAction$clearTabsAndAllDataAsync$2.invokeSuspend(java.lang.Object) (ClearPersonalDataAction.kt:94)

[02-28 01:40:03.343 14118:14163 I/art]
  at android.webkit.CookieManager com.duckduckgo.cookies.impl.DefaultCookieManagerProvider.get() (DefaultCookieManagerProvider.kt:36)

[02-28 01:40:03.343 14118:14163 I/art]
  at void com.duckduckgo.cookies.impl.WebViewCookieManager.flush() (WebViewCookieManager.kt:88)

[02-28 01:40:03.343 14118:14163 I/art]
  at java.lang.Object com.duckduckgo.app.global.view.ClearPersonalDataAction$clearTabsAndAllDataAsync$2.invokeSuspend(java.lang.Object) (ClearPersonalDataAction.kt:94)

[02-28 01:40:03.348 14118:14163 I/art]
  at android.webkit.CookieManager com.duckduckgo.cookies.impl.DefaultCookieManagerProvider.get() (DefaultCookieManagerProvider.kt:36)

[02-28 01:40:03.348 14118:14163 I/art]
  at void com.duckduckgo.cookies.impl.WebViewCookieManager.flush() (WebViewCookieManager.kt:88)

[02-28 01:40:03.348 14118:14163 I/art]
  at java.lang.Object com.duckduckgo.app.global.view.ClearPersonalDataAction$clearTabsAndAllDataAsync$2.invokeSuspend(java.lang.Object) (ClearPersonalDataAction.kt:94)

[02-28 01:40:03.348 14118:14163 I/art]
  at android.webkit.CookieManager com.duckduckgo.cookies.impl.DefaultCookieManagerProvider.get() (DefaultCookieManagerProvider.kt:36)

[02-28 01:40:03.348 14118:14163 I/art]
  at void com.duckduckgo.cookies.impl.WebViewCookieManager.flush() (WebViewCookieManager.kt:88)

[02-28 01:40:03.348 14118:14163 I/art]
  at java.lang.Object com.duckduckgo.app.global.view.ClearPersonalDataAction$clearTabsAndAllDataAsync$2.invokeSuspend(java.lang.Object) (ClearPersonalDataAction.kt:94)

[02-28 01:40:03.348 14118:14163 I/art]
  at android.webkit.CookieManager com.duckduckgo.cookies.impl.DefaultCookieManagerProvider.get() (DefaultCookieManagerProvider.kt:36)

[02-28 01:40:03.348 14118:14163 I/art]
  at void com.duckduckgo.cookies.impl.WebViewCookieManager.flush() (WebViewCookieManager.kt:88)

[02-28 01:40:03.348 14118:14163 I/art]
  at java.lang.Object com.duckduckgo.app.global.view.ClearPersonalDataAction$clearTabsAndAllDataAsync$2.invokeSuspend(java.lang.Object) (ClearPersonalDataAction.kt:94)

[02-28 01:40:03.348 14118:14163 I/art]
  at android.webkit.CookieManager com.duckduckgo.cookies.impl.DefaultCookieManagerProvider.get() (DefaultCookieManagerProvider.kt:36)

[02-28 01:40:03.348 14118:14163 I/art]
  at void com.duckduckgo.cookies.impl.WebViewCookieManager.flush() (WebViewCookieManager.kt:88)

[02-28 01:40:03.348 14118:14163 I/art]
  at java.lang.Object com.duckduckgo.app.global.view.ClearPersonalDataAction$clearTabsAndAllDataAsync$2.invokeSuspend(java.lang.Object) (ClearPersonalDataAction.kt:94)

[02-28 01:40:03.596 701:8802 I/WindowManager]
Destroying surface Surface(name=com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.WindowManagerService.tryStartExitingAnimation:3021 com.android.server.wm.WindowManagerService.relayoutWindow:2901 com.android.server.wm.Session.relayout:215 android.view.IWindowSession$Stub.onTransact:286 com.android.server.wm.Session.onTransact:136 

[02-28 01:40:03.620 14118:14190 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=792f0c22-0a32-4025-982a-16fb304cc56f, tags={ DATA_REMOVAL_AD_CLICK_WORKER_TAG, com.duckduckgo.adclick.impl.DataRemovalAdClickWorker } ]

[02-28 01:40:03.680 14118:14190 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=18a51327-c735-48c5-90b7-2e79e182dd48, tags={ CLEANUP_BROKEN_SITE_REPORT_WORKER_TAG, com.duckduckgo.brokensite.impl.CleanupBrokenSiteLastSentReportWorker } ]

[02-28 01:40:03.714 701:777 I/ActivityManager]
Displayed com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity: +587ms (total +1s352ms)

[02-28 01:40:03.741 701:777 I/WindowManager]
Destroying surface Surface(name=Starting com.duckduckgo.mobile.android) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.AppWindowToken.destroySurfaces:363 com.android.server.wm.WindowStateAnimator.finishExit:565 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:491 com.android.server.wm.WindowAnimator.updateWindowsLocked:303 com.android.server.wm.WindowAnimator.animateLocked:704 

[02-28 01:40:03.744 14118:14190 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=fb3a0c55-2dd7-44f8-9581-e267d832539a, tags={ com.duckduckgo.mobile.android.vpn.heartbeat.VpnServiceHeartbeatMonitorWorker, VpnServiceHeartbeatMonitorWorker } ]

[02-28 01:40:03.773 14118:14190 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=0cb6c6fa-8f4f-4240-b666-b2016f414554, tags={ com.duckduckgo.sync.impl.pixels.SyncDailyReportingWorker, DAILY_REPORTING_SYNC_WORKER_TAG } ]

[02-28 01:40:03.831 14118:14177 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=aa6a2d53-53d7-441f-8c4a-72259f8eaddf, tags={ DAILY_REPORTING_AD_CLICK_WORKER_TAG, com.duckduckgo.adclick.impl.pixels.AdClickDailyReportingWorker } ]

[02-28 01:40:03.868 14118:14177 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=52234f5d-db3a-4038-9f97-0ad2669a9c35, tags={ com.duckduckgo.remote.messaging.impl.RemoteMessagingConfigDownloadWorker, REMOTE_MESSAGING_DOWNLOADER_WORKER_TAG } ]

[02-28 01:40:03.927 14118:14177 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=73a04724-6f39-49f9-9501-d53adfe5757e, tags={ PRIVACY_CONFIG_DOWNLOADER_WORKER_TAG, com.duckduckgo.privacy.config.impl.workers.PrivacyConfigDownloadWorker } ]

[02-28 01:40:18.096 14118:14142 W/AndroidKeystoreAesGcm]
encountered a potentially transient KeyStore error, will wait and retry
javax.crypto.AEADBadTagException
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:517)
        at javax.crypto.Cipher.doFinal(Cipher.java:2114)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decryptInternal(AndroidKeystoreAesGcm.java:115)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decrypt(AndroidKeystoreAesGcm.java:97)
        at com.google.crypto.tink.KeysetHandle.decrypt(KeysetHandle.java:206)
        at com.google.crypto.tink.KeysetHandle.read(KeysetHandle.java:107)
        at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.read(AndroidKeysetManager.java:311)
        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:155)
        at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:120)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.encryptedPreferences(SecureStorageKeyStore.kt:57)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.access$encryptedPreferences(SecureStorageKeyStore.kt:48)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore$encryptedPreferences$2.invoke(SecureStorageKeyStore.kt:52)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore$encryptedPreferences$2.invoke(SecureStorageKeyStore.kt:52)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.getEncryptedPreferences(SecureStorageKeyStore.kt:52)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.canUseEncryption(SecureStorageKeyStore.kt:88)
        at com.duckduckgo.securestorage.store.RealSecureStorageKeyRepository.canUseEncryption(SecureStorageKeyRepository.kt:88)
        at com.duckduckgo.autofill.impl.securestorage.RealSecureStorageKeyProvider.canAccessKeyStore(SecureStorageKeyProvider.kt:54)
        at com.duckduckgo.autofill.impl.securestorage.RealL2DataTransformer.canProcessData(L2DataTransformer.kt:53)
        at com.duckduckgo.autofill.impl.securestorage.RealSecureStorage.canAccessSecureStorage(SecureStorage.kt:174)
        at com.duckduckgo.autofill.impl.SecureStoreBackedAutofillStore.getAutofillAvailable(SecureStoreBackedAutofillStore.kt:57)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl$isSecureAutofillAvailable$2.invokeSuspend(AutofillGlobalCapabilityChecker.kt:47)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl$isSecureAutofillAvailable$2.invoke(AutofillGlobalCapabilityChecker.kt)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl$isSecureAutofillAvailable$2.invoke(AutofillGlobalCapabilityChecker.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl.isSecureAutofillAvailable(AutofillGlobalCapabilityChecker.kt:46)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl.isSecureAutofillAvailable(AutofillCapabilityCheckerImpl.kt:92)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl.access$isSecureAutofillAvailable(AutofillCapabilityCheckerImpl.kt:28)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl$canInjectCredentialsToWebView$2.invokeSuspend(AutofillCapabilityCheckerImpl.kt:37)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl$canInjectCredentialsToWebView$2.invoke(AutofillCapabilityCheckerImpl.kt)

[02-28 01:40:18.096 14118:14142 W/AndroidKeystoreAesGcm]
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl$canInjectCredentialsToWebView$2.invoke(AutofillCapabilityCheckerImpl.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl.canInjectCredentialsToWebView(AutofillCapabilityCheckerImpl.kt:36)
        at com.duckduckgo.autofill.impl.configuration.RealAutofillRuntimeConfigProvider.canInjectCredentials(AutofillRuntimeConfigProvider.kt:102)
        at com.duckduckgo.autofill.impl.configuration.RealAutofillRuntimeConfigProvider.getRuntimeConfiguration(AutofillRuntimeConfigProvider.kt:58)
        at com.duckduckgo.autofill.impl.configuration.InlineBrowserAutofillConfigurator$configureAutofillForCurrentPage$1.invokeSuspend(InlineBrowserAutofillConfigurator.kt:49)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: android.security.KeyStoreException: Signature/MAC verification failed
        at android.security.KeyStore.getKeyStoreException(KeyStore.java:666)
        at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
        at android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.doFinal(AndroidKeyStoreAuthenticatedAESCipherSpi.java:373)
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:506)
        ... 49 more

[02-28 01:40:18.140 14118:14142 W/AndroidKeysetManager]
cannot decrypt keyset: 
javax.crypto.AEADBadTagException
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:517)
        at javax.crypto.Cipher.doFinal(Cipher.java:2114)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decryptInternal(AndroidKeystoreAesGcm.java:115)
        at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decrypt(AndroidKeystoreAesGcm.java:101)
        at com.google.crypto.tink.KeysetHandle.decrypt(KeysetHandle.java:206)
        at com.google.crypto.tink.KeysetHandle.read(KeysetHandle.java:107)
        at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.read(AndroidKeysetManager.java:311)
        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:155)
        at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:120)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.encryptedPreferences(SecureStorageKeyStore.kt:57)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.access$encryptedPreferences(SecureStorageKeyStore.kt:48)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore$encryptedPreferences$2.invoke(SecureStorageKeyStore.kt:52)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore$encryptedPreferences$2.invoke(SecureStorageKeyStore.kt:52)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.getEncryptedPreferences(SecureStorageKeyStore.kt:52)
        at com.duckduckgo.securestorage.store.keys.RealSecureStorageKeyStore.canUseEncryption(SecureStorageKeyStore.kt:88)
        at com.duckduckgo.securestorage.store.RealSecureStorageKeyRepository.canUseEncryption(SecureStorageKeyRepository.kt:88)
        at com.duckduckgo.autofill.impl.securestorage.RealSecureStorageKeyProvider.canAccessKeyStore(SecureStorageKeyProvider.kt:54)
        at com.duckduckgo.autofill.impl.securestorage.RealL2DataTransformer.canProcessData(L2DataTransformer.kt:53)
        at com.duckduckgo.autofill.impl.securestorage.RealSecureStorage.canAccessSecureStorage(SecureStorage.kt:174)
        at com.duckduckgo.autofill.impl.SecureStoreBackedAutofillStore.getAutofillAvailable(SecureStoreBackedAutofillStore.kt:57)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl$isSecureAutofillAvailable$2.invokeSuspend(AutofillGlobalCapabilityChecker.kt:47)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl$isSecureAutofillAvailable$2.invoke(AutofillGlobalCapabilityChecker.kt)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl$isSecureAutofillAvailable$2.invoke(AutofillGlobalCapabilityChecker.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at com.duckduckgo.autofill.impl.AutofillGlobalCapabilityCheckerImpl.isSecureAutofillAvailable(AutofillGlobalCapabilityChecker.kt:46)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl.isSecureAutofillAvailable(AutofillCapabilityCheckerImpl.kt:92)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl.access$isSecureAutofillAvailable(AutofillCapabilityCheckerImpl.kt:28)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl$canInjectCredentialsToWebView$2.invokeSuspend(AutofillCapabilityCheckerImpl.kt:37)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl$canInjectCredentialsToWebView$2.invoke(AutofillCapabilityCheckerImpl.kt)

[02-28 01:40:18.141 14118:14142 W/AndroidKeysetManager]
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl$canInjectCredentialsToWebView$2.invoke(AutofillCapabilityCheckerImpl.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at com.duckduckgo.autofill.impl.AutofillCapabilityCheckerImpl.canInjectCredentialsToWebView(AutofillCapabilityCheckerImpl.kt:36)
        at com.duckduckgo.autofill.impl.configuration.RealAutofillRuntimeConfigProvider.canInjectCredentials(AutofillRuntimeConfigProvider.kt:102)
        at com.duckduckgo.autofill.impl.configuration.RealAutofillRuntimeConfigProvider.getRuntimeConfiguration(AutofillRuntimeConfigProvider.kt:58)
        at com.duckduckgo.autofill.impl.configuration.InlineBrowserAutofillConfigurator$configureAutofillForCurrentPage$1.invokeSuspend(InlineBrowserAutofillConfigurator.kt:49)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: android.security.KeyStoreException: Signature/MAC verification failed
        at android.security.KeyStore.getKeyStoreException(KeyStore.java:666)
        at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
        at android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.doFinal(AndroidKeyStoreAuthenticatedAESCipherSpi.java:373)
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:506)
        ... 49 more

[02-28 01:40:21.003 14335:14335 I/AEE/AED]
[preset_info] pid: 14118, tid: 14299, name: Chrome_InProcGp  >>> com.duckduckgo.mobile.android <<<

[02-28 01:40:21.106 14335:14335 I/AEE/AED]
pid: 14118, tid: 14299, name: Chrome_InProcGp  >>> com.duckduckgo.mobile.android <<<

[02-28 01:40:23.470 14335:14335 V/AEE/AED]
dashboard_record_update() : rec->module = com.duckduckgo.mobile.android 

[02-28 01:40:23.478 701:14336 W/ActivityManager]
  Force finishing activity com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity

[02-28 01:40:23.547 701:3082 W/InputDispatcher]
channel '5033e68 com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0xd

[02-28 01:40:23.547 701:3082 E/InputDispatcher]
channel '5033e68 com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

[02-28 01:40:23.563 701:725 I/ActivityManager]
Process com.duckduckgo.mobile.android (pid 14118) has died

[02-28 01:40:23.564 701:8676 I/WindowManager]
WIN DEATH: Window{5033e68 u0 com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity}

[02-28 01:40:23.564 701:8676 W/InputDispatcher]
Attempted to unregister already unregistered input channel '5033e68 com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity (server)'

[02-28 01:40:23.564 701:8676 I/WindowManager]
Destroying surface Surface(name=com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.removeLocked:1449 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2482 com.android.server.wm.WindowManagerService.removeWindowLocked:2440 com.android.server.wm.WindowState$DeathRecipient.binderDied:1780 android.os.BinderProxy.sendDeathNotice:688 <bottom of call stack> 

[02-28 01:40:25.574 701:14336 W/ActivityManager]
Ignoring remove of inactive process: ProcessRecord{b315760 0:com.duckduckgo.mobile.android/u0a90}

[02-28 01:40:25.633 701:777 I/WindowManager]
Destroying surface Surface(name=Application Error: com.duckduckgo.mobile.android) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementInner:429 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop:232 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement:180 com.android.server.wm.WindowManagerService$H.handleMessage:8115 android.os.Handler.dispatchMessage:102 

Expected behavior

I expect the app to run without crashing.

Environment

- DDG App Version: 5.188.0
- Device: Teclast T10 tablet
- OS: Android 7.0 (stock)

Thanks for reporting this!

Can you provide some more information on how you installed the app... specifically:

  • was it installed directly from the Play Store?
  • was the app ever backed up and restored or transferred from one device to another?
  • was it all working fine for a while before it started crashing, or has it never worked? if it was working fine, do you recall anything changing?

Thanks

Can you provide some more information on how you installed the app... specifically:

  • was it installed directly from the Play Store?

No, I have always installed the app from F-Droid (including my current version, the latest one available there).

  • was the app ever backed up and restored or transferred from one device to another?

No, since I use the app primarily when I don't want to save anything, I don't back it up at all (I have no permanent data, such as fireproof sites), and have never moved or tnarsferred it.

  • was it all working fine for a while before it started crashing, or has it never worked? if it was working fine, do you recall anything changing?

The app still works fine on every other site (including several after I experienced this issue). To me, the problem appears site-specifc (probably not the actual cause, but I have never encountered anything similar on any other site).

Thank you for that extra info.

I can't reproduce this, nor do I see the root cause from the logs provided (those encryption / AEADBadTagExceptions looking more like warnings than fatal errors). Do you see any other errors in the logs when it crashes?

I can't reproduce this, nor do I see the root cause from the logs provided (those encryption / AEADBadTagExceptions looking more like warnings than fatal errors). Do you see any other errors in the logs when it crashes?

Not sure I have the best logging program, but (I just ran this again), and these entries appear the most relevant:

[02-28 01:40:23.478 701:14336 W/ActivityManager]
  Force finishing activity com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity

[02-28 01:40:23.547 701:3082 W/InputDispatcher]
channel '5033e68 com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0xd

[02-28 01:40:23.547 701:3082 E/InputDispatcher]
channel '5033e68 com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

[02-28 01:40:23.563 701:725 I/ActivityManager]
Process com.duckduckgo.mobile.android (pid 14118) has died

[02-28 01:40:23.564 701:8676 I/WindowManager]
WIN DEATH: Window{5033e68 u0 com.duckduckgo.mobile.android/com.duckduckgo.app.browser.BrowserActivity}

Those five entries get labeled warning, warning, error, information, and information respectively.

I just noticed that 5.188.0 looks like the last version for Android 7 (5.189.0 requires API 26). That doesn't do much for my hopes of getting this resolved.

Thanks for the info. Unfortunately those logs show what's happening after the problem happened but not what the problem is, and I still haven't managed to reproduce this.

5.188.0 looks like the last version for Android 7

This is correct, I'm afraid.

I have filed this internally as https://app.asana.com/0/1206654529736397/1206793844835455/f for a follow-up look, and closing this task since we can't immediately reproduce or action a fix. Thank you for taking the time to report it.