Electric-Coin-Company / zcash-android-wallet-sdk

Native Android SDK for Zcash
MIT License
5 stars 6 forks source link

ANR Demo-app #844

Open HonzaR opened 1 year ago

HonzaR commented 1 year ago

Describe the issue

I was able to reproduce ANR with the Demo-app. It happened after the clean app install with this configuration:

Can you reliably reproduce the issue?

If so, please list the steps to reproduce below:

  1. Clean install
  2. Open the screen in order from top to down from the side menu
  3. On the screen List UTXOs click on the LOAD TRANSACTIONS
  4. App frozen (device frozen completely too - restart needed)

Actual behavior + errors

I was able to get this ANR stacktrace from logcat:

ANR in cash.z.ecc.android.sdk.demoapp.mainnet (cash.z.ecc.android.sdk.demoapp.mainnet/cash.z.ecc.android.sdk.demoapp.MainActivity)
PID: 18989
Reason: Input dispatching timed out (88364a4 cash.z.ecc.android.sdk.demoapp.mainnet/cash.z.ecc.android.sdk.demoapp.MainActivity (server) is not responding. Waited 5000ms for MotionEvent)
Parent: cash.z.ecc.android.sdk.demoapp.mainnet/cash.z.ecc.android.sdk.demoapp.MainActivity
ErrorId: 8434dbb4-3ee5-456e-b22e-657509571c05
Frozen: false
Load: 2.64 / 1.47 / 1.29
----- Output from /proc/pressure/memory -----
some avg10=0.14 avg60=0.22 avg300=0.06 total=141005079
full avg10=0.00 avg60=0.01 avg300=0.00 total=42198510
----- End output from /proc/pressure/memory -----

CPU usage from 0ms to 6055ms later (2022-12-19 14:19:34.991 to 2022-12-19 14:19:41.047) with 99% awake:
  81% 20041/eu.inmite.prj.kb.mobilbank: 73% user + 7.7% kernel / faults: 14390 minor 284 major
  77% 29764/cz.kb.paatproduction: 71% user + 6.2% kernel / faults: 12742 minor 80 major
  28% 1748/system_server: 16% user + 12% kernel / faults: 6415 minor 208 major
  17% 24151/com.android.vending: 14% user + 3.1% kernel / faults: 8498 minor 89 major
  12% 18989/cash.z.ecc.android.sdk.demoapp.mainnet: 10% user + 2.7% kernel / faults: 6689 minor 97 major
  10% 3609/com.google.android.inputmethod.latin: 7.4% user + 3.2% kernel / faults: 2475 minor 1065 major
  9% 2029/com.android.systemui: 6.4% user + 2.6% kernel / faults: 3138 minor 134 major
  8.8% 3676/com.google.android.googlequicksearchbox:interactor: 5.4% user + 3.4% kernel / faults: 1952 minor 777 major
  5.6% 1116/adbd: 0.9% user + 3.6% kernel / faults: 6191 minor
  2.1% 156/kswapd0: 0% user + 2.1% kernel
  2.1% 1070/media.swcodec: 1.3% user + 0.8% kernel / faults: 5032 minor 40 major
  1.4% 2324/com.android.phone: 1.1% user + 0.3% kernel / faults: 885 minor 178 major
  1.4% 18767/kworker/u16:5-adb: 0% user + 1.4% kernel / faults: 33 minor
  1.3% 522/surfaceflinger: 0.9% user + 0.3% kernel / faults: 58 minor 6 major
  1.3% 18823/app_process: 0.4% user + 0.8% kernel / faults: 2 minor
  0% 1041/media.extractor: 0% user + 0% kernel / faults: 1907 minor 33 major
  0% 2238/com.google.android.grilservice: 0% user + 0% kernel / faults: 1014 minor 252 major
  0% 2299/com.shannon.imsservice: 0% user + 0% kernel / faults: 1000 minor 129 major
  0.9% 900/samsung.hardware.media.c2@1.0-service: 0.6% user + 0.3% kernel / faults: 19 minor
  0.9% 2163/com.android.networkstack.process: 0.6% user + 0.3% kernel / faults: 784 minor 100 major
  0% 2309/com.samsung.slsi.telephony.oemril: 0% user + 0% kernel / faults: 1068 minor 407 major
  0.9% 3746/com.android.nfc: 0.4% user + 0.4% kernel / faults: 1015 minor 514 major
  0.9% 18909/kworker/u16:7-gpu-dvfs-control: 0% user + 0.9% kernel / faults: 7 minor
  0% 1049/media.codec: 0% user + 0% kernel / faults: 1710 minor 45 major
  0.8% 2207/com.shannon.qualifiednetworksservice: 0.4% user + 0.3% kernel / faults: 980 minor 250 major
  0% 2252/com.samsung.slsi.telephony.oem.oemrilhookservice: 0% user + 0% kernel / faults: 1048 minor 389 major
  0% 2257/com.android.se: 0% user + 0% kernel / faults: 1155 minor 335 major
  0% 2274/com.shannon.rcsservice: 0% user + 0% kernel / faults: 979 minor 397 major
  0% 3760/com.google.SSRestartDetector: 0% user + 0% kernel / faults: 1021 minor 397 major
  0.8% 16845/kworker/u17:5-kbase_pm_poweroff_wait: 0% user + 0.8% kernel
  0.6% 12/rcu_preempt: 0% user + 0.6% kernel
  0.6% 13/rcuog/0: 0% user + 0.6% kernel
  0.6% 475/sugov:4: 0% user + 0.6% kernel
  0% 2302/com.google.android.apps.cbrsnetworkmonitor: 0% user + 0% kernel / faults: 1041 minor 350 major
  0.6% 3807/com.google.android.connectivitythermalpowermanager: 0.3% user + 0.3% kernel / faults: 923 minor 351 major
  0.4% 477/sugov:6: 0% user + 0.4% kernel
  0% 689/tombstoned: 0% user + 0% kernel / faults: 26 minor 45 major
  0.4% 2222/com.android.hbmsvmanager: 0.3% user + 0.1% kernel / faults: 990 minor 219 major
    2.2% 650/surfaceflinger: 0% user + 2.2% kernel
  9.5% 900/samsung.hardware.media.c2@1.0-service: 7.1% user + 2.3% kernel / faults: 10 minor
    2.3% 18873/HwBinder:900_3: 2.3% user + 0% kernel
  10% 18989/cash.z.ecc.android.sdk.demoapp.mainnet: 10% user + 0% kernel / faults: 177 minor 2 major
    7% 19058/mali-mem-purge: 3.5% user + 3.5% kernel
    7% 19106/pool-6-thread-1: 7% user + 0% kernel
    3.5% 18989/demoapp.mainnet: 0% user + 3.5% kernel
    3.5% 19125/OkHttpClientTra: 3.5% user + 0% kernel
  2.1% 11/ksoftirqd/0: 0% user + 2.1% kernel
  2.1% 13/rcuog/0: 0% user + 2.1% kernel
  2.1% 57/rcuop/5: 0% user + 2.1% kernel
  2.3% 881/android.hardware.power.stats-service.pixel: 0% user + 2.3% kernel
    2.3% 881/android.hardwar: 0% user + 2.3% kernel
  2.7% 3807/com.google.android.connectivitythermalpowermanager: 2.7% user + 0% kernel
  3.1% 16239/kworker/5:0-memlat_wq: 0% user + 3.1% kernel
  3.1% 16828/kworker/u16:1-adb: 0% user + 3.1% kernel
  3.4% 18767/kworker/u16:5-adb: 0% user + 3.4% kernel
  3.8% 24151/com.android.vending: 3.8% user + 0% kernel / faults: 68 minor
    3.8% 19181/libraries-threa: 3.8% user + 0% kernel
47% TOTAL: 29% user + 16% kernel + 1% irq + 0.5% softirq

And the demo-app crashes with this log at the end:

Process: cash.z.ecc.android.sdk.demoapp.mainnet, PID: 18989                                                                                                                         
io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 59.998158081s. [closed=[], committed=[remote_addr=mainnet.lightwalletd.com/140.238.134.157:9067]]        
    at io.grpc.Status.asRuntimeException(Status.java:539)                                                                                                                           
    at io.grpc.stub.ClientCalls$BlockingResponseStream.hasNext(ClientCalls.java:662)                                                                                                
    at cash.z.ecc.android.sdk.internal.service.LightWalletGrpcServiceKt.toList(LightWalletGrpcService.kt:207)                                                                       
    at cash.z.ecc.android.sdk.internal.service.LightWalletGrpcServiceKt.access$toList(LightWalletGrpcService.kt:1)                                                                  
    at cash.z.ecc.android.sdk.internal.service.LightWalletGrpcService.getTAddressTransactions(LightWalletGrpcService.kt:119)                                                        
    at cash.z.ecc.android.sdk.demoapp.demos.listutxos.ListUtxosFragment.downloadTransactions$lambda$4$lambda$3(ListUtxosFragment.kt:87)                                             
    at cash.z.ecc.android.sdk.demoapp.demos.listutxos.ListUtxosFragment.$r8$lambda$MUUJt4ghNQkS9nMJBCMr-9KsBHY(Unknown Source:0)                                                    
    at cash.z.ecc.android.sdk.demoapp.demos.listutxos.ListUtxosFragment$$ExternalSyntheticLambda1.run(Unknown Source:4)                                                             
    at android.os.Handler.handleCallback(Handler.java:942)                                                                                                                          
    at android.os.Handler.dispatchMessage(Handler.java:99)                                                                                                                          
    at android.os.Looper.loopOnce(Looper.java:201)                                                                                                                                  
    at android.os.Looper.loop(Looper.java:288)                                                                                                                                      
    at android.app.ActivityThread.main(ActivityThread.java:7898)
        at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)                                                                                            
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
daira commented 1 year ago

I don't see evidence here of a problem with the demo app per se. An unrelated app (which appears to be this Czech banking app) is taking 81% + 77% CPU. The demo app is taking 12%.

HonzaR commented 1 year ago

Thanks for the comment Daira. The ANR stacktrace is just additional information, which one can grab while experiencing an ANR on a device. Unfortunately, it does not tell us much, agree. But we aim to the entire old UI Demo-app removal (we replace it with Jetpack Compose-based Demo-app continuously), and thus this issue will be resolved, see https://github.com/zcash/zcash-android-wallet-sdk/issues/973.