Status Update
Comments
xo...@google.com <xo...@google.com>
ya...@google.com <ya...@google.com>
mu...@gmail.com <mu...@gmail.com> #2
Do you know what device(s) this is happening on? Looks like it's crashing in the framework code perhaps in autogenerated binder code.
android.hardware.fingerprint.IFingerprintService$Stub$Proxy.authenticate(IFingerprintService.java:341)
android.hardware.fingerprint.IFingerprintService$Stub$Proxy.authenticate(IFingerprintService.java:341)
wd...@google.com <wd...@google.com> #3
So far seeing on:
LGE LM-Q710(FGN)
LGE LM-X220
LGE LM-X410(FG)
BlackBerry BBB100-1
TCL REVVL 2
LGE LM-Q710(FGN)
LGE LM-X220
LGE LM-X410(FG)
BlackBerry BBB100-1
TCL REVVL 2
wd...@google.com <wd...@google.com> #4
We also observed similar crash in IFingerprintService.cancelAuthentication(IFingerprintService.java:320)
Caused by java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.os.Parcel.readException(Parcel.java:2019)
at android.os.Parcel.readException(Parcel.java:1959)
at android.hardware.fingerprint.IFingerprintService$Stub$Proxy.cancelAuthentication(IFingerprintService.java:320)
at android.hardware.fingerprint.FingerprintManager.cancelAuthentication(FingerprintManager.java:1020)
at android.hardware.fingerprint.FingerprintManager.-wrap2(FingerprintManager.java)
at android.hardware.fingerprint.FingerprintManager$OnAuthenticationCancelListener.onCancel(FingerprintManager.java:224)
at android.os.CancellationSignal.cancel(CancellationSignal.java:77)
at androidx.core.os.CancellationSignal.cancel(CancellationSignal.java:84)
at androidx.biometric.FingerprintHelperFragment.cancel(FingerprintHelperFragment.java:301)
at androidx.biometric.BiometricPrompt.dismissFingerprintFragments(BiometricPrompt.java:984)
at androidx.biometric.BiometricPrompt.access$800(BiometricPrompt.java:67)
at androidx.biometric.BiometricPrompt$2.onPause(BiometricPrompt.java:520)
at java.lang.reflect.Method.invoke(Method.java)
at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:216)
at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194)
at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185)
at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.java:316)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:334)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123)
at androidx.lifecycle.ReportFragment.onPause(ReportFragment.java:96)
at android.app.Fragment.performPause(Fragment.java:2709)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1334)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1557)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1618)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManagerImpl.java:3027)
at android.app.FragmentManagerImpl.dispatchPause(FragmentManagerImpl.java:2993)
at android.app.FragmentController.dispatchPause(FragmentController.java:211)
at android.app.Activity.performPause(Activity.java:7170)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1409)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:4026)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4003)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3977)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3951)
at android.app.ActivityThread.-wrap15(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1647)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:175)
at android.app.ActivityThread.main(ActivityThread.java:6724)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
BUILD INFO
- Device type: LG K11
- OS version: 8.1.0
- Biometric library version: androidx.biometric:biometric:1.0.1
mu...@gmail.com <mu...@gmail.com> #5
We're also seeing this occasionally - we've seen the FingerprintHelperFragment
stack trace reported above, as well as this slightly different one (they all have the same underlying cause):
Caused by java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.os.Parcel.createException(Parcel.java:1959)
at android.os.Parcel.readException(Parcel.java:1921)
at android.os.Parcel.readException(Parcel.java:1871)
at android.hardware.fingerprint.IFingerprintService$Stub$Proxy.authenticate(IFingerprintService.java:339)
at android.hardware.fingerprint.FingerprintManager.authenticate(FingerprintManager.java:480)
at android.hardware.fingerprint.FingerprintManager.authenticate(FingerprintManager.java:557)
at android.hardware.biometrics.BiometricPrompt.authenticate(BiometricPrompt.java:435)
at androidx.biometric.BiometricFragment.onCreateView(BiometricFragment.java:311)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManager.dispatchPause(FragmentManager.java:2593)
at androidx.fragment.app.FragmentController.dispatchPause(FragmentController.java:280)
at androidx.fragment.app.FragmentActivity.onPause(FragmentActivity.java:419)
at android.app.Activity.performPause(Activity.java:7663)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1536)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:4699)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4664)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:4599)
at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2185)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7593)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
We've only rolled this out to 10% of our user base so far, but here's our current list of affected devices:
Count | Device |
---|---|
4 | INFINIX MOBILITY LIMITED Infinix X606D (Android 8.1.0) |
2 | Sony G8441 (Android 9) |
2 | Xiaomi Mi A1 (Android 9) |
2 | HUAWEI LLD-L21 (Android 9) |
2 | samsung SM-G935F (Android 8.0.0) |
2 | vivo vivo 1904 (Android 9) |
2 | HUAWEI FIG-LX1 (Android 9) |
1 | HUAWEI LDN-L01 (Android 8.0.0) |
1 | HUAWEI ANE-LX1 (Android 9) |
There's some discussion of the underlying framework bug in
wd...@google.com <wd...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 7e9dd629009e348407a00e936f7b0927dbee7c30
Author: Grace Cheng <graciecheng@google.com>
Date: Tue Oct 06 11:52:41 2020
Address uncaught NPE during fingerprint authentication
Updates androidx.biometric.BiometricFragment to catch potential NullPointerException in autogenerated binder code from FingerprintManagerCompat authenticate call
Test: ./gradlew biometric:biometric:test
Test: ./gradlew biometric:biometric:connectedAndroidTest
Test: ./gradlew biometric:integration-tests:testapp:connectedAndroidTest
Bug: 151316421
Change-Id: I713d529fecd08a396e998f8ccf6a3d83e46bf508
M biometric/biometric/src/main/java/androidx/biometric/BiometricFragment.java
M biometric/biometric/src/test/java/androidx/biometric/BiometricFragmentTest.java
https://android-review.googlesource.com/1453556
Branch: androidx-master-dev
commit 7e9dd629009e348407a00e936f7b0927dbee7c30
Author: Grace Cheng <graciecheng@google.com>
Date: Tue Oct 06 11:52:41 2020
Address uncaught NPE during fingerprint authentication
Updates androidx.biometric.BiometricFragment to catch potential NullPointerException in autogenerated binder code from FingerprintManagerCompat authenticate call
Test: ./gradlew biometric:biometric:test
Test: ./gradlew biometric:biometric:connectedAndroidTest
Test: ./gradlew biometric:integration-tests:testapp:connectedAndroidTest
Bug: 151316421
Change-Id: I713d529fecd08a396e998f8ccf6a3d83e46bf508
M biometric/biometric/src/main/java/androidx/biometric/BiometricFragment.java
M biometric/biometric/src/test/java/androidx/biometric/BiometricFragmentTest.java
Description
Android Studio Version: Unknown
Emulator Version (Emulator--> Extended Controls--> Emulator Version): 31.2.9-8316981
HAXM / KVM Version: HVF 12.3.0
Android SDK Tools: 26.1.1
Host Operating System: macOS 12.3.1
CPU Manufacturer: Intel CPU
Virtualization is supported
64-bit CPU
RAM: 16384 MB
GPU: GPU #1
Make: 1002
Model: 7340
Device ID: 7340
Build Fingerprint: google/sdk_google_phone_x86/generic_x86:7.0/NYC/4409132:user/release-keys
AVD Details: Name: 4base_makine_rooted
CPU/ABI: x86
Path: /Users/mustafa/.android/avd/4base_makine_rooted.avd
Target: google_apis_playstore [Google Play] (API level 24)
Skin: 1080x1920
SD Card: 512 MB
AvdId: 4base_makine_rooted
PlayStore.enabled: true
avd.ini.displayname: 4base_makine_rooted
avd.ini.encoding: UTF-8
disk.dataPartition.size: 2G
fastboot.chosenSnapshotFile:
fastboot.forceChosenSnapshotBoot: no
fastboot.forceColdBoot: no
fastboot.forceFastBoot: yes
hw.accelerometer: yes
hw.arc: false
hw.audioInput: yes
hw.battery: yes
hw.camera.back: virtualscene
hw.camera.front: emulated
hw.cpu.ncore: 4
hw.dPad: no
hw.device.hash2: MD5:55acbc835978f326788ed66a5cd4c9a7
hw.device.manufacturer: Google
hw.gps: yes
hw.gpu.enabled: yes
hw.gpu.mode: auto
hw.initialOrientation: Portrait
hw.keyboard: yes
hw.lcd.density: 420
hw.lcd.height: 1920
hw.lcd.width: 1080
hw.mainKeys: no
hw.ramSize: 1536
hw.sdCard: yes
hw.sensors.orientation: yes
hw.sensors.proximity: yes
hw.trackBall: no
image.sysdir.1: system-images/android-24/google_apis_playstore/x86/
runtime.network.latency: none
runtime.network.speed: full
showDeviceFrame: no
skin.dynamic: yes
skin.path.backup: _no_skin
tag.display: Google Play
vm.heapSize: 256
Steps to Reproduce Bug:
Expected Behavior:
Observed Behavior: Sometimes, the avd feels sticky touch. It doesnt release touch even if I dont touch trackpad. I m using macbook pro.and tap to click is enabled. I think avd cant handle mis-touches or cant differentiate between navigating and tap on trackpad. As a result, UI behaves oddly sometimes gets unresponsive