Hi, everyone!
How to identify the cause of high ANR in an android game on Google play? The game, when tested within the team, does not show unstable operation even on devices that have requirements below the minimum set by us in Google play. At the same time, Google play in the console shows a high ANR precent (~1.7%).
The game: https://play.google.com/store/apps/details?id=com.panacotagames.project_hole&hl=en
I also have ANR logs from the Google console. But I don’t understand at all how they are worth reading and what conclusions to draw from them. I’ll leave the 2 most popular errors here. They are similar
#00 pc 0x0000000000088fdc /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
#01 pc 0x000000000008d8c0 /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex+144)
#02 pc 0x00000000000faa08 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_cond_wait+72)
#03 pc 0x000000000001b098 /data/app/~~tXRAtEZLeEXqAvUGsApoHQ==/com.panacotagames.project_hole-Qq9-ji7EiTTL87IrhHxXAA==/lib/arm64/libgame.so (onPause+144) (BuildId: 63a9c67744e6c7b4a6430879d2668989f70d8c5e)
at com.google.androidgamesdk.GameActivity.onPauseNative (GameActivity.java)
at com.google.androidgamesdk.GameActivity.onPause (GameActivity.java:388)
at com.unity3d.player.UnityPlayerGameActivity.onPause (UnityPlayerGameActivity.java:107)
at android.app.Activity.performPause (Activity.java:8778)
at android.app.Instrumentation.callActivityOnPause (Instrumentation.java:1585)
at android.app.ActivityThread.performPauseActivityIfNeeded (ActivityThread.java:5707)
at android.app.ActivityThread.performPauseActivity (ActivityThread.java:5668)
at android.app.ActivityThread.handlePauseActivity (ActivityThread.java:5620)
at android.app.servertransaction.PauseActivityItem.execute (PauseActivityItem.java:47)
at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2574)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:226)
at android.os.Looper.loop (Looper.java:313)
at android.app.ActivityThread.main (ActivityThread.java:8762)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067)
And another
#00 pc 0x0000000000099000 /apex/com.android.runtime/lib64/bionic/libc.so (syscall+32)
#01 pc 0x000000000009dc98 /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex+148)
#02 pc 0x0000000000104264 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_cond_wait+80)
#03 pc 0x000000000001c5d8 /data/app/~~T9y6y8713sD9a68zNCmR7w==/com.panacotagames.project_hole-YuCymtZJTLLvpy4Uitml5w==/lib/arm64/libgame.so (BuildId: c026babccfd14c5c84b3adfcc1c39c4e3759273e)
#04 pc 0x0000000000351230 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144)
#05 pc 0x00000000005b9610 /apex/com.android.art/lib64/libart.so (nterp_helper+5648)
#06 pc 0x00000000006877de /data/app/~~T9y6y8713sD9a68zNCmR7w==/com.panacotagames.project_hole-YuCymtZJTLLvpy4Uitml5w==/base.apk (com.google.androidgamesdk.GameActivity.onPause+10)
#07 pc 0x00000000005b8f54 /apex/com.android.art/lib64/libart.so (nterp_helper+3924)
at com.google.androidgamesdk.GameActivity.onPauseNative (GameActivity.java)
at com.google.androidgamesdk.GameActivity.onPause (GameActivity.java:388)
at com.unity3d.player.UnityPlayerGameActivity.onPause (UnityPlayerGameActivity.java:120)
at android.app.Activity.performPause (Activity.java:8973)
at android.app.Instrumentation.callActivityOnPause (Instrumentation.java:1676)
at android.app.ActivityThread.performPauseActivityIfNeeded (ActivityThread.java:5619)
at android.app.ActivityThread.performPauseActivity (ActivityThread.java:5580)
at android.app.ActivityThread.handlePauseActivity (ActivityThread.java:5532)
at android.app.servertransaction.PauseActivityItem.execute (PauseActivityItem.java:55)
at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:185)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2643)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:257)
at android.os.Looper.loop (Looper.java:368)
at android.app.ActivityThread.main (ActivityThread.java:8848)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:572)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1049)
Sorry for bad English. I used translator