添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Hello,
I'm now running an open testing stage of an Android game - works well so far, crashes are fine, but I'm getting quite a lot of ANR errors - mostly the "Input dispatching timed out. RunnerActivity (server) is not responding." ones.
This is the latest one - "Input dispatching timed out (1f9d15 com.brusgames.kingofcrusaderstrongholds/com.brusgames.kingofcrusaderstrongholds.RunnerActivity (server) is not responding. Waited 5002ms for FocusEvent(hasFocus=false))" - others have different "Waited..." notes such as "Waited 10000ms for MotionEvent", so it's not always the same one.
My guess is that there is probably too much happening at the same time, or too much stuff queued - is there a way how to extract more specifics from the crash report? I haven't found any "libyoyo" mentions there, so maybe some of the extensions might be the problem...? I'm struggling to find out from the logs what actually went wrong, or at least which component caused the crash...
Here's the crash log from Google Play Console (nothing shows up in Game Analytics or Firebase for this, unfortunately):
"main" prio=5 tid=1 Native #00 pc 000000000005e2e8 /apex/com.android.runtime/lib/bionic/libc.so (syscall+28) #00 pc 0000000000130db3 /apex/com.android.art/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+82) #00 pc 00000000004ccacb /apex/com.android.art/lib/libart.so (art::GoToRunnable(art::Thread*)+338) #00 pc 00000000004cc951 /apex/com.android.art/lib/libart.so (art::JniMethodEnd(unsigned int, art::Thread*)+8) at android.os.BinderProxy.transactNative (Native method) at android.os.BinderProxy.transact (BinderProxy.java:540) at android.net.IConnectivityManager$Stub$Proxy.requestNetwork (IConnectivityManager.java:3499) at android.net.ConnectivityManager.sendRequestForNetwork (ConnectivityManager.java:3734) at android.net.ConnectivityManager.registerDefaultNetworkCallback (ConnectivityManager.java:4237) at vX.e (chromium-TrichromeWebViewGoogle.aab-stable-489612730:141) at ua.a (chromium-TrichromeWebViewGoogle.aab-stable-489612730:31) at org.chromium.android_webview.AwContentsLifecycleNotifier.onFirstWebViewCreated (chromium-TrichromeWebViewGoogle.aab-stable-489612730:54) at J.N.MFiR_zHY (Native method) at org.chromium.android_webview.AwContents.<init> (chromium-TrichromeWebViewGoogle.aab-stable-489612730:49) at com.android.webview.chromium.o.run (chromium-TrichromeWebViewGoogle.aab-stable-489612730:417) at vw0.b (chromium-TrichromeWebViewGoogle.aab-stable-489612730:57) at uw0.run (chromium-TrichromeWebViewGoogle.aab-stable-489612730:43) at org.chromium.base.task.PostTask.d (chromium-TrichromeWebViewGoogle.aab-stable-489612730:115) at vw0.a (chromium-TrichromeWebViewGoogle.aab-stable-489612730:43) at com.android.webview.chromium.WebViewChromiumFactoryProvider.a (chromium-TrichromeWebViewGoogle.aab-stable-489612730:165) at com.android.webview.chromium.WebViewChromium.init (chromium-TrichromeWebViewGoogle.aab-stable-489612730:363) at android.webkit.WebView.<init> (WebView.java:435) at android.webkit.WebView.<init> (WebView.java:355) at android.webkit.WebView.<init> (WebView.java:337) at android.webkit.WebView.<init> (WebView.java:324) at android.webkit.WebView.<init> (WebView.java:314) at com.google.android.gms.ads.internal.webview.ac.<init> (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :1) at com.google.android.gms.ads.internal.webview.r.a (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :4) at com.google.android.gms.ads.internal.webview.v.a (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :4) at com.google.android.gms.ads.internal.js.l.<init> (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :3) at com.google.android.gms.ads.internal.js.p.run (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :2) at com.google.android.gms.ads.internal.util.future.c.execute (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :2) at com.google.android.gms.ads.internal.util.future.d.execute (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] ) at com.google.android.gms.ads.internal.js.ai.b (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :3) at com.google.android.gms.ads.internal.js.ai.a (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :5) at com.google.android.gms.ads.internal.js.function.n.b (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] ) at com.google.android.gms.ads.internal.e.b (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :20) at com.google.android.gms.ads.internal.e.a (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] ) at com.google.android.gms.ads.nonagon.au.h (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :8) at com.google.android.gms.ads.internal.client.bs.bO (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :27) at adu.onTransact (com.google.android.gms.policy_ads_fdr_dynamite@ [email protected] :4) at android.os.Binder.transact (Binder.java:1043) at com.google.android.gms.internal.ads.zzov.zzbr at com.google.android.gms.internal.ads.zzbfu.zzj at com.google.android.gms.internal.ads.zzbhj.zzb at com.google.android.gms.ads.MobileAds.initialize at com.brusgames.kingofcrusaderstrongholds.GoogleMobileAdsGM$1.run (GoogleMobileAdsGM.java:104) at android.os.Handler.handleCallback (Handler.java:938) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:223) at android.app.ActivityThread.main (ActivityThread.java:7703) at java.lang.reflect.Method.invoke (Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:612) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:997) "Jit thread pool worker thread 0" daemon prio=5 tid=7 Native #00 pc 000000000005e2e8 /apex/com.android.runtime/lib/bionic/libc.so (syscall+28) #00 pc 0000000000130db3 /apex/com.android.art/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+82) #00 pc 0000000000459633 /apex/com.android.art/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+58) #00 pc 0000000000458d45 /apex/com.android.art/lib/libart.so (art::ThreadPoolWorker::Run()+72) #00 pc 0000000000458999 /apex/com.android.art/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+116) #00 pc 00000000000aabe3 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) #00 pc 0000000000064023 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) "ReferenceQueueDaemon" daemon prio=5 tid=9 Waiting at java.lang.Object.wait (Native method) at java.lang.Object.wait (Object.java:442) at java.lang.Object.wait (Object.java:568) at java.lang.Daemons$ReferenceQueueDaemon.runInternal (Daemons.java:217) at java.lang.Daemons$Daemon.run (Daemons.java:139) at java.lang.Thread.run (Thread.java:923) "FinalizerDaemon" daemon prio=5 tid=10 Waiting at java.lang.Object.wait (Native method) at java.lang.Object.wait (Object.java:442) at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:190) at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:211) at java.lang.Daemons$FinalizerDaemon.runInternal (Daemons.java:273) at java.lang.Daemons$Daemon.run (Daemons.java:139) at java.lang.Thread.run (Thread.java:923) "FinalizerWatchdogDaemon" daemon prio=5 tid=11 Sleeping at java.lang.Thread.sleep (Native method) at java.lang.Thread.sleep (Thread.java:442) at java.lang.Thread.sleep (Thread.java:358) at java.lang.Daemons$FinalizerWatchdogDaemon.sleepForNanos (Daemons.java:390) at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization (Daemons.java:419) at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal (Daemons.java:325) at java.lang.Daemons$Daemon.run (Daemons.java:139) at java.lang.Thread.run (Thread.java:923) "Binder:13158_1" prio=5 tid=12 Native #00 pc 000000000009ad80 /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+8) #00 pc 00000000000692ef /apex/com.android.runtime/lib/bionic/libc.so (ioctl+26) #00 pc 0000000000039a03 /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+238) #00 pc 0000000000039b5d /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+8) #00 pc 000000000003a237 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+38) #00 pc 000000000005359d /system/lib/libbinder.so (android::PoolThread::threadLoop()+12) #00 pc 000000000000ee95 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+168) #00 pc 000000000006c813 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+86) #00 pc 000000000000e9dd /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+256) #00 pc 00000000000aabe3 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) #00 pc 0000000000064023 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) "Binder:13158_2" prio=5 tid=13 Native #00 pc 000000000009ad80 /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+8) #00 pc 00000000000692ef /apex/com.android.runtime/lib/bionic/libc.so (ioctl+26) #00 pc 0000000000039a03 /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+238) #00 pc 0000000000039b5d /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+8) #00 pc 000000000003a237 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+38) #00 pc 000000000005359d /system/lib/libbinder.so (android::PoolThread::threadLoop()+12) #00 pc 000000000000ee95 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+168) #00 pc 000000000006c813 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+86) #00 pc 000000000000e9dd /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+256) #00 pc 00000000000aabe3 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) #00 pc 0000000000064023 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) "Binder:13158_3" prio=5 tid=14 Native #00 pc 000000000009ad80 /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+8) #00 pc 00000000000692ef /apex/com.android.runtime/lib/bionic/libc.so (ioctl+26) #00 pc 0000000000039a03 /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+238) #00 pc 0000000000039b5d /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+8) #00 pc 000000000003a237 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+38) #00 pc 000000000005359d /system/lib/libbinder.so (android::PoolThread::threadLoop()+12) #00 pc 000000000000ee95 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+168) #00 pc 000000000006c813 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+86) #00 pc 000000000000e9dd /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+256) #00 pc 00000000000aabe3 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) #00 pc 0000000000064023 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) "Profile Saver" daemon prio=5 tid=15 Native #00 pc 000000000005e2e8 /apex/com.android.runtime/lib/bionic/libc.so (syscall+28) #00 pc 0000000000130db3 /apex/com.android.art/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+82) #00 pc 000000000026ca11 /apex/com.android.art/lib/libart.so (art::ProfileSaver::Run()+376) #00 pc 0000000000270403 /apex/com.android.art/lib/libart.so (art::ProfileSaver::RunProfileSaverThread(void*)+106) #00 pc 00000000000aabe3 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) #00 pc 0000000000064023 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) "ScionFrontendApi" prio=5 tid=17 TimedWaiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2109) at java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:467) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1091) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:923) "GmsDynamite" prio=5 tid=18 Waiting at java.lang.Object.wait (Native method) at java.lang.Object.wait (Object.java:442) at java.lang.Object.wait (Object.java:568) at com.google.android.gms.dynamite.zza.run "pool-3-thread-1" prio=5 tid=19 Waiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:923) "Firebase-Messaging-Init" prio=5 tid=20 Waiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1120) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:849) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at com.google.android.gms.common.util.concurrent.zza.run at java.lang.Thread.run (Thread.java:923) "TAG" prio=5 tid=21 Waiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1120) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:849) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at com.google.android.gms.common.util.concurrent.zza.run at java.lang.Thread.run (Thread.java:923) "Firebase-Messaging-Topics-Io" prio=5 tid=22 Waiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1120) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:849) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at com.google.android.gms.common.util.concurrent.zza.run at java.lang.Thread.run (Thread.java:923) "queued-work-looper" prio=5 tid=23 Native #00 pc 000000000009be5c /apex/com.android.runtime/lib/bionic/libc.so (__epoll_pwait+20) #00 pc 000000000006dcbd /apex/com.android.runtime/lib/bionic/libc.so (epoll_wait+16) #00 pc 0000000000011c99 /system/lib/libutils.so (android::Looper::pollInner(int)+128) #00 pc 0000000000011bc3 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+62) #00 pc 00000000000b98f7 /system/lib/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long long, int)+24) at android.os.MessageQueue.nativePollOnce (Native method) at android.os.MessageQueue.next (MessageQueue.java:335) at android.os.Looper.loop (Looper.java:183) at android.os.HandlerThread.run (HandlerThread.java:67) "firebase-installations-executor-1" prio=5 tid=24 TimedWaiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2109) at java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:467) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1091) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:923) "firebase-installations-executor-2" prio=5 tid=25 TimedWaiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2109) at java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:467) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1091) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:923) "WM.task-1" prio=5 tid=26 Waiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:923) "OkHttp ConnectionPool" daemon prio=5 tid=27 TimedWaiting at java.lang.Object.wait (Native method) at com.android.okhttp.ConnectionPool$1.run (ConnectionPool.java:106) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:923) "WM.task-2" prio=5 tid=28 Waiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:923) "Okio Watchdog" daemon prio=5 tid=29 Waiting at java.lang.Object.wait (Native method) at java.lang.Object.wait (Object.java:442) at java.lang.Object.wait (Object.java:568) at com.android.okhttp.okio.AsyncTimeout.awaitTimeout (AsyncTimeout.java:313) at com.android.okhttp.okio.AsyncTimeout.access$000 (AsyncTimeout.java:42) at com.android.okhttp.okio.AsyncTimeout$Watchdog.run (AsyncTimeout.java:288) "RenderThread" daemon prio=7 tid=30 Native #00 pc 000000000009be5c /apex/com.android.runtime/lib/bionic/libc.so (__epoll_pwait+20) #00 pc 000000000006dcbd /apex/com.android.runtime/lib/bionic/libc.so (epoll_wait+16) #00 pc 0000000000011c99 /system/lib/libutils.so (android::Looper::pollInner(int)+128) #00 pc 0000000000011bc3 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+62) #00 pc 0000000000209d73 /system/lib/libhwui.so (android::uirenderer::ThreadBase::waitForWork()+86) #00 pc 0000000000220e0f /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+66) #00 pc 000000000000ee95 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+168) #00 pc 000000000000e9dd /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+256) #00 pc 00000000000aabe3 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) #00 pc 0000000000064023 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) "MessengerIpcClient" prio=5 tid=31 TimedWaiting at sun.misc.Unsafe.park (Native method) at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2109) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1132) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:849) at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at com.google.android.gms.common.util.concurrent.zza.run at java.lang.Thread.run (Thread.java:923) "Measurement Worker" prio=5 tid=32 TimedWaiting "Signal Catcher" daemon prio=10 tid=6 Runnable #00 pc 0000000000371015 /apex/com.android.art/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+76) #00 pc 000000000043fb87 /apex/com.android.art/lib/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+386) #00 pc 000000000043b553 /apex/com.android.art/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+34) #00 pc 0000000000458129 /apex/com.android.art/lib/libart.so (art::DumpCheckpoint::Run(art::Thread*)+664) #00 pc 0000000000453703 /apex/com.android.art/lib/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+354) #00 pc 0000000000452c3b /apex/com.android.art/lib/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)+1486) #00 pc 0000000000452335 /apex/com.android.art/lib/libart.so (art::ThreadList::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+604) #00 pc 000000000040adc7 /apex/com.android.art/lib/libart.so (art::Runtime::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+130) #00 pc 000000000041a94b /apex/com.android.art/lib/libart.so (art::SignalCatcher::HandleSigQuit()+1046) #00 pc 0000000000419cef /apex/com.android.art/lib/libart.so (art::SignalCatcher::Run(void*)+246) #00 pc 00000000000aabe3 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40) #00 pc 0000000000064023 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) "HeapTaskDaemon" daemon prio=5 tid=8 WaitingForTaskProcessor #00 pc 000000000005e2ec /apex/com.android.runtime/lib/bionic/libc.so (syscall+32) #00 pc 0000000000131075 /apex/com.android.art/lib/libart.so (art::ConditionVariable::TimedWait(art::Thread*, long long, int)+108) #00 pc 0000000000218af5 /apex/com.android.art/lib/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+300) #00 pc 00000000002191f5 /apex/com.android.art/lib/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+48) at dalvik.system.VMRuntime.runHeapTasks (Native method) at java.lang.Daemons$HeapTaskDaemon.runInternal (Daemons.java:531) at java.lang.Daemons$Daemon.run (Daemons.java:139) at java.lang.Thread.run (Thread.java:923) at com.brusgames.kingofcrusaderstrongholds.GoogleMobileAdsGM$1.run (GoogleMobileAdsGM.java:104) Are you using Ads extension? Which extensions exactly?
Maybe Ads blocking the main thread when loading/displaying. It's common problem last time, because there are no extension up-to-date... I am facing with simillar problems of ANRs.
GooglePlayBilling - out dated ( v.3 instead of 4.1.0 )
UnityAds - out dated ( SDK 3.7.5 instead of 4.0.0 )
GooglePlayServices - out dated
etc...
What version of API you are using? 30?
Anyway: I got serious problems with ANRs when updated GMS from 2.2 to 2.3.
I can't back to 2.2, because in 2.2 are too old libraries and Google Play rejects the upload. So we need to use 2.3 where Google Play let's us to publish the game, but extensions are too old and generates ANRs :)
Yes - only the official AbMob extension from YoYo Games.
Apart from ads, these are all the extensions I'm using:
  • Firebase Analytics Ext
  • Firebase Cloud Messaging Ext
  • GameAnalytics
  • Google Play Services
  • Google Play Services IAP
  • Mobile Review
  • All of those up-to-date (I mean - I'm using the latest version from YoYo marketplace).
    Maybe Ads blocking the main thread when loading/displaying. It's common problem last time, because there are no extension up-to-date... I am facing with simillar problems of ANRs. I've had various issues with ads too, but didn't seem like anything serious before - although whenever an ad finishes playing, there's a brief lag / pause in the game which I always thought was a bit awkward... Same with in-product purchases or mobile review pop-up, always "freezes" the game for approx. one second - but I guess that's normal behavior for GM on Android.
    All of those up-to-date (I mean - I'm using the latest version from YoYo marketplace). Unfortunately it doesn't mean that the extensions are up-to-date, of course they are - in Marketplace only, but their SDKs that extension uses are old. I mean - I don't even think it's a big deal for the players, but even 0.47% ANR rate puts you in the "danger zone" already, where your downloads and rankings are affected negatively, so every ANR case counts :)
    View attachment 47622 Yeah I know, the same here:
    If you are in Danger zone Google will cut your downloads ( will not promote, will remove your game from list of similar apps etc. ) as in my case. From 2000-3000 downloads per day to 500-1000.
    EDIT: sorry for double post
    I'm so sorry , I'm trying reduce ANRs and crashes on extensions and general issues in Android.
    How you can help me?
    Add Firebase Crashlytics in your games and report the bugs (too much better if you discover the way of replicate it)
    Regards
    Add Firebase Crashlytics in your games and report the bugs (too much better if you discover the way of replicate it) I am afraid about to add any new extensions to my game now, but I will try to export all ANR report logs into .txt file and will send you via PM ( it's a really much of reports and logs ) About 100-150. Maybe that will help you a little to resolve some problems with ANRs.
    First of all, I think the best way is just to update all Google extensions from YoyoMarket to the newest SDK versions. I mean extensions like Google services, In-App, billing, admob etc.
    I am 100% sure that in GMS 2.2 and target API 29 everything was OK -> I don't know, maybe it's a helpful information for you, but problems started with GM 2.3 and API 30/30+ <-- API 30 is required by Google now
    Thanks!
    exception_unhandled_handler(function(_exception) {
    var _info = json_stringify(_exception);
    FirebaseCrashlytics_Crash(_info);
    show_debug_message(_info);
    Does this then report ANRs too, or only crashes? Thanks.
    Thanks for the suggestion - I will try the Crashlytics extension from marketplace, but it will take at least a couple days to report anything (test, build, distribute to testers, wait for first ANRs etc.).
    
    Of course, this will take time, don't worries.
    exception_unhandled_handler(function(_exception) {
    var _info = json_stringify(_exception);
    FirebaseCrashlytics_Crash(_info);
    show_debug_message(_info);
    Does this then report ANRs too, or only crashes? Thanks.
    
    That code is triggered when is a crash, when is an ANRs is handled by the system.
    iirc ANRs only will appear if the device was an Android>10
    Regards
    Btw. I'm already collecting crash data using GameAnalytics - that should be a similar output. Would that kind of reports be useful as well, @jzavala?
    # Type of exception: java.lang.IllegalArgumentException
    # Exception message: No valid EGL configs match our minimum required spec
    # Thread name: GLThread 52
    # Stacktrace: java.lang.IllegalArgumentException: No valid EGL configs match our minimum required spec
    at com.brusgames.kingofcrusaderstrongholds.DemoGLSurfaceView.chooseConfig(DemoGLSurfaceView.java:343)
    at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1054)
    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1431)
    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1272)
    The Google Play Services IAP extension (aka GoogleBilling) just got a new release with an update to the library version (current version is now v4.1.0) Cool, thank you! I see that most of the YoYo extensions were updated (also Firebase etc.) - will give it a try right now :)
    If you are in Danger zone Google will cut your downloads ( will not promote, will remove your game from list of similar apps etc. ) as in my case. From 2000-3000 downloads per day to 500-1000. Are those downloads from organic discovery (no paid advertising) or form paid ad campaigns? If organic that's fantastic! It's hard to get any organic discovery now days on Google Play due to all the high spots are filled with paid ads. Btw. I'm already collecting crash data using GameAnalytics - that should be a similar output. Would that kind of reports be useful as well, @jzavala?
    # Type of exception: java.lang.IllegalArgumentException
    # Exception message: No valid EGL configs match our minimum required spec
    # Thread name: GLThread 52
    # Stacktrace: java.lang.IllegalArgumentException: No valid EGL configs match our minimum required spec
    at com.brusgames.kingofcrusaderstrongholds.DemoGLSurfaceView.chooseConfig(DemoGLSurfaceView.java:343)
    at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1054)
    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1431)
    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1272)
    Cool, thank you! I see that most of the YoYo extensions were updated (also Firebase etc.) - will give it a try right now :) Attach the device info and if is possible attach how replicate it
    Regards Add Firebase Crashlytics in your games and report the bugs (too much better if you discover the way of replicate it) So I've already got the first ANR from today :) Here it is:
    I suppose the highlighted part is where the ANR occured - adu.onTransact
    TXT version:
    Spoiler: Stack trace (txt)
    main (waiting): tid=1 systid=9331
           at java.lang.Object.wait(Native method)
           at java.lang.Object.wait(Object.java:442)
           at java.lang.Object.wait(Object.java:568)
           at com.google.android.gms.ads.exoplayer3.n.a(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:3)
           at com.google.android.gms.ads.internal.video.exoplayer3.ad.aJ(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:3)
           at com.google.android.gms.ads.internal.video.exoplayer3.n.M(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:1)
           at com.google.android.gms.ads.internal.video.exoplayer3.n.onSurfaceTextureDestroyed(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:5)
           at android.view.TextureView.releaseSurfaceTexture(TextureView.java:266)
           at android.view.TextureView.onDetachedFromWindowInternal(TextureView.java:237)
           at android.view.View.dispatchDetachedFromWindow(View.java:20856)
           at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:4018)
           at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:4018)
           at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:4018)
           at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5702)
           at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5673)
           at android.view.ViewGroup.removeView(ViewGroup.java:5604)
           at com.google.android.gms.ads.internal.overlay.k.o(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:1)
           at com.google.android.gms.ads.internal.overlay.k.w(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:6)
           at com.google.android.gms.ads.internal.overlay.k.f(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:4)
           at com.google.android.gms.ads.internal.overlay.client.a.bO(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:17)
           at adu.onTransact(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:4)
           at android.os.Binder.transact(Binder.java:1050)
           at com.google.android.gms.internal.ads.zzaoj.zzbt(com.google.android.gms:play-services-ads-base@@20.6.0:2)
           at com.google.android.gms.internal.ads.zzcbq.zzn(com.google.android.gms:play-services-ads-lite@@20.6.0:2)
           at com.google.android.gms.ads.AdActivity.onPause(com.google.android.gms:play-services-ads-lite@@20.6.0:1)
           at android.app.Activity.performPause(Activity.java:8333)
           at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1517)
           at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5221)
           at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5182)
           at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5125)
           at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
           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:2414)
           at android.os.Handler.dispatchMessage(Handler.java:106)
           at android.os.Looper.loop(Looper.java:265)
           at android.app.ActivityThread.main(ActivityThread.java:8360)
           at java.lang.reflect.Method.invoke(Native method)
           at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
    View attachment 47647
    I suppose the highlighted part is where the ANR occured - adu.onTransact
    TXT version:
    Spoiler: Stack trace (txt)
    main (waiting): tid=1 systid=9331
           at java.lang.Object.wait(Native method)
           at java.lang.Object.wait(Object.java:442)
           at java.lang.Object.wait(Object.java:568)
           at com.google.android.gms.ads.exoplayer3.n.a(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:3)
           at com.google.android.gms.ads.internal.video.exoplayer3.ad.aJ(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:3)
           at com.google.android.gms.ads.internal.video.exoplayer3.n.M(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:1)
           at com.google.android.gms.ads.internal.video.exoplayer3.n.onSurfaceTextureDestroyed(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:5)
           at android.view.TextureView.releaseSurfaceTexture(TextureView.java:266)
           at android.view.TextureView.onDetachedFromWindowInternal(TextureView.java:237)
           at android.view.View.dispatchDetachedFromWindow(View.java:20856)
           at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:4018)
           at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:4018)
           at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:4018)
           at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5702)
           at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5673)
           at android.view.ViewGroup.removeView(ViewGroup.java:5604)
           at com.google.android.gms.ads.internal.overlay.k.o(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:1)
           at com.google.android.gms.ads.internal.overlay.k.w(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:6)
           at com.google.android.gms.ads.internal.overlay.k.f(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:4)
           at com.google.android.gms.ads.internal.overlay.client.a.bO(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:17)
           at adu.onTransact(:com.google.android.gms.policy_ads_fdr_dynamite@[email protected]:4)
           at android.os.Binder.transact(Binder.java:1050)
           at com.google.android.gms.internal.ads.zzaoj.zzbt(com.google.android.gms:play-services-ads-base@@20.6.0:2)
           at com.google.android.gms.internal.ads.zzcbq.zzn(com.google.android.gms:play-services-ads-lite@@20.6.0:2)
           at com.google.android.gms.ads.AdActivity.onPause(com.google.android.gms:play-services-ads-lite@@20.6.0:1)
           at android.app.Activity.performPause(Activity.java:8333)
           at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1517)
           at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5221)
           at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5182)
           at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5125)
           at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
           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:2414)
           at android.os.Handler.dispatchMessage(Handler.java:106)
           at android.os.Looper.loop(Looper.java:265)
           at android.app.ActivityThread.main(ActivityThread.java:8360)
           at java.lang.reflect.Method.invoke(Native method)
           at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
    View attachment 47648
    Looks like it's related to AdMob SDK / policy / ad activity... Is that useful, @jzavala ? Yes, enough information, please fill a ticket if after update to the newer version of AdMob the issue persists Are those downloads from organic discovery (no paid advertising) or form paid ad campaigns? If organic that's fantastic! It's hard to get any organic discovery now days on Google Play due to all the high spots are filled with paid ads. Yeah, I'd be interested as well, these are some crazy high numbers even if it was from paid ads! My guess would be that it's simply such a great game with a loyal fanbase, very high review scores, and great retention / monetization, that Google promotes it organically a lot... After 9 years of work, it must be a big relief to see it succeed :) Really nice job. Yes, enough information, please fill a ticket if after update to the newer version of AdMob the issue persists I actually encountered another bug today, with 100% repro - related to Firebase messaging extension. I'm using only the Local notifications part of it, and what happens every time is:
  • Local notification pops up > if you tap it, you go to app, no problem there
  • However - if you do not tap it, the local notification will stay on the phone, still clickable (still not a problem)
  • If you tap the local notification WHILE the game is running (i.e. you open the game directly, not via the notification, and then tap the still displayed notification from "within" the game), it will cause the game to crash
  • I should probably fill a ticket for this, right? I actually encountered another bug today, with 100% repro - related to Firebase messaging extension. I'm using only the Local notifications part of it, and what happens every time is:
  • Local notification pops up > if you tap it, you go to app, no problem there
  • However - if you do not tap it, the local notification will stay on the phone, still clickable (still not a problem)
  • If you tap the local notification WHILE the game is running (i.e. you open the game directly, not via the notification, and then tap the still displayed notification from "within" the game), it will cause the game to crash
  • I should probably fill a ticket for this, right? Yes, fill a ticket. #02 pc 0x3a00a8 libart.so #03 pc 0x4040 libnativehelper.so #04 pc 0x159a68 libandroid_runtime.so #05 pc 0x19dac libutils.so #06 pc 0x199b0 libutils.so #07 pc 0x112bd8 libandroid_runtime.so at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:342) at android.os.Looper.loop(Looper.java:197) at android.app.ActivityThread.main(ActivityThread.java:7803) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
    #02 pc 0x67e9a0 libart.so #03 pc 0x67e77c libart.so at android.util.Log.println_native(Native method) at android.util.Log.i(Log.java:218) at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:2337) at android.view.inputmethod.InputMethodManager$DelegateImpl.startInput(InputMethodManager.java:699) at android.view.inputmethod.InputMethodManager$H.handleMessage(InputMethodManager.java:1056) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8528) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
    main (waiting): tid=1 systid=24479
           at java.lang.Object.wait(Native method)
           at java.lang.Object.wait(Object.java:442)
           at java.lang.Object.wait(Object.java:568)
           at android.opengl.GLSurfaceView$GLThread.onPause(GLSurfaceView.java:1731)
           at android.opengl.GLSurfaceView.onPause(GLSurfaceView.java:579)
           at com.brusgames.kingofcrusaderstrongholds.RunnerActivity.onPause(RunnerActivity.java:835)
           at android.app.Activity.performPause(Activity.java:8293)
           at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1560)
           at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5097)
           at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5058)
           at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5004)
           at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
           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:2319)
           at android.os.Handler.dispatchMessage(Handler.java:106)
           at android.os.Looper.loop(Looper.java:239)
           at android.app.ActivityThread.main(ActivityThread.java:8205)
           at java.lang.reflect.Method.invoke(Native method)
           at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1016)
    #04 pc 0x53e24 libbinder.so #05 pc 0x4c0b0 libbinder.so #06 pc 0x12bb50 libandroid_runtime.so at android.os.BinderProxy.transactNative(Native method) at android.os.BinderProxy.transact(BinderProxy.java:605) at android.hardware.display.IDisplayManager$Stub$Proxy.getDisplayInfo(IDisplayManager.java:1568) at android.hardware.display.DisplayManagerGlobal$1.recompute(DisplayManagerGlobal.java:159) at android.hardware.display.DisplayManagerGlobal$1.recompute(DisplayManagerGlobal.java:155) at android.app.PropertyInvalidatedCache.query(PropertyInvalidatedCache.java:438) at android.hardware.display.DisplayManagerGlobal.getDisplayInfoLocked(DisplayManagerGlobal.java:222) at android.hardware.display.DisplayManagerGlobal.getDisplayInfoLocked(DisplayManagerGlobal.java:214) at android.hardware.display.DisplayManagerGlobal.getDisplayInfo(DisplayManagerGlobal.java:195) at android.hardware.display.DisplayManagerGlobal.getCompatibleDisplay(DisplayManagerGlobal.java:325) at android.app.ResourcesManager.getAdjustedDisplay(ResourcesManager.java:383) at android.app.ResourcesManager.getDisplayMetrics(ResourcesManager.java:279) at android.app.ResourcesManager.getDisplayMetrics(ResourcesManager.java:269) at android.app.ResourcesManager.applyConfigurationToResourcesLocked(ResourcesManager.java:1521) at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:6458) at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:6395) at android.app.servertransaction.ConfigurationChangeItem.execute(ConfigurationChangeItem.java:42) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2336) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8653) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
    Hi @clee2005 - unfortunately, I started the open testing on April 8 this year, so it was already version 2022.3.0.625 from the start, so I can't compare.
    I didn't have a problem with ANRs in my previous game (which was released last year ) - or at least it wasn't significant, well below the "danger zone". I just check it again and there are some ANRs as well over the past month (no update went live for that one since last year, so it's well pre-2022), but ANR were below 0.3% all the time and most of them were on pretty old Android versions (SDK 23, 24 etc.).
    With the current game, it's the opposite - ANRs happening mostly on Android 11. Maybe it's also because I set a higher minimum SDK level (25) to avoid problems...
    @Dune Veteran Did you never have ANR's until 2022.3.0? I'm noticing a substantially higher number of ANR's with 2022.3.0.625 from 2022.2.0.491. Not sure if it's coincidence yet, but I'm trying to narrow it down now. Yes, the problem began with GMS 2.3+. With GMS 2.2 everything was OK. Also as @Dune Veteran said mostly it's on Android 11.
    The most ANR are at GLThread: split_config.arm64_v8a.apk!libyoyo.so
    Spoiler
    #00 pc 000000000034f870 /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (DoSet(unsigned int, unsigned char*, unsigned char const*, VMExec*)+436)
    #00 pc 0000000000354b6c /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (VM::ExecRelease(VMExec&, RValue*)+332)
    #00 pc 0000000000354a00 /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (VM::Exec(CCode*, YYObjectBase*, YYObjectBase*, RValue*, YYObjectBase*, int, RValue*, int, YYObjectBase*)+1080)
    #00 pc 000000000033f7b0 /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (ExecuteIt(CInstance*, CInstance*, CCode*, RValue*, int)+316)
    #00 pc 000000000033f80c /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (Code_Execute(CInstance*, CInstance*, CCode*, RValue*, int)+8)
    #00 pc 000000000044d814 /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (StartRoom(int, bool)+2824)
    #00 pc 00000000004502c0 /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (MainLoop_Process()+1432)
    #00 pc 0000000000527c8c /data/app/~~DnjVrqJmPVVQKoNI6KAm7w==/com.GearStudio.AlmoraDarkosen-uXpZaj7SCdp1pSQAe42P0g==/split_config.arm64_v8a.apk!libyoyo.so (Java_com_yoyogames_runner_RunnerJNILib_Process+800)
    at com.yoyogames.runner.RunnerJNILib.Process (Native method)
    at com.GearStudio.AlmoraDarkosen.DemoRenderer.onDrawFrame (DemoRenderer.java:508)
    at android.opengl.GLSurfaceView$GLThread.guardedRun (GLSurfaceView.java:1581)
    at android.opengl.GLSurfaceView$GLThread.run (GLSurfaceView.java:1280)
    I'm just wondering - I know it's a noob question, but isn't it possible that most of these ANRs could be caused simply by the apps being too performance-heavy at certain points, such as complex calculations for a lot of objects or a lot of objects being drawn at the same time? I mean - over the last 7 days, I've had 7 different ANRs and I'm kind of thinking that maybe it's not the extensions or GMS that's causing them, maybe it's just me doing something wrong :D
    I have done some profiling tests in the past as well and it didn't really seem like anything would stand out, but who knows... What I noticed though was that some draw events have pretty huge call counts, which I can try to limit, but - is that even something that could cause ANRs and not show in Crashlytics properly?
    I'm just wondering - I know it's a noob question, but isn't it possible that most of these ANRs could be caused simply by the apps being too performance-heavy at certain points, such as complex calculations for a lot of objects or a lot of objects being drawn at the same time? I mean - over the last 7 days, I've had 7 different ANRs and I'm kind of thinking that maybe it's not the extensions or GMS that's causing them, maybe it's just me doing something wrong :D
    I have done some profiling tests in the past as well and it didn't really seem like anything would stand out, but who knows... What I noticed though was that some draw events have pretty huge call counts, which I can try to limit, but - is that even something that could cause ANRs and not show in Crashlytics properly? Yes, it's possible that the main thread is overloaded and makes a freeze, but since update from 2.2 to 2.3 ( first time ) I nothing changed in my code, I just compiled the same project with new version of GameMaker and I noticed a lot of ANR errors with Android 11 and GLsurface problems etc.
    Problems are only for Android 11, so I guess if the code is bad/laggy that it should happen for older devices too with Android 4.4,5, 6,7...
    Following the thread, since I've been having ANR issues (as most Android devs probably are) From my limited investigation they're quite often related to the ad SDKs (not even a problem of the extension itself) and Google Ads are notoriously bad about it. I dropped the idea of using banners completely. My crash rate is very low, but ANRs have been hovering about the bad behavior threshold and stressing me out. Play Services could be another culprit, basically anything what opens or overlays something above the game.
    Toying with an idea of rolling out a version without Admob to 10% players to see how vitals compare to the base version.
    ...so my assumption is that one possible "solution" to the ANR problem might actually be to exclude phones with less than 3 GB RAM, if that's even doable. However, this would mean cutting off around 30% of potential (or even current) players. Tough decision :) I wouldn't even consider it a solution, rather a temporary (and brutal) workaround until some other solution is found.
    ...or simply wait until Android 12 spreads to more phones, because there doesn't seem to be this problem anymore (at least from my limited data):
    Are you guys seeing similarly high ANR rates for devices with under 3 GB RAM in your Android Vitals too? In my case RAM doesn't matter. All devices with Android 11 has a problems... With 1GB and with 4GB of RAM.
    What is your ANRs now? It's better or still the same?
    Just an update after a few weeks - it seems that the only way for now to reduce ANRs is to simply exclude devices which have high ANR rates. Unfortunately, that also cuts off maybe 20% of potential installs and annoys people when they hear about the game or a new update and cannot get it... But I have not found any other way to deal with it yet. At least the chart now looks a bit promising:
    What I think helped the most was a rule which excludes 5-10 of the most problematic systems on chip, and players with low RAM. I'm now keeping it at 1.5GB RAM minimum - 3GB would be even better from the ANR point of view, but I got complaints from people and reduced it back.
    The sad thing is that even with low RAM, Android 11 and a problematic device, 97% of player even with these "unlucky" configurations simply won't be able to play. Anyway - on Android 12, the ANR problem seems to be basically non-existent, so we can at least hope that Android 12 spreads as fast as possible :)
    What I think helped the most was a rule which excludes 5-10 of the most problematic systems on chip, and players with low RAM. I'm now keeping it at 1.5GB RAM minimum - 3GB would be even better from the ANR point of view, but I got complaints from people and reduced it back. Thanks for sharing. It makes sense; my tiny little game takes about 120MB RAM and that's like 1/8 for devices that showed performance warnings on cold start time in the prelaunch reports. Do you see similar things in prelaunch reports (would you mind sharing how much RAM your game typically uses)? Did you get complaints from users <= 2GB RAM? I saw many frozen frame warnings from some, and they seem to be more than 4 years old phones.
    [Edit: I now understand why we should limit <= 1.5GB instead of 2GB. Many devices have 1.7~1.9GB RAM available; they're not much different from 2GB devices.]
    @Mert
    I vaguely remembered that GMS tries to move banner AdView around in order to pin it to specified position once it is loaded, by calling GoogleMobileAds_MoveBanner. Could it be related to the performance hit you saw? I had modified my runtime's banner res/layout from AbsoluteLayout to RelativeLayout (probably to fit Google's doc recommendation somewhere; I don't know; good enough for me to put a banner in the bottom center) so I had lost track of how GMS handles it now.
    In my case -> According to Google ANR errors the problem is with kind of rendering surface or refresh rate for Android 11 devices.
    DemoRenderer.java at line 508 . I am not a java developer, but Google ANR report indicates this line 508 for 70% cases of my ANRs.
    I'm sure that GMS 2.3 is broken and can't handle it, on GMS 2.2 there was no problems with ANRs even for Andorid 11.
    So, I just excluded all devices that GMS can't handle ( I lost about 20% of new installs ), but ANRs ale lower now... Better to has less installs than punishment from Google Play because of ANRs.
    My firend is also developing action RPG game ( similar number of game downloads as mine ), but it's 3D game and needs more RAM and GPU ( the whole game is made wit Unity3D with Unity Ads extension also ), but he isn't noticed ANRs with Android 11. His game is available from Android 4.4.
    In my case it doesn't matter too much that it's 1GB or 4GB RAM device, all of them has ANRs after GMS 2.2.
    I guess there may be a problem when user click HOME button ( application goes to background ) and when he back to the game there is a lag.
    I remember when the .QOI texture compression option came in and it was bugged (before the .QOI + BZ option was available in options), the game was full of ANR errors, because players waited over 5 seconds for the texture to load. At the same time, when the player left the game via the HOME button and came back, it was as if these textures had to load again and everything was horribly lagging.
    In the current version with fixed .QOI ( option to turn off the BZ ), this problem is not present, but a small amount of lag has remained when you back to the game.
    Maybe GM is just bad at surface/texture management on Android 11? Maybe there is a hole in the code?
    I have no idea if DemoRenderer.java is a good lead, but the Google logs only show there is a problem at line 508.
    My code is OK, because Androids 4,5,6,7,8,9,10 and 12 with 1,2,3,4 GB of RAM has no problems.
    I have also different game ( last update with GMS 2.2 ) over 500.000 downloads, no ANRs for Android 11. Game is using the same extensions as Almora Darkosen .
    Google Play - Tupek
    In my case -> According to Google ANR errors the problem is with kind of rendering surface or refresh rate for Android 11 devices.
    DemoRenderer.java at line 508 . I am not a java developer, but Google ANR report indicates this line 508 for 70% cases of my ANRs. This looks like a good lead - maybe a tip for @jzavala and the team?
    In my case, things were looking better for a while, today I finally got almost below the bad behavior threshold... But then a new update broke it again. Very frustrating, I didn't even change anything big in the game - maybe it's just new players getting to later stages of the game... Who knows. It feels quite random, so I'm back to excluding more devices again and waiting to see if it helped or not...
    Hello everyone ! In my case, I just limited the number of rewarded video ads (it used to be infinite as long as Admob had a video to give) and now I'm going to get rid of banner ads. Wouldn't that hurt your revenue quite significantly? Or does most of your revenue come from interstitials or other ads? I mean - it would probably help to some extent, but I'm not sure if it's worth it...
    In my case, excluding the most problematic CPUs and low RAM phones actually helped over time, so now I'm finally back under the bad behavior threshold - but I'm afraid it might go up at some point again:
    Hopefully, Android 12 will keep spreading more and more, eliminating the ANR issue altogether :) (it's almost non-existent there):
    Android - get native symbols from libyoyo.so to upload them to google play for better debugging
    Hello guys I try to get the native symbols of my app to upload them to google play console for better debugging of native ANR´s or crashes. This is what google play console needs to de obfuscate native crashes like this one: or to log native crashes with crashlytics. Old answer from YYG...
    @Dune Veteran have you done this: https://forum.yoyogames.com/index.php?threads/high-anr-errors.83336/post-548408
    What says it, then I may can help. I was able to reduce 1% anr to 0.3%
    @Dune Veteran have you done this: https://forum.yoyogames.com/index.php?threads/high-anr-errors.83336/post-548408
    What says it, then I may can help. I was able to reduce 1% anr to 0.3% Hi @Mool - yes, that was one of the first threads I went through - very informative, thanks for that! Based on it, one of the first things I did was to go through my logs in Crashlytics, but unfortunately, I'd say that maybe 95% of my ANRs do not even mention "yoyo", "libyoyo" etc. And I've had tens of different ANR types, all over the place.
    Disclaimer - I'm not an expert in programming at all, and I wouldn't know how to fix these problems even I knew exactly what caused them, but my gut feeling is that in my case, the reason for high ANR rate is (or hopefully was ):
  • Android 11
  • Rewarded and interstitial ads which take focus from the game and then the game takes it back - Android 11 doesn't seem to be able to handle that well at all, in general (you'll find similar cases on Unity forums as well)
  • Extensions in general - funnily enough, I even had a few ANRs caused by Firebase Crashlytics :D
  • Google services - billing pop-ups, Google Play rating requests etc. (basically anything which overlays over the app)
  • General performance of the game - I'm sure in your case, you don't have crazy stuff like I had when profiling on Android (e.g. calculating and drawing 40 objects although they weren't even on the screen etc.)
  • A few device types which cause a big part of the problems (typically Mediatek MT6765 is the worst, or those with Android 11 and RAM below 2GB) can be easily excluded, but it does come at a cost of some % of potential installs...
  • Personally, I'm afraid that until YoYoGames manage to fix it somehow on GMS2 side (which I doubt would be even possible for e.g. the issues with Google Ads), Android 12 will already have large enough share of devices that the issue will slowly go away by itself...
    What always strikes me is how high the peer median for ANRs is - in some genres, it's almost at the bad behavior threshold, or even above - and that's only the median of all games in the genre, not just GMS-ones... There must be so many games above the threshold, it's almost hard to believe that the peer metrics are actually correct: