thunderbird / thunderbird/thunderbird-android
Sign in With Google either crashes or has no effect
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 14k
- Forks
- 2.8k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 57
Description
Checklist
- I have used the search function to see if someone else has already submitted the same bug report.
- I will describe the problem with as much detail as possible.
App
Thunderbird for Android
App version
8.2
Where did you get the app from?
Google Play
Android version
13
Device model
Samsung Galaxy S20FE
Steps to reproduce
- Go to "Settings"
- Tap "Add account"
- input a gmail address
- Thunderbird says "Configuration found", then tap "Sign in with Google"
- Thunderbird either crashes or returns to "Settings"
Expected behavior
Be able to continue with OAuth 2.0 and add a gmail account.
Actual behavior
Thunderbird either crashes or returns to "Settings".
The problem I'm experiencing is different from #8598, as I can't even see the "Sign in - Google Accounts" screen.
The logs below suggest that somehow it couldn't find a browser, despite the fact that my device has Firefox and Brave installed (but Google Chrome is disabled). Enabling Google Chrome also didn't help (same behavior and same fatal exception in the logs). This seems to be related to #8250.
Logs
12-20 02:00:22.378 3968 3968 E AndroidRuntime: FATAL EXCEPTION: main
12-20 02:00:22.378 3968 3968 E AndroidRuntime: Process: net.thunderbird.android, PID: 3968
12-20 02:00:22.378 3968 3968 E AndroidRuntime: android.content.ActivityNotFoundException
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at net.openid.appauth.AuthorizationService.prepareAuthorizationRequestIntent(AuthorizationService.java:555)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at net.openid.appauth.AuthorizationService.getAuthorizationRequestIntent(AuthorizationService.java:390)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at net.openid.appauth.AuthorizationService.getAuthorizationRequestIntent(AuthorizationService.java:419)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.data.AuthorizationRepository.createAuthorizationRequestIntent(AuthorizationRepository.kt:92)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.data.AuthorizationRepository.getAuthorizationRequestIntent(AuthorizationRepository.kt:30)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.domain.usecase.GetOAuthRequestIntent.execute(GetOAuthRequestIntent.kt:16)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewModel.onSignIn(AccountOAuthViewModel.kt:48)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewModel.event(AccountOAuthViewModel.kt:39)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewModel.event(AccountOAuthViewModel.kt:18)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt$AccountOAuthView$$inlined$observe$1.invoke(UnidirectionalViewModel.kt:91)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt$AccountOAuthView$$inlined$observe$1.invoke(UnidirectionalViewModel.kt:91)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt.AccountOAuthView$lambda$4$lambda$3(AccountOAuthView.kt:36)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt.$r8$lambda$NojlJxqcSP9UGxYwy-Z6ALUwMUo(AccountOAuthView.kt:0)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthViewKt$$ExternalSyntheticLambda1.invoke(R8$$SyntheticClass:0)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthContentKt.AccountOAuthContent$lambda$5$lambda$4$lambda$3(AccountOAuthContent.kt:53)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthContentKt.$r8$lambda$H6buBqFPPvpy4UF2baCqpDgb-7Y(AccountOAuthContent.kt:0)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at app.k9mail.feature.account.oauth.ui.AccountOAuthContentKt$$ExternalSyntheticLambda1.invoke(R8$$SyntheticClass:0)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke-k-4lQ0M(Clickable.kt:639)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke(Clickable.kt:633)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(TapGestureDetector.kt:255)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:165)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:154)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:470)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$kotlinx_coroutines_core(CancellableContinuationImpl.kt:504)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$kotlinx_coroutines_core$default(CancellableContinuationImpl.kt:493)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:359)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:719)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(SuspendingPointerInputFilter.kt:598)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:620)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.foundation.AbstractClickableNode.onPointerEvent-H0pRuoY(Clickable.kt:1044)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:387)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:373)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:373)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:373)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:229)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:144)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:120)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1994)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1945)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1829)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3316)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2990)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3316)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2990)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3316)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2990)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3316)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2990)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3316)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2990)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3316)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2990)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:1116)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1971)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.app.Activity.dispatchTouchEvent(Activity.java:4388)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:1074)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.View.dispatchPointerEvent(View.java:15803)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:8153)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7877)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7213)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7270)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7236)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7434)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7244)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7491)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7217)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7270)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7236)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7244)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7217)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:10788)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10676)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10632)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:10926)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:285)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.os.MessageQueue.nativePollOnce(Native Method)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.os.MessageQueue.next(MessageQueue.java:335)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:186)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.os.Looper.loop(Looper.java:313)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8762)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
12-20 02:00:22.378 3968 3968 E AndroidRuntime: Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@65bbda, androidx.compose.runtime.BroadcastFrameClock@f29980b, StandaloneCoroutine{Cancelling}@48b46e8, AndroidUiDispatcher@e581101]
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with app/k9mail/feature/account/oauth/data/AuthorizationRepository.kt at createAuthorizationRequestIntent and trace the call from AccountOAuthViewModel.onSignIn; the log points to Android AppAuth failing to create an authorization intent. Reproduce the Google sign-in flow on Android 13 with browsers available, then verify that OAuth proceeds without a crash or returning to Settings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- authentication, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100