thunderbird / thunderbird/thunderbird-android

Sign in With Google either crashes or has no effect

Open
#8,697 1 comment 0 reactions 0 assignees View on GitHub

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
  1. Go to "Settings"
  2. Tap "Add account"
  3. input a gmail address
  4. Thunderbird says "Configuration found", then tap "Sign in with Google"
  5. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.