airgap-it / beacon-android-sdk

The beacon sdk allows Android developers of dApps and wallets on Tezos to implement the wallet interaction standard tzip-10.
https://walletbeacon.io
MIT License
10 stars 8 forks source link

Wallet is crashing when I try to pair #9

Closed bibash28 closed 1 year ago

bibash28 commented 2 years ago
2022-09-05 10:57:53.919 18638-18638/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: it.airgap.beaconsdkdemo.mock, PID: 18638
    it.airgap.beaconsdk.core.exception.InternalException: No reachable Matrix node found.
        at it.airgap.beaconsdk.core.internal.utils.ErrorKt.failWith(Error.kt:18)
        at it.airgap.beaconsdk.core.internal.utils.ErrorKt.failWith$default(Error.kt:16)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore.failWithUnreachableNodes(P2pMatrixStore.kt:164)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore.relayServer-IoAF18A(P2pMatrixStore.kt:152)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore.access$relayServer-IoAF18A(P2pMatrixStore.kt:18)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore$relayServer$1.invokeSuspend(Unknown Source:14)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6863)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
        Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@cf3f831, Dispatchers.Main.immediate]
2022-09-05 12:45:30.663 20908-20908/it.airgap.beaconsdkdemo.mock E/AndroidRuntime: FATAL EXCEPTION: main
    Process: it.airgap.beaconsdkdemo.mock, PID: 20908
    it.airgap.beaconsdk.core.exception.InternalException: No reachable Matrix node found.
        at it.airgap.beaconsdk.core.internal.utils.ErrorKt.failWith(Error.kt:18)
        at it.airgap.beaconsdk.core.internal.utils.ErrorKt.failWith$default(Error.kt:16)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore.failWithUnreachableNodes(P2pMatrixStore.kt:164)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore.relayServer-IoAF18A(P2pMatrixStore.kt:152)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore.access$relayServer-IoAF18A(P2pMatrixStore.kt:18)
        at it.airgap.beaconsdk.transport.p2p.matrix.internal.store.P2pMatrixStore$relayServer$1.invokeSuspend(Unknown Source:14)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:194)
        at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:15)
        at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:89)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6863)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
        Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@4bb4992, Dispatchers.Main.immediate]
2022-09-05 12:45:30.667 485-485/? E/SELinux: avc:  denied  { find } for service=opdiagnose pid=20908 uid=10136 scontext=u:r:untrusted_app:s0:c136,c256,c512,c768 tcontext=u:object_r:opdiagnose_service:s0 tclass=service_manager permissive=0
2022-09-05 12:45:30.668 485-485/? E/SELinux: avc:  denied  { find } for service=opdiagnose pid=20908 uid=10136 scontext=u:r:untrusted_app:s0:c136,c256,c512,c768 tcontext=u:object_r:opdiagnose_service:s0 tclass=service_manager permissive=0
jsamol commented 1 year ago

(As already discussed on Slack:) To prevent your app from crashing on errors, you should make sure you're handling throwing method calls properly. Kotlin doesn't have checked exceptions, so it won't enforce it at compile time. The throwing methods in Beacon, however, have it mentioned in their docs and are annotated with @Throws to help its users understand they need special handling. BeaconWalletClient#pair is an example of a throwing method and if the exceptions it may throw aren't caught and handled, your application most probably will crash.

As for the cause of the error, please first double-check your network connection whenever you see that no reachable node was found. Then, if you configured the client with a custom set of nodes, make sure those nodes are up and running.