mozilla-mobile / fenix

⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
https://github.com/mozilla-mobile/firefox-android
Mozilla Public License 2.0
6.47k stars 1.27k forks source link

Fenix crashes when attempting to disconnect from Mozilla account #20672

Closed klint closed 3 years ago

klint commented 3 years ago

Steps to reproduce

Have Fenix connected to Mozilla/Firefox account Wait for the email address being displayed in Fenix menu Press on email address Press on Disconnect

Expected behaviour

Fenix should simply disconnect from account

Actual behaviour

Firefox crashes

Device name

Redmi Note 7

Android version

Android 9

Firefox release type

Firefox Nightly

Firefox version

92.0a1

Device logs

No response

Additional information

No response

┆Issue is synchronized with this Jira Task

jonalmeida commented 3 years ago

Logs would be helpful if this is reproducible.

klint commented 3 years ago

Hi. Yes, happens at each attempt. Is this the log you are expecting? 5c39f695-38a8-42c4-b5cc-43e4024c87fb

java.lang.NullPointerException: null cannot be cast to non-null type android.widget.FrameLayout

 * Sentry: https://sentry.prod.mozaws.net/operations/fenix/?query=b1d1802d37224edbb895e0ee6187cf1e

 * Socorro: https://crash-stats.mozilla.org/report/index/bp-cdf77c18-6471-417b-b03a-9aaa00210805


java.lang.NullPointerException: null cannot be cast to non-null type android.widget.FrameLayout

 at java.util.Objects.requireNonNull(Objects.java:228)

 at org.mozilla.fenix.settings.account.SignOutFragment$$ExternalSyntheticLambda0.onShow(Unknown Source:7)

 at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1399)

 at android.os.Handler.dispatchMessage(Handler.java:106)

 at android.os.Looper.loop(Looper.java:201)

 at android.app.ActivityThread.main(ActivityThread.java:6810)

 at java.lang.reflect.Method.invoke(Native Method)

 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)

 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

jonalmeida commented 3 years ago

Brilliant thank you!

I believe the offending line is here in the SignOutFragment, where we are assuming that an internal layout in the BottomSheetDialog will always be accessible.

I can see other BottomSheetBehaviors that follow the pattern, but we don't have crashes from them so I suspect it's related to the dialog being destroyed when you hit sign out.

I have seen this issue with the tabs tray that is also a dialog with a BottomSheetBehavior. That might be another comparison to consider.

LaurentiuApahideanSV commented 3 years ago

The issue also occurs on Firefox Preview 92.0.0 Beta 1.

Devices used:

Amejia481 commented 3 years ago

We put a fix on nightly https://github.com/mozilla-mobile/fenix/pull/20791 and Beta https://github.com/mozilla-mobile/fenix/pull/20794, they should be available on the next updates.

LaurentiuApahideanSV commented 3 years ago

I can confirm the issue no longer occurs on Firefox Preview Nightly 2021-08-12 and 92.0.0-beta.2.