View Issue Details

IDProjectCategoryView StatusLast Update
0009056Talerwallet (Android App)public2024-08-28 23:30
ReporterFlorian Dold Assigned Toavalos  
PriorityimmediateSeveritycrashReproducibilityhave not tried
Status closedResolutionfixed 
Target Version0.13Fixed in Version0.13 
Summary0009056: Android Wallet App crashes with NPE
DescriptionSee logs.
Additional Information08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: FATAL EXCEPTION: main
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: Process: net.taler.wallet.fdroid, PID: 26356
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: java.lang.RuntimeException: Unable to resume activity {net.taler.wallet.fdroid/net.taler.wallet.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.UserHandle.getIdentifier()' on a null object reference
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5244)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:5277)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:57)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:60)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeLifecycleItem(TransactionExecutor.java:282)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:150)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:93)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2595)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:232)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.os.Looper.loop(Looper.java:317)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8592)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.UserHandle.getIdentifier()' on a null object reference
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.os.Parcel.createExceptionOrNull(Parcel.java:3189)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:3167)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:3150)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:3092)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.nfc.INfcCardEmulation$Stub$Proxy.setPreferredService(INfcCardEmulation.java:745)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.nfc.cardemulation.CardEmulation.setPreferredService(CardEmulation.java:674)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at net.taler.wallet.MainActivity.onResume(SourceFile:35)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1722)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.Activity.performResume(Activity.java:9118)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5234)
08-10 16:19:48.194 10285 26356 26356 E AndroidRuntime: ... 14 more
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: FATAL EXCEPTION: main
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: Process: net.taler.wallet.fdroid, PID: 26385
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: java.lang.RuntimeException: Unable to resume activity {net.taler.wallet.fdroid/net.taler.wallet.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.UserHandle.getIdentifier()' on a null object reference
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5244)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:5277)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:57)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:60)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeLifecycleItem(TransactionExecutor.java:282)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:150)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:93)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2595)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:232)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.os.Looper.loop(Looper.java:317)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8592)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.UserHandle.getIdentifier()' on a null object reference
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.os.Parcel.createExceptionOrNull(Parcel.java:3189)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:3167)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:3150)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:3092)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.nfc.INfcCardEmulation$Stub$Proxy.setPreferredService(INfcCardEmulation.java:745)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.nfc.cardemulation.CardEmulation.setPreferredService(CardEmulation.java:674)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at net.taler.wallet.MainActivity.onResume(SourceFile:35)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1722)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.Activity.performResume(Activity.java:9118)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5234)
08-10 16:19:49.366 10285 26385 26385 E AndroidRuntime: ... 14 more
TagsNo tags attached.

Activities

avalos

2024-08-15 06:59

developer   ~0022981

Fixed in commit d55c19fb3983df64675ada5c41b72daca9758d01, please try the latest nightly APK from wallet.taler.net, and feel free to reopen this should the issue persist.

Turns out that the NFC service was trying to set itself as the default NFC handler during runtime, but was unable to resolve its own package name.

I have been unable to reproduce it, but in theory, it should be fixed now, with the catch that users will need to choose the current app from a list (if multiple wallets, the PoS and the cashier apps are installed) when scanning an NFC tag or another phone transmitting a payment (only) in the specific cases where it would have otherwise crashed.

Issue History

Date Modified Username Field Change
2024-08-12 00:29 Florian Dold New Issue
2024-08-12 00:29 Florian Dold Status new => assigned
2024-08-12 00:29 Florian Dold Assigned To => avalos
2024-08-15 06:59 avalos Note Added: 0022981
2024-08-15 07:00 avalos Status assigned => resolved
2024-08-15 07:00 avalos Resolution open => fixed
2024-08-26 22:29 Christian Grothoff Fixed in Version => 0.13
2024-08-28 23:30 Christian Grothoff Status resolved => closed