GrapheneOS / os-issue-tracker

Issue tracker for GrapheneOS Android Open Source Project hardening work. Standalone projects like Auditor, AttestationServer and hardened_malloc have their own dedicated trackers.
https://grapheneos.org/
350 stars 19 forks source link

Google Play service crashed when trying to enable NFC for security key #3114

Open minhng99 opened 8 months ago

minhng99 commented 8 months ago

The NFC is off and an app requested for a security key verification, I selected the NFC method, turn on NFC and this happened.

type: crash
osVersion: google/husky/husky:14/UQ1A.240105.004/2024011600:user/release-keys
package: com.google.android.gms:235014039
process: com.google.android.gms.ui
processUptime: 9166 + 194 ms
installer: com.android.vending
GmsCompatConfig version: 91

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.nfc.action.ADAPTER_STATE_CHANGED flg=0x4000010 (has extras) } in com.google.android.gms.fido.u2f.api.controller.NfcBroadcastReceiver@224bcc1
    at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1819)
    at android.app.LoadedApk$ReceiverDispatcher$Args.$r8$lambda$gDuJqgxY6Zb-ifyeubKeivTLAwk(Unknown Source:0)
    at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(Unknown Source:2)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:205)
    at android.os.Looper.loop(Looper.java:294)
    at android.app.ActivityThread.main(ActivityThread.java:8279)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
    at com.android.internal.os.ExecInit.main(ExecInit.java:49)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:359)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at fd.aE(:com.google.android.gms@235014039@23.50.14 (190408-592568214):12)
    at fd.N(:com.google.android.gms@235014039@23.50.14 (190408-592568214):27)
    at bs.c(:com.google.android.gms@235014039@23.50.14 (190408-592568214):66)
    at bs.a(:com.google.android.gms@235014039@23.50.14 (190408-592568214):2)
    at cx.hI(:com.google.android.gms@235014039@23.50.14 (190408-592568214):109)
    at cx.dismiss(:com.google.android.gms@235014039@23.50.14 (190408-592568214):2)
    at dvio.dismiss(:com.google.android.gms@235014039@23.50.14 (190408-592568214):8)
    at asao.s(:com.google.android.gms@235014039@23.50.14 (190408-592568214):52)
    at asao.k(:com.google.android.gms@235014039@23.50.14 (190408-592568214):84)
    at atkr.b(:com.google.android.gms@235014039@23.50.14 (190408-592568214):501)
    at asao.q(:com.google.android.gms@235014039@23.50.14 (190408-592568214):10)
    at assw.f(:com.google.android.gms@235014039@23.50.14 (190408-592568214):5)
    at asia.b(:com.google.android.gms@235014039@23.50.14 (190408-592568214):9)
    at atiy.c(:com.google.android.gms@235014039@23.50.14 (190408-592568214):64)
    at atiy.b(:com.google.android.gms@235014039@23.50.14 (190408-592568214):116)
    at com.google.android.gms.fido.u2f.api.controller.NfcBroadcastReceiver.a(:com.google.android.gms@235014039@23.50.14 (190408-592568214):109)
    at com.google.android.gms.libs.punchclock.tracing.TracingBroadcastReceiver.onReceive(:com.google.android.gms@235014039@23.50.14 (190408-592568214):18)
    at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1811)
    ... 12 more
matchboxbananasynergy commented 8 months ago

cc @muhomorr

muhomorr commented 8 months ago

Play services expects to turn on NFC itself when the "Turn on" button is tapped.

It's not allowed to do that on GrapheneOS, NFC page in Settings app is launched instead. When NFC is enabled in Settings, Play services gets a callback, but its UI is invisible at that point, which is considered by Play services to be an invalid state.

Not clear how to resolve this.