Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ANR in com.google.android.exoplayer2.PlayerMessage.blockUntilDelivered() #5887

Closed
Odysseos opened this issue May 14, 2019 · 22 comments
Closed
Assignees

Comments

@Odysseos
Copy link

Odysseos commented May 14, 2019

Issue description

I see ANR in Google Play Console on Xiaomi MiBox S (oneday), Android 8.1 (I use ExoPlayer r2.9.6, but this device is absent in ExoPlayer r2.10.0 MediaCodecVideoRenderer.codecNeedsSetOutputSurfaceWorkaround() too)

Reproduction steps

Unknown

Link to test content

Unknown

Version of ExoPlayer being used

r2.9.6

A full bug report captured from the device

Xiaomi MiBox S (oneday), Android 8.1


"main" tid=1 Waiting
"main" prio=5 tid=1 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x7319a978 self=0xee0cc000
  | sysTid=24873 nice=-10 cgrp=default sched=0/0 handle=0xf1a404a4
  | state=S schedstat=( 65302758425 24240539006 99507 ) utm=5317 stm=1212 core=1 HZ=100
  | stack=0xff010000-0xff012000 stackSize=8MB
  | held mutexes=
 
  at java.lang.Object.wait (Object.java)
- waiting on <0x0d4cc94b> (a com.google.android.exoplayer2.v)
 
  at com.google.android.exoplayer2.PlayerMessage.blockUntilDelivered (PlayerMessage.java:282)
- locked <0x0d4cc94b> (a com.google.android.exoplayer2.v)
 
  at com.google.android.exoplayer2.SimpleExoPlayer.setVideoSurfaceInternal (SimpleExoPlayer.java:1150)
 
  at com.google.android.exoplayer2.SimpleExoPlayer.setVideoSurfaceHolder (SimpleExoPlayer.java:340)
 
  at ru.kinopoisk.tv.presentation.player.PlayerAdapterImpl.setDisplay (PlayerAdapterImpl.java:62)
 
  at ru.kinopoisk.tv.presentation.player.PlayerAdapterImpl.access$setDisplay (PlayerAdapterImpl.java:17)
 
  at ru.kinopoisk.tv.presentation.player.PlayerAdapterImpl$VideoPlayerSurfaceHolderCallback.surfaceDestroyed (PlayerAdapterImpl.java:215)
 
  at android.support.v17.leanback.app.VideoSupportFragment$1.surfaceDestroyed (VideoSupportFragment.java:65)
 
  at android.view.SurfaceView.updateSurface (SurfaceView.java:620)
 
  at android.view.SurfaceView.onWindowVisibilityChanged (SurfaceView.java:248)
 
  at android.view.View.dispatchWindowVisibilityChanged (View.java:12133)
 
  at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1491)
 
  at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1491)
 
  at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1491)
 
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1686)
 
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1392)
 
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6752)
 
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:911)
 
  at android.view.Choreographer.doCallbacks (Choreographer.java:723)
 
  at android.view.Choreographer.doFrame (Choreographer.java:658)
 
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:897)
 
  at android.os.Handler.handleCallback (Handler.java:790)
 
  at android.os.Handler.dispatchMessage (Handler.java:99)
 
  at android.os.Looper.loop (Looper.java:164)
 
  at android.app.ActivityThread.main (ActivityThread.java:6494)
 
  at java.lang.reflect.Method.invoke (Method.java)
 
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438)
 
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:807)
"Jit thread pool worker thread 0" tid=2 Native
"Jit thread pool worker thread 0" daemon prio=5 tid=2 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc0218 self=0xe640c000
  | sysTid=24878 nice=9 cgrp=default sched=0/0 handle=0xe63ff970
  | state=S schedstat=( 894260060 295834023 772 ) utm=78 stm=10 core=3 HZ=100
  | stack=0xe6301000-0xe6303000 stackSize=1022KB
  | held mutexes=
 
  #00  pc 0000000000018ce8  /system/lib/libc.so (syscall+28)
 
  #01  pc 00000000000b7889  /system/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+88)
 
  #02  pc 00000000003941df  /system/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+170)
 
  #03  pc 0000000000393b4b  /system/lib/libart.so (art::ThreadPoolWorker::Run()+62)
 
  #04  pc 000000000039376b  /system/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+90)
 
  #05  pc 0000000000047e23  /system/lib/libc.so (__pthread_start(void*)+22)
 
  #06  pc 000000000001b287  /system/lib/libc.so (__start_thread+32)
"ReferenceQueueDaemon" tid=4 Waiting
"ReferenceQueueDaemon" daemon prio=5 tid=4 Waiting
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x12fc0328 self=0xe614e400
  | sysTid=24880 nice=4 cgrp=default sched=0/0 handle=0xd6b81970
  | state=S schedstat=( 173970337 338454037 436 ) utm=11 stm=6 core=2 HZ=100
  | stack=0xd6a7f000-0xd6a81000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0a08bf28> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
 
  at java.lang.Daemons$ReferenceQueueDaemon.runInternal (Daemons.java:178)
- locked <0x0a08bf28> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
 
  at java.lang.Daemons$Daemon.run (Daemons.java:103)
 
  at java.lang.Thread.run (Thread.java:764)
"FinalizerWatchdogDaemon" tid=5 Waiting
"FinalizerWatchdogDaemon" daemon prio=5 tid=5 Waiting
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x12fc03b0 self=0xe3836600
  | sysTid=24882 nice=4 cgrp=default sched=0/0 handle=0xd6977970
  | state=S schedstat=( 6853083 20020581 81 ) utm=0 stm=0 core=3 HZ=100
  | stack=0xd6875000-0xd6877000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x00e7c441> (a java.lang.Daemons$FinalizerWatchdogDaemon)
 
  at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded (Daemons.java:297)
- locked <0x00e7c441> (a java.lang.Daemons$FinalizerWatchdogDaemon)
 
  at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal (Daemons.java:277)
 
  at java.lang.Daemons$Daemon.run (Daemons.java:103)
 
  at java.lang.Thread.run (Thread.java:764)
"FinalizerDaemon" tid=7 Waiting
"FinalizerDaemon" daemon prio=5 tid=7 Waiting
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x12fc0438 self=0xe614ea00
  | sysTid=24881 nice=4 cgrp=default sched=0/0 handle=0xd6a7c970
  | state=S schedstat=( 110874289 284324545 246 ) utm=5 stm=5 core=3 HZ=100
  | stack=0xd697a000-0xd697c000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0bc08de6> (a java.lang.Object)
 
  at java.lang.Object.wait (Object.java:422)
 
  at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:188)
- locked <0x0bc08de6> (a java.lang.Object)
 
  at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:209)
 
  at java.lang.Daemons$FinalizerDaemon.runInternal (Daemons.java:232)
 
  at java.lang.Daemons$Daemon.run (Daemons.java:103)
 
  at java.lang.Thread.run (Thread.java:764)
"Binder:24873_1" tid=8 Native
"Binder:24873_1" prio=5 tid=8 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc04c0 self=0xe640fc00
  | sysTid=24884 nice=0 cgrp=default sched=0/0 handle=0xd666f970
  | state=S schedstat=( 548391422 3745487710 7263 ) utm=7 stm=47 core=2 HZ=100
  | stack=0xd6575000-0xd6577000 stackSize=1006KB
  | held mutexes=
 
  #00  pc 0000000000049574  /system/lib/libc.so (__ioctl+8)
 
  #01  pc 000000000001e0ff  /system/lib/libc.so (ioctl+38)
 
  #02  pc 0000000000042759  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+204)
 
  #03  pc 0000000000042865  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+8)
 
  #04  pc 0000000000042dc7  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+38)
 
  #05  pc 000000000005867d  /system/lib/libbinder.so (???)
 
  #06  pc 000000000000d2c5  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+144)
 
  #07  pc 000000000006de7d  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+80)
 
  #08  pc 0000000000047e23  /system/lib/libc.so (__pthread_start(void*)+22)
 
  #09  pc 000000000001b287  /system/lib/libc.so (__start_thread+32)
"Binder:24873_2" tid=9 Native
"Binder:24873_2" prio=5 tid=9 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc0548 self=0xee10d200
  | sysTid=24885 nice=0 cgrp=default sched=0/0 handle=0xd6572970
  | state=S schedstat=( 305792381 1276441208 3799 ) utm=8 stm=21 core=1 HZ=100
  | stack=0xd6478000-0xd647a000 stackSize=1006KB
  | held mutexes=
 
  #00  pc 0000000000049574  /system/lib/libc.so (__ioctl+8)
 
  #01  pc 000000000001e0ff  /system/lib/libc.so (ioctl+38)
 
  #02  pc 0000000000042759  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+204)
 
  #03  pc 0000000000042865  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+8)
 
  #04  pc 0000000000042dc7  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+38)
 
  #05  pc 000000000005867d  /system/lib/libbinder.so (???)
 
  #06  pc 000000000000d2c5  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+144)
 
  #07  pc 000000000006de7d  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+80)
 
  #08  pc 0000000000047e23  /system/lib/libc.so (__pthread_start(void*)+22)
 
  #09  pc 000000000001b287  /system/lib/libc.so (__start_thread+32)
"Profile Saver" tid=10 Native
"Profile Saver" daemon prio=5 tid=10 Native
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x12fc05d0 self=0xe641e800
  | sysTid=24886 nice=9 cgrp=default sched=0/0 handle=0xd527f970
  | state=S schedstat=( 67252081 15107208 61 ) utm=6 stm=0 core=2 HZ=100
  | stack=0xd5185000-0xd5187000 stackSize=1006KB
  | held mutexes=
 
  #00  pc 0000000000018ce8  /system/lib/libc.so (syscall+28)
 
  #01  pc 00000000000b7889  /system/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+88)
 
  #02  pc 0000000000277713  /system/lib/libart.so (art::ProfileSaver::Run()+346)
 
  #03  pc 0000000000279ac7  /system/lib/libart.so (art::ProfileSaver::RunProfileSaverThread(void*)+50)
 
  #04  pc 0000000000047e23  /system/lib/libc.so (__pthread_start(void*)+22)
 
  #05  pc 000000000001b287  /system/lib/libc.so (__start_thread+32)
"queued-work-looper" tid=11 Native
"queued-work-looper" prio=5 tid=11 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc0658 self=0xe37ba600
  | sysTid=24891 nice=-2 cgrp=default sched=0/0 handle=0xd5059970
  | state=S schedstat=( 205865576 493664049 420 ) utm=5 stm=15 core=2 HZ=100
  | stack=0xd4f57000-0xd4f59000 stackSize=1038KB
  | held mutexes=
 
  #00  pc 0000000000049438  /system/lib/libc.so (__epoll_pwait+20)
 
  #01  pc 000000000001b681  /system/lib/libc.so (epoll_pwait+60)
 
  #02  pc 000000000001b6b1  /system/lib/libc.so (epoll_wait+12)
 
  #03  pc 0000000000010153  /system/lib/libutils.so (android::Looper::pollInner(int)+118)
 
  #04  pc 0000000000010045  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+32)
 
  #05  pc 00000000000b1f41  /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, _jobject*, int)+24)
 
  #06  pc 00000000001806e5  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
 
  at android.os.MessageQueue.nativePollOnce (Native method)
 
  at android.os.MessageQueue.next (MessageQueue.java:325)
 
  at android.os.Looper.loop (Looper.java:142)
 
  at android.os.HandlerThread.run (HandlerThread.java:65)
"Queue" tid=13 Waiting
"Queue" prio=10 tid=13 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc07d8 self=0xe37bb200
  | sysTid=24893 nice=-8 cgrp=default sched=0/0 handle=0xd4e4f970
  | state=S schedstat=( 86199210 13305665 48 ) utm=8 stm=0 core=2 HZ=100
  | stack=0xd4d4d000-0xd4d4f000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x021caf27> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x021caf27> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.PriorityBlockingQueue.take (PriorityBlockingQueue.java:548)
 
  at io.fabric.sdk.android.services.concurrency.b.a (DependencyPriorityBlockingQueue.java:197)
 
  at io.fabric.sdk.android.services.concurrency.b.b (DependencyPriorityBlockingQueue.java:236)
 
  at io.fabric.sdk.android.services.concurrency.b.take (DependencyPriorityBlockingQueue.java:4065)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"Queue" tid=14 Waiting
"Queue" prio=10 tid=14 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc1668 self=0xe37bb800
  | sysTid=24894 nice=10 cgrp=default sched=0/0 handle=0xd4d4a970
  | state=S schedstat=( 36173457 24273665 73 ) utm=2 stm=1 core=3 HZ=100
  | stack=0xd4c48000-0xd4c4a000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x02bea5d4> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x02bea5d4> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.PriorityBlockingQueue.take (PriorityBlockingQueue.java:548)
 
  at io.fabric.sdk.android.services.concurrency.b.a (DependencyPriorityBlockingQueue.java:197)
 
  at io.fabric.sdk.android.services.concurrency.b.b (DependencyPriorityBlockingQueue.java:236)
 
  at io.fabric.sdk.android.services.concurrency.b.take (DependencyPriorityBlockingQueue.java:4065)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"Queue" tid=15 Waiting
"Queue" prio=10 tid=15 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc1970 self=0xe37bbe00
  | sysTid=24895 nice=10 cgrp=default sched=0/0 handle=0xd4c45970
  | state=S schedstat=( 1553999 900334 11 ) utm=0 stm=0 core=1 HZ=100
  | stack=0xd4b43000-0xd4b45000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x07ab637d> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x07ab637d> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.PriorityBlockingQueue.take (PriorityBlockingQueue.java:548)
 
  at io.fabric.sdk.android.services.concurrency.b.a (DependencyPriorityBlockingQueue.java:197)
 
  at io.fabric.sdk.android.services.concurrency.b.b (DependencyPriorityBlockingQueue.java:236)
 
  at io.fabric.sdk.android.services.concurrency.b.take (DependencyPriorityBlockingQueue.java:4065)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"Queue" tid=16 Waiting
"Queue" prio=10 tid=16 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc1b78 self=0xe37bc400
  | sysTid=24896 nice=10 cgrp=default sched=0/0 handle=0xd4b40970
  | state=S schedstat=( 1450207 34667 11 ) utm=0 stm=0 core=1 HZ=100
  | stack=0xd4a3e000-0xd4a40000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0bf7a272> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x0bf7a272> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.PriorityBlockingQueue.take (PriorityBlockingQueue.java:548)
 
  at io.fabric.sdk.android.services.concurrency.b.a (DependencyPriorityBlockingQueue.java:197)
 
  at io.fabric.sdk.android.services.concurrency.b.b (DependencyPriorityBlockingQueue.java:236)
 
  at io.fabric.sdk.android.services.concurrency.b.take (DependencyPriorityBlockingQueue.java:4065)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"Queue" tid=17 Waiting
"Queue" prio=10 tid=17 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc1cf0 self=0xee0c0e00
  | sysTid=24897 nice=10 cgrp=default sched=0/0 handle=0xd4a3b970
  | state=S schedstat=( 1637541 1838667 5 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xd4939000-0xd493b000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x021b16c3> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x021b16c3> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.PriorityBlockingQueue.take (PriorityBlockingQueue.java:548)
 
  at io.fabric.sdk.android.services.concurrency.b.a (DependencyPriorityBlockingQueue.java:197)
 
  at io.fabric.sdk.android.services.concurrency.b.b (DependencyPriorityBlockingQueue.java:236)
 
  at io.fabric.sdk.android.services.concurrency.b.take (DependencyPriorityBlockingQueue.java:4065)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"Crashlytics Exception Handler1" tid=18 Waiting
"Crashlytics Exception Handler1" prio=5 tid=18 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc2018 self=0xe37c5c00
  | sysTid=24904 nice=10 cgrp=default sched=0/0 handle=0xd44fa970
  | state=S schedstat=( 149920490 327342624 507 ) utm=6 stm=8 core=1 HZ=100
  | stack=0xd43f8000-0xd43fa000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0a0fba79> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x0a0fba79> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at io.fabric.sdk.android.services.common.k$1$1.a (ExecutorUtils.java:75)
 
  at io.fabric.sdk.android.services.common.g.run (BackgroundPriorityRunnable.java:30)
 
  at java.lang.Thread.run (Thread.java:764)
"Answers Events Handler1" tid=19 Waiting
"Answers Events Handler1" prio=5 tid=19 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc1eb8 self=0xe37bca00
  | sysTid=24900 nice=10 cgrp=default sched=0/0 handle=0xd4831970
  | state=S schedstat=( 15287333 15910082 31 ) utm=1 stm=0 core=1 HZ=100
  | stack=0xd472f000-0xd4731000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x044a4b40> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x044a4b40> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1120)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1113)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at io.fabric.sdk.android.services.common.k$1$1.a (ExecutorUtils.java:75)
 
  at io.fabric.sdk.android.services.common.g.run (BackgroundPriorityRunnable.java:30)
 
  at java.lang.Thread.run (Thread.java:764)
"Thread-10" tid=20 Sleeping
"Thread-10" prio=5 tid=20 Sleeping
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f84710 self=0xd4313a00
  | sysTid=24938 nice=0 cgrp=default sched=0/0 handle=0xced8c970
  | state=S schedstat=( 4149362563 7294931643 21934 ) utm=207 stm=207 core=1 HZ=100
  | stack=0xcec8a000-0xcec8c000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Thread.sleep (Native method)
- sleeping on <0x0f3e3c96> (a java.lang.Object)
 
  at java.lang.Thread.sleep (Thread.java:373)
- locked <0x0f3e3c96> (a java.lang.Object)
 
  at java.lang.Thread.sleep (Thread.java:314)
 
  at android.os.SystemClock.sleep (SystemClock.java:122)
 
  at c.a.b.run (EventSender.java:72)
 
  at java.lang.Thread.run (Thread.java:764)
"RxComputationThreadPool-4" tid=21 TimedWaiting
"RxComputationThreadPool-4" daemon prio=5 tid=21 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc2900 self=0xd3d20400
  | sysTid=24939 nice=0 cgrp=default sched=0/0 handle=0xcea89970
  | state=S schedstat=( 13225416 15876083 44 ) utm=0 stm=0 core=3 HZ=100
  | stack=0xce987000-0xce989000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x05f9b017> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x05f9b017> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2101)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1132)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1113)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"YMM-APT-1" tid=22 Native
"YMM-APT-1" prio=5 tid=22 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f83dd8 self=0xe37c6800
  | sysTid=24908 nice=0 cgrp=default sched=0/0 handle=0xd40cb970
  | state=S schedstat=( 75594756 20403747 105 ) utm=4 stm=2 core=3 HZ=100
  | stack=0xd3fc9000-0xd3fcb000 stackSize=1038KB
  | held mutexes=
 
  #00  pc 0000000000049438  /system/lib/libc.so (__epoll_pwait+20)
 
  #01  pc 000000000001b681  /system/lib/libc.so (epoll_pwait+60)
 
  #02  pc 000000000001b6b1  /system/lib/libc.so (epoll_wait+12)
 
  #03  pc 0000000000010153  /system/lib/libutils.so (android::Looper::pollInner(int)+118)
 
  #04  pc 0000000000010045  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+32)
 
  #05  pc 00000000000b1f41  /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, _jobject*, int)+24)
 
  #06  pc 00000000001806e5  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
 
  at android.os.MessageQueue.nativePollOnce (Native method)
 
  at android.os.MessageQueue.next (MessageQueue.java:325)
 
  at android.os.Looper.loop (Looper.java:142)
 
  at android.os.HandlerThread.run (HandlerThread.java:65)
"YMM-DW-2" tid=23 Waiting
"YMM-DW-2" prio=5 tid=23 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f83ec0 self=0xd461aa00
  | sysTid=24910 nice=0 cgrp=default sched=0/0 handle=0xd3fc6970
  | state=S schedstat=( 34597874 23504290 37 ) utm=2 stm=0 core=1 HZ=100
  | stack=0xd3ec4000-0xd3ec6000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x061973be> (a com.yandex.metrica.impl.ob.jh$a)
 
  at com.yandex.metrica.impl.ob.jh$a.run (SourceFile:84)
- locked <0x061973be> (a com.yandex.metrica.impl.ob.jh$a)
"YMM-YM-3" tid=24 Native
"YMM-YM-3" prio=5 tid=24 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f83f50 self=0xd4629800
  | sysTid=24911 nice=0 cgrp=default sched=0/0 handle=0xd3ec1970
  | state=S schedstat=( 29512876 114814831 88 ) utm=1 stm=1 core=2 HZ=100
  | stack=0xd3dbf000-0xd3dc1000 stackSize=1038KB
  | held mutexes=
 
  #00  pc 0000000000049438  /system/lib/libc.so (__epoll_pwait+20)
 
  #01  pc 000000000001b681  /system/lib/libc.so (epoll_pwait+60)
 
  #02  pc 000000000001b6b1  /system/lib/libc.so (epoll_wait+12)
 
  #03  pc 0000000000010153  /system/lib/libutils.so (android::Looper::pollInner(int)+118)
 
  #04  pc 0000000000010045  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+32)
 
  #05  pc 00000000000b1f41  /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, _jobject*, int)+24)
 
  #06  pc 00000000001806e5  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
 
  at android.os.MessageQueue.nativePollOnce (Native method)
 
  at android.os.MessageQueue.next (MessageQueue.java:325)
 
  at android.os.Looper.loop (Looper.java:142)
 
  at android.os.HandlerThread.run (HandlerThread.java:65)
"YMM-BD-4" tid=25 Waiting
"YMM-BD-4" prio=5 tid=25 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f84038 self=0xd4629e00
  | sysTid=24912 nice=0 cgrp=default sched=0/0 handle=0xd3cff970
  | state=S schedstat=( 679251 1728375 2 ) utm=0 stm=0 core=1 HZ=100
  | stack=0xd3bfd000-0xd3bff000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0d0e5c1f> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x0d0e5c1f> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
 
  at com.yandex.metrica.impl.ob.cg$1.run (SourceFile:93)
 
  at java.lang.Thread.run (Thread.java:764)
"YMM-RS-5" tid=26 Native
"YMM-RS-5" prio=5 tid=26 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f84158 self=0xd462a400
  | sysTid=24913 nice=0 cgrp=default sched=0/0 handle=0xd3bfa970
  | state=S schedstat=( 100283500 68749457 129 ) utm=6 stm=4 core=1 HZ=100
  | stack=0xd3af8000-0xd3afa000 stackSize=1038KB
  | held mutexes=
 
  #00  pc 0000000000049438  /system/lib/libc.so (__epoll_pwait+20)
 
  #01  pc 000000000001b681  /system/lib/libc.so (epoll_pwait+60)
 
  #02  pc 000000000001b6b1  /system/lib/libc.so (epoll_wait+12)
 
  #03  pc 0000000000010153  /system/lib/libutils.so (android::Looper::pollInner(int)+118)
 
  #04  pc 0000000000010045  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+32)
 
  #05  pc 00000000000b1f41  /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, _jobject*, int)+24)
 
  #06  pc 00000000001806e5  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
 
  at android.os.MessageQueue.nativePollOnce (Native method)
 
  at android.os.MessageQueue.next (MessageQueue.java:325)
 
  at android.os.Looper.loop (Looper.java:142)
 
  at android.os.HandlerThread.run (HandlerThread.java:65)
"RxSchedulerPurge-1" tid=27 TimedWaiting
"RxSchedulerPurge-1" daemon prio=5 tid=27 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f84240 self=0xd4311600
  | sysTid=24916 nice=0 cgrp=default sched=0/0 handle=0xd39ff970
  | state=S schedstat=( 366751161 120701992 1198 ) utm=23 stm=13 core=1 HZ=100
  | stack=0xd38fd000-0xd38ff000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0e28db6c> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x0e28db6c> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2101)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1132)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1113)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"RxCachedWorkerPoolEvictor-1" tid=28 TimedWaiting
"RxCachedWorkerPoolEvictor-1" daemon prio=5 tid=28 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f84390 self=0xd4311c00
  | sysTid=24917 nice=0 cgrp=default sched=0/0 handle=0xd38fa970
  | state=S schedstat=( 6289044 13051832 20 ) utm=0 stm=0 core=1 HZ=100
  | stack=0xd37f8000-0xd37fa000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0bc88535> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x0bc88535> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2101)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1132)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1113)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"RxComputationThreadPool-1" tid=30 Waiting
"RxComputationThreadPool-1" daemon prio=5 tid=30 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc2320 self=0xd3d6e400
  | sysTid=24919 nice=0 cgrp=default sched=0/0 handle=0xd41fa970
  | state=S schedstat=( 8868376 10234751 35 ) utm=0 stm=0 core=3 HZ=100
  | stack=0xd40f8000-0xd40fa000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x08f50dca> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x08f50dca> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1120)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1113)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"RenderThread" tid=31 Native
"RenderThread" prio=5 tid=31 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc23e0 self=0xd238e000
  | sysTid=24921 nice=-10 cgrp=default sched=0/0 handle=0xd037f970
  | state=S schedstat=( 85864179273 37341717460 114931 ) utm=6022 stm=2564 core=2 HZ=100
  | stack=0xd0285000-0xd0287000 stackSize=1006KB
  | held mutexes=
 
  #00  pc 0000000000049438  /system/lib/libc.so (__epoll_pwait+20)
 
  #01  pc 000000000001b681  /system/lib/libc.so (epoll_pwait+60)
 
  #02  pc 000000000001b6b1  /system/lib/libc.so (epoll_wait+12)
 
  #03  pc 0000000000010153  /system/lib/libutils.so (android::Looper::pollInner(int)+118)
 
  #04  pc 0000000000010045  /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+32)
 
  #05  pc 00000000000519a5  /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+424)
 
  #06  pc 000000000000d2c5  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+144)
 
  #07  pc 000000000006de7d  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+80)
 
  #08  pc 0000000000047e23  /system/lib/libc.so (__pthread_start(void*)+22)
 
  #09  pc 000000000001b287  /system/lib/libc.so (__start_thread+32)
"OkHttp ConnectionPool" tid=33 TimedWaiting
"OkHttp ConnectionPool" daemon prio=5 tid=33 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc25a0 self=0xd3d1e000
  | sysTid=24928 nice=0 cgrp=default sched=0/0 handle=0xd0282970
  | state=S schedstat=( 21225456 27157538 220 ) utm=1 stm=0 core=3 HZ=100
  | stack=0xd0180000-0xd0182000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0ec69b3b> (a okhttp3.internal.connection.f)
 
  at okhttp3.internal.connection.f.c (RealConnectionPool.java:62)
- locked <0x0ec69b3b> (a okhttp3.internal.connection.f)
 
  at okhttp3.internal.connection.f.lambda$Oa2rZVqKG2yj8PSM94o_1E_5eE4 (RealConnectionPool.java)
 
  at okhttp3.internal.connection.-$$Lambda$f$Oa2rZVqKG2yj8PSM94o_1E_5eE4.run (lambda)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"RxComputationThreadPool-2" tid=35 Waiting
"RxComputationThreadPool-2" daemon prio=5 tid=35 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc2760 self=0xd3d1f800
  | sysTid=24930 nice=0 cgrp=default sched=0/0 handle=0xcf77f970
  | state=S schedstat=( 1716376 253418 8 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xcf67d000-0xcf67f000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x087e4258> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x087e4258> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1120)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1113)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"RxComputationThreadPool-3" tid=36 TimedWaiting
"RxComputationThreadPool-3" daemon prio=5 tid=36 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc2820 self=0xd3d1fe00
  | sysTid=24931 nice=0 cgrp=default sched=0/0 handle=0xcf67a970
  | state=S schedstat=( 23396874 5698374 91 ) utm=1 stm=0 core=1 HZ=100
  | stack=0xcf578000-0xcf57a000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x0e093fb1> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x0e093fb1> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2101)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1132)
 
  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1113)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
"glide-active-resources" tid=37 Waiting
"glide-active-resources" prio=5 tid=37 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12fc29e0 self=0xd3d6c000
  | sysTid=24940 nice=10 cgrp=default sched=0/0 handle=0xce984970
  | state=S schedstat=( 3403042 11611458 9 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xce882000-0xce884000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x07c12c04> (a java.lang.Object)
 
  at java.lang.Object.wait (Object.java:422)
 
  at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:188)
- locked <0x07c12c04> (a java.lang.Object)
 
  at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:209)
 
  at com.bumptech.glide.load.engine.a$2.run (ActiveResources.java:1132)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at com.bumptech.glide.load.engine.a$1$1.run (ActiveResources.java:45)
 
  at java.lang.Thread.run (Thread.java:764)
"glide-disk-cache-thread-0" tid=38 Waiting
"glide-disk-cache-thread-0" prio=5 tid=38 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f80000 self=0xe37ba000
  | sysTid=24941 nice=9 cgrp=default sched=0/0 handle=0xce87f970
  | state=S schedstat=( 61793704499 4624180116 19909 ) utm=5922 stm=256 core=2 HZ=100
  | stack=0xce77d000-0xce77f000 stackSize=1038KB
  | held mutexes=
 
  at java.lang.Object.wait (Native method)
- waiting on <0x07c125ed> (a java.lang.Object)
 
  at java.lang.Thread.parkFor$ (Thread.java:2137)
- locked <0x07c125ed> (a java.lang.Object)
 
  at sun.misc.Unsafe.park (Unsafe.java:358)
 
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
 
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
 
  at java.util.concurrent.PriorityBlockingQueue.take (PriorityBlockingQueue.java:548)
 
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
 
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 
  at java.lang.Thread.run (Thread.java:764)
 
  at com.bumptech.glide.load.engine.c.a$a$1.run (GlideExecutor.java:446)
"hwuiTask1" tid=39 Native
"hwuiTask1" prio=5 tid=39 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x12f84848 self=0xd4609e00
  | sysTid=24942 nice=-2 cgrp=default sched=0/0 handle=0xce77a970
  | state=S schedstat=( 5821372074 16500156890 23215 ) utm=342 stm=239 core=2 HZ=100
  | stack=0xce680000-0xce682000 stackSize=1006KB
  | held mutexes=
 
  #00  pc 0000000000018ce8  /system/lib/libc.so (syscall+28)
 
  #01  pc 00000000000477b9  /system/l
"Signal Catcher" tid=3 Runnable
"Signal Catcher" daemon prio=5 tid=3 Runnable
  | group="system" sCount=0 dsCount=0 flags=0 obj=0x12fc02a0 self=0xee0ccc00
  | sysTid=24879 nice=0 cgrp=default sched=0/0 handle=0xe62fe970
  | state=R schedstat=( 60046959 7330499 47 ) utm=2 stm=4 core=2 HZ=100
  | stack=0xe6204000-0xe6206000 stackSize=1006KB
  | held mutexes= "mutator lock"(shared held)
 
  #00  pc 00000000002eb857  /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*)+130)
 
  #01  pc 000000000037ea91  /system/lib/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+204)
 
  #02  pc 000000000037b01b  /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+34)
 
  #03  pc 0000000000392f61  /system/lib/libart.so (art::DumpCheckpoint::Run(art::Thread*)+684)
 
  #04  pc 000000000038ca7f  /system/lib/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+322)
 
  #05  pc 000000000038c56f  /system/lib/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+542)
 
  #06  pc 000000000038c281  /system/lib/libart.so (art::ThreadList::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char>>&)+648)
 
  #07  pc 00000000003695c3  /system/lib/libart.so (art::Runtime::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char>>&)+122)
 
  #08  pc 0000000000370b5d  /system/lib/libart.so (art::SignalCatcher::HandleSigQuit()+1276)
 
  #09  pc 000000000036fae5  /system/lib/libart.so (art::SignalCatcher::Run(void*)+240)
 
  #10  pc 0000000000047e23  /system/lib/libc.so (__pthread_start(void*)+22)
 
  #11  pc 000000000001b287  /system/lib/libc.so (__start_thread+32)
"HeapTaskDaemon" tid=6 Blocked
"HeapTaskDaemon" daemon prio=5 tid=6 Blocked
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x12fc2bd8 self=0xe3836c00
  | sysTid=24883 nice=4 cgrp=default sched=0/0 handle=0xd6872970
  | state=S schedstat=( 13475292388 2523864206 8259 ) utm=1196 stm=150 core=1 HZ=100
  | stack=0xd6770000-0xd6772000 stackSize=1038KB
  | held mutexes=
 
  #00  pc 0000000000018ce8  /system/lib/libc.so (syscall+28)
 
  #01  pc 00000000000b7889  /system/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+88)
 
  #02  pc 00000000001cd1dd  /system/lib/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+284)
 
  #03  pc 00000000001cd7bd  /system/lib/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+44)
 
  #04  pc 000000000019407b  /system/framework/arm/boot-core-libart.oat (Java_dalvik_system_VMRuntime_runHeapTasks__+74)
 
  at dalvik.system.VMRuntime.runHeapTasks (Native method)
- waiting to lock an unknown object
 
  at java.lang.Daemons$HeapTaskDaemon.runInternal (Daemons.java:461)
 
  at java.lang.Daemons$Daemon.run (Daemons.java:103)
 
  at java.lang.Thread.run (Thread.java:764)
@andrewlewis
Copy link
Collaborator

The ANR information doesn't seem to reference the ExoPlayer playback thread. Were you able to reproduce the ANR yourself? Is any information about what the playback thread is doing visible in Play Console?

@Odysseos
Copy link
Author

Unfortunately attached stacktrace is only the information which I see in Play Console.

@AndrazP
Copy link

AndrazP commented Jun 12, 2019

Hi @andrewlewis,
We see an increase of this ANRs in our application and I found a way how to reproduce it.

We have a custom MediaSource extending CompositeMediaSource and an activity with PlayerView. ExoPlayer.prepare(mediaSource) is called on Activity create. Our application works also in background.

If work in prepareSourceInternal() takes a long time and phone was locked/screen off before it finished, the app will crash with ANR stacktrace in first post.
Crash only happens if Player was set to PlayerView. Disconnecting it with setPlayer(null) on onPause() doesn't help.

@ojw28
Copy link
Contributor

ojw28 commented Jun 17, 2019

You should ensure that prepareSourceInternal doesn't take a long time. Spin up a background thread if you need to do anything that might block.

@AndrazP
Copy link

AndrazP commented Jun 26, 2019

Thanks @ojw28, that solved my problem.

Summary of how I fixed this ANR in custom MediaSource:

@google-oss-bot
Copy link
Collaborator

Hey @Odysseos. We need more information to resolve this issue but there hasn't been an update in 14 days. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

@Odysseos
Copy link
Author

I see this ANR in Google Play Console -> Vitals, and all I have for it is the stacktrace. What kind of information do you need and how I can get this information?

@andrewlewis
Copy link
Collaborator

The VM stack traces like the ones in your first comment would be helpful, but the problem is that there is no reference to 'ExoPlayerImplInternal:Handler', which is what would tell us what the playback thread is doing. Do you have any other traces visible for the same bug that do include this thread? Alternatively, if you can reproduce the issue locally, the output of adb bugreport would help.

@Odysseos
Copy link
Author

As I said in origin message I have only stack trace from Google Play Console. And I can not reproduce this ANR "in vitro" :(

BTW: now I see in Google Play Console several ANRs with the same stack traces on different devices (Sony TV, Philips TV, Xiaomi MiBox S, Xiaomi MiTV and some other devices)

@xufuji456
Copy link
Contributor

hello,I have the same problem . when call release the SimpleExoPlayer,it happens ANR on the method blockUtilDelivered() in the class of PlayerMessage. How can we resolve this problem?
May be we could change the wait lock to time out lock. I am not sure is good solution.

@brozikcz
Copy link

Hi,

we have the same issues on many devices but we cannot reproduce the issue in our QA.
The logs are from Google Play console. We use the 2.9.6 version of ExoPlayer.

`"main" tid=1 Waiting
"main" prio=5 tid=1 Waiting
| group="main" sCount=1 dsCount=0 flags=1 obj=0x769ceb30 self=0x7477815c00
| sysTid=12726 nice=-10 cgrp=default sched=0/0 handle=0x74fe065548
| state=S schedstat=( 1259071897 151716665 1961 ) utm=101 stm=24 core=5 HZ=100
| stack=0x7fd2e63000-0x7fd2e65000 stackSize=8MB
| held mutexes=
at java.lang.Object.wait (Object.java)

  • waiting on <0x0bc8742a> (a com.google.android.exoplayer2.PlayerMessage)
    at com.google.android.exoplayer2.PlayerMessage.blockUntilDelivered (PlayerMessage.java:282)
  • locked <0x0bc8742a> (a com.google.android.exoplayer2.PlayerMessage)
    at com.google.android.exoplayer2.SimpleExoPlayer.setVideoSurfaceInternal (SimpleExoPlayer.java:1150)
    at com.google.android.exoplayer2.SimpleExoPlayer.access$1400 (SimpleExoPlayer.java:67)
    at com.google.android.exoplayer2.SimpleExoPlayer$ComponentListener.surfaceDestroyed (SimpleExoPlayer.java:1379)
    at android.view.SurfaceView.updateSurface (SurfaceView.java:700)
    at android.view.SurfaceView.onWindowVisibilityChanged (SurfaceView.java:279)
    at android.view.View.dispatchWindowVisibilityChanged (View.java:12993)
    at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1559)
    at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1559)
    at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1559)
    at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1963)
    at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1636)
    at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7946)
    at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1092)
    at android.view.Choreographer.doCallbacks (Choreographer.java:893)
    at android.view.Choreographer.doFrame (Choreographer.java:812)
    at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1078)
    at android.os.Handler.handleCallback (Handler.java:907)
    at android.os.Handler.dispatchMessage (Handler.java:105)
    at android.os.Looper.loop (Looper.java:216)
    at android.app.ActivityThread.main (ActivityThread.java:7625)
    at java.lang.reflect.Method.invoke (Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:987)
    "Jit thread pool worker thread 0" tid=2 Native
    "Jit thread pool worker thread 0" daemon prio=5 tid=2 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x137447b8 self=0x7470e0f000
    | sysTid=12731 nice=9 cgrp=default sched=0/0 handle=0x747124b4f0
    | state=S schedstat=( 123796874 34688020 129 ) utm=10 stm=1 core=3 HZ=100
    | stack=0x747114d000-0x747114f000 stackSize=1021KB
    | held mutexes=
    #00 pc 000000000001f2ec /system/lib64/libc.so (syscall+28)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 00000000000dbd94 /system/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    Support wider range of DASH manifests #2 pc 00000000004c0fc4 /system/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+260)
    Investigate adding HLS support. #3 pc 00000000004c052c /system/lib64/libart.so (art::ThreadPoolWorker::Run()+124)
    Add support for parsing senc boxes. #4 pc 00000000004bffec /system/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+148)
    Bound nextIndex on seek to be 0 <= nextIndex <= numSegments #5 pc 0000000000083588 /system/lib64/libc.so (__pthread_start(void*)+36)
    Internal runtime error #6 pc 00000000000241dc /system/lib64/libc.so (__start_thread+68)
    "FinalizerWatchdogDaemon" tid=4 Waiting
    "FinalizerWatchdogDaemon" daemon prio=5 tid=4 Waiting
    | group="system" sCount=1 dsCount=0 flags=1 obj=0x137448f0 self=0x747797e800
    | sysTid=12735 nice=4 cgrp=default sched=0/0 handle=0x745cbdd4f0
    | state=S schedstat=( 596356 1879685 13 ) utm=0 stm=0 core=2 HZ=100
    | stack=0x745cada000-0x745cadc000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x0a3a721b> (a java.lang.Daemons$FinalizerWatchdogDaemon)
    at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded (Daemons.java:297)
  • locked <0x0a3a721b> (a java.lang.Daemons$FinalizerWatchdogDaemon)
    at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal (Daemons.java:277)
    at java.lang.Daemons$Daemon.run (Daemons.java:103)
    at java.lang.Thread.run (Thread.java:784)
    "FinalizerDaemon" tid=5 Waiting
    "FinalizerDaemon" daemon prio=5 tid=5 Waiting
    | group="system" sCount=1 dsCount=0 flags=1 obj=0x13744978 self=0x747797d000
    | sysTid=12734 nice=4 cgrp=default sched=0/0 handle=0x745cce34f0
    | state=S schedstat=( 8000522 2330207 15 ) utm=0 stm=0 core=6 HZ=100
    | stack=0x745cbe0000-0x745cbe2000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x0588ffb8> (a java.lang.Object)
    at java.lang.Object.wait (Object.java:422)
    at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:188)
  • locked <0x0588ffb8> (a java.lang.Object)
    at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:209)
    at java.lang.Daemons$FinalizerDaemon.runInternal (Daemons.java:232)
    at java.lang.Daemons$Daemon.run (Daemons.java:103)
    at java.lang.Thread.run (Thread.java:784)
    "ReferenceQueueDaemon" tid=7 Waiting
    "ReferenceQueueDaemon" daemon prio=5 tid=7 Waiting
    | group="system" sCount=1 dsCount=0 flags=1 obj=0x13744a00 self=0x7477869800
    | sysTid=12733 nice=4 cgrp=default sched=0/0 handle=0x7466f164f0
    | state=S schedstat=( 12936978 10475521 28 ) utm=0 stm=0 core=7 HZ=100
    | stack=0x7466e13000-0x7466e15000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x098f2191> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
    at java.lang.Daemons$ReferenceQueueDaemon.runInternal (Daemons.java:178)
  • locked <0x098f2191> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
    at java.lang.Daemons$Daemon.run (Daemons.java:103)
    at java.lang.Thread.run (Thread.java:784)
    "Binder:12726_1" tid=8 Native
    "Binder:12726_1" prio=5 tid=8 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c0368 self=0x7470e16800
    | sysTid=12738 nice=0 cgrp=default sched=0/0 handle=0x745c8d34f0
    | state=S schedstat=( 1882810 2141146 20 ) utm=0 stm=0 core=7 HZ=100
    | stack=0x745c7d8000-0x745c7da000 stackSize=1009KB
    | held mutexes=
    #00 pc 000000000006fd98 /system/lib64/libc.so (__ioctl+4)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000029e34 /system/lib64/libc.so (ioctl+136)
    Support wider range of DASH manifests #2 pc 000000000006b4f0 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    Investigate adding HLS support. #3 pc 000000000006b854 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    Add support for parsing senc boxes. #4 pc 000000000006c174 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    Bound nextIndex on seek to be 0 <= nextIndex <= numSegments #5 pc 000000000009ff5c /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    Internal runtime error #6 pc 000000000000fa94 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+280)
    Demo app fails to run on 2.3.4 #7 pc 00000000000bc830 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    Not working on 2.3.4 #8 pc 0000000000083588 /system/lib64/libc.so (__pthread_start(void*)+36)
    [this is just a test] #9 pc 00000000000241dc /system/lib64/libc.so (__start_thread+68)
    "Binder:12726_2" tid=9 Native
    "Binder:12726_2" prio=5 tid=9 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c0498 self=0x746f317800
    | sysTid=12739 nice=0 cgrp=default sched=0/0 handle=0x745c7d54f0
    | state=S schedstat=( 15147921 5313540 60 ) utm=0 stm=0 core=7 HZ=100
    | stack=0x745c6da000-0x745c6dc000 stackSize=1009KB
    | held mutexes=
    #00 pc 000000000006fd98 /system/lib64/libc.so (__ioctl+4)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000029e34 /system/lib64/libc.so (ioctl+136)
    Support wider range of DASH manifests #2 pc 000000000006b4f0 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    Investigate adding HLS support. #3 pc 000000000006b854 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    Add support for parsing senc boxes. #4 pc 000000000006c174 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    Bound nextIndex on seek to be 0 <= nextIndex <= numSegments #5 pc 000000000009ff5c /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    Internal runtime error #6 pc 000000000000fa94 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+280)
    Demo app fails to run on 2.3.4 #7 pc 00000000000bc830 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    Not working on 2.3.4 #8 pc 0000000000083588 /system/lib64/libc.so (__pthread_start(void*)+36)
    [this is just a test] #9 pc 00000000000241dc /system/lib64/libc.so (__start_thread+68)
    "Binder:12726_3" tid=10 Native
    "Binder:12726_3" prio=5 tid=10 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c05d0 self=0x7470e6a000
    | sysTid=12740 nice=0 cgrp=default sched=0/0 handle=0x745c6814f0
    | state=S schedstat=( 7037502 6497917 55 ) utm=0 stm=0 core=1 HZ=100
    | stack=0x745c586000-0x745c588000 stackSize=1009KB
    | held mutexes=
    #00 pc 000000000006fd98 /system/lib64/libc.so (__ioctl+4)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000029e34 /system/lib64/libc.so (ioctl+136)
    Support wider range of DASH manifests #2 pc 000000000006b4f0 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    Investigate adding HLS support. #3 pc 000000000006b854 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    Add support for parsing senc boxes. #4 pc 000000000006c174 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    Bound nextIndex on seek to be 0 <= nextIndex <= numSegments #5 pc 000000000009ff5c /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    Internal runtime error #6 pc 000000000000fa94 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+280)
    Demo app fails to run on 2.3.4 #7 pc 00000000000bc830 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    Not working on 2.3.4 #8 pc 0000000000083588 /system/lib64/libc.so (__pthread_start(void*)+36)
    [this is just a test] #9 pc 00000000000241dc /system/lib64/libc.so (__start_thread+68)
    "Profile Saver" tid=12 Native
    "Profile Saver" daemon prio=5 tid=12 Native
    | group="system" sCount=1 dsCount=0 flags=1 obj=0x142c0a60 self=0x7470e71800
    | sysTid=12743 nice=9 cgrp=default sched=0/0 handle=0x745ad8a4f0
    | state=S schedstat=( 21833334 3914061 22 ) utm=1 stm=0 core=4 HZ=100
    | stack=0x745ac8f000-0x745ac91000 stackSize=1009KB
    | held mutexes=
    #00 pc 000000000001f2ec /system/lib64/libc.so (syscall+28)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 00000000000dbd94 /system/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    Support wider range of DASH manifests #2 pc 00000000003276a8 /system/lib64/libart.so (art::ProfileSaver::Run()+388)
    Investigate adding HLS support. #3 pc 000000000032ab18 /system/lib64/libart.so (art::ProfileSaver::RunProfileSaverThread(void*)+92)
    Add support for parsing senc boxes. #4 pc 0000000000083588 /system/lib64/libc.so (__pthread_start(void*)+36)
    Bound nextIndex on seek to be 0 <= nextIndex <= numSegments #5 pc 00000000000241dc /system/lib64/libc.so (__start_thread+68)
    "Binder:12726_4" tid=14 Native
    "Binder:12726_4" prio=5 tid=14 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c0d40 self=0x7470e83000
    | sysTid=12745 nice=0 cgrp=default sched=0/0 handle=0x745a9e14f0
    | state=S schedstat=( 14930729 21022923 90 ) utm=0 stm=0 core=0 HZ=100
    | stack=0x745a8e6000-0x745a8e8000 stackSize=1009KB
    | held mutexes=
    #00 pc 000000000006fd98 /system/lib64/libc.so (__ioctl+4)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000029e34 /system/lib64/libc.so (ioctl+136)
    Support wider range of DASH manifests #2 pc 000000000006b4f0 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    Investigate adding HLS support. #3 pc 000000000006b854 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    Add support for parsing senc boxes. #4 pc 000000000006c174 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    Bound nextIndex on seek to be 0 <= nextIndex <= numSegments #5 pc 000000000009ff5c /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    Internal runtime error #6 pc 000000000000fa94 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+280)
    Demo app fails to run on 2.3.4 #7 pc 00000000000bc830 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    Not working on 2.3.4 #8 pc 0000000000083588 /system/lib64/libc.so (__pthread_start(void*)+36)
    [this is just a test] #9 pc 00000000000241dc /system/lib64/libc.so (__start_thread+68)
    "queued-work-looper" tid=15 Native
    "queued-work-looper" prio=5 tid=15 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c0e90 self=0x746f34dc00
    | sysTid=12748 nice=-2 cgrp=default sched=0/0 handle=0x745a8e34f0
    | state=S schedstat=( 33462496 9340106 91 ) utm=0 stm=3 core=5 HZ=100
    | stack=0x745a7e0000-0x745a7e2000 stackSize=1041KB
    | held mutexes=
    #00 pc 000000000006fcac /system/lib64/libc.so (__epoll_pwait+8)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000013fbc /system/lib64/libutils.so (android::Looper::pollInner(int)+148)
    Support wider range of DASH manifests #2 pc 0000000000013e8c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)
    Investigate adding HLS support. #3 pc 000000000012a63c /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
    at android.os.MessageQueue.nativePollOnce (Native method)
    at android.os.MessageQueue.next (MessageQueue.java:386)
    at android.os.Looper.loop (Looper.java:175)
    at android.os.HandlerThread.run (HandlerThread.java:65)
    "WorkManager-WorkManagerTaskExecutor-thread-0" tid=17 Waiting
    "WorkManager-WorkManagerTaskExecutor-thread-0" prio=5 tid=17 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c1728 self=0x746d861800
    | sysTid=12752 nice=0 cgrp=default sched=0/0 handle=0x745a6d74f0
    | state=S schedstat=( 90303643 20436461 120 ) utm=5 stm=3 core=4 HZ=100
    | stack=0x745a5d4000-0x745a5d6000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x0551a8f6> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x0551a8f6> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
    at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172)
    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:784)
    "arch_disk_io_0" tid=18 Waiting
    "arch_disk_io_0" prio=5 tid=18 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c1990 self=0x746d9a7000
    | sysTid=12755 nice=0 cgrp=default sched=0/0 handle=0x745a5d14f0
    | state=S schedstat=( 10015628 721352 15 ) utm=0 stm=0 core=5 HZ=100
    | stack=0x745a4ce000-0x745a4d0000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x098414f7> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x098414f7> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
    at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172)
    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:784)
    "RxIoScheduler-1 (Evictor)" tid=19 TimedWaiting
    "RxIoScheduler-1 (Evictor)" daemon prio=5 tid=19 TimedWaiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c1c48 self=0x746d9fd000
    | sysTid=12757 nice=0 cgrp=default sched=0/0 handle=0x745a4cb4f0
    | state=S schedstat=( 763541 329688 3 ) utm=0 stm=0 core=4 HZ=100
    | stack=0x745a3c8000-0x745a3ca000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x09aa5f64> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x09aa5f64> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2101)
    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.processTask (ThreadPoolExecutor.java:1172)
    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:784)
    "read-EventBus-Computation bus from downloads 198461224-low-priority" tid=20 Native
    "read-EventBus-Computation bus from downloads 198461224-low-priority" prio=5 tid=20 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c1e90 self=0x746d8bc800
    | sysTid=12759 nice=10 cgrp=default sched=0/0 handle=0x7459f474f0
    | state=S schedstat=( 591146 270312 2 ) utm=0 stm=0 core=7 HZ=100
    | stack=0x7459e44000-0x7459e46000 stackSize=1041KB
    | held mutexes=
    #00 pc 000000000006fcac /system/lib64/libc.so (__epoll_pwait+8)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000013fbc /system/lib64/libutils.so (android::Looper::pollInner(int)+148)
    Support wider range of DASH manifests #2 pc 0000000000013e8c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)
    Investigate adding HLS support. #3 pc 000000000012a63c /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
    at android.os.MessageQueue.nativePollOnce (Native method)
    at android.os.MessageQueue.next (MessageQueue.java:386)
    at android.os.Looper.loop (Looper.java:175)
    at android.os.HandlerThread.run (HandlerThread.java:65)
    "write-EventBus-Computation bus from downloads 198461224-low-priority" tid=21 Native
    "write-EventBus-Computation bus from downloads 198461224-low-priority" prio=5 tid=21 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c2008 self=0x746d9ae400
    | sysTid=12760 nice=10 cgrp=default sched=0/0 handle=0x7459e414f0
    | state=S schedstat=( 8944790 400000 46 ) utm=0 stm=0 core=5 HZ=100
    | stack=0x7459d3e000-0x7459d40000 stackSize=1041KB
    | held mutexes=
    #00 pc 000000000006fcac /system/lib64/libc.so (__epoll_pwait+8)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000013fbc /system/lib64/libutils.so (android::Looper::pollInner(int)+148)
    Support wider range of DASH manifests #2 pc 0000000000013e8c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)
    Investigate adding HLS support. #3 pc 000000000012a63c /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
    at android.os.MessageQueue.nativePollOnce (Native method)
    at android.os.MessageQueue.next (MessageQueue.java:386)
    at android.os.Looper.loop (Looper.java:175)
    at android.os.HandlerThread.run (HandlerThread.java:65)
    "read-EventBus-Client bus from downloads 198461224-high-priority" tid=22 Native
    "read-EventBus-Client bus from downloads 198461224-high-priority" prio=5 tid=22 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c22d8 self=0x746d9fdc00
    | sysTid=12761 nice=-2 cgrp=default sched=0/0 handle=0x7459d3b4f0
    | state=S schedstat=( 5621356 1610416 23 ) utm=0 stm=0 core=4 HZ=100
    | stack=0x7459c38000-0x7459c3a000 stackSize=1041KB
    | held mutexes=
    #00 pc 000000000006fcac /system/lib64/libc.so (__epoll_pwait+8)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000013fbc /system/lib64/libutils.so (android::Looper::pollInner(int)+148)
    Support wider range of DASH manifests #2 pc 0000000000013e8c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)
    Investigate adding HLS support. #3 pc 000000000012a63c /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
    at android.os.MessageQueue.nativePollOnce (Native method)
    at android.os.MessageQueue.next (MessageQueue.java:386)
    at android.os.Looper.loop (Looper.java:175)
    at android.os.HandlerThread.run (HandlerThread.java:65)
    "write-EventBus-Client bus from downloads 198461224-high-priority" tid=23 Native
    "write-EventBus-Client bus from downloads 198461224-high-priority" prio=5 tid=23 Native
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c2400 self=0x746d8e9800
    | sysTid=12763 nice=-2 cgrp=default sched=0/0 handle=0x7459c354f0
    | state=S schedstat=( 25330736 9761980 101 ) utm=2 stm=0 core=2 HZ=100
    | stack=0x7459b32000-0x7459b34000 stackSize=1041KB
    | held mutexes=
    #00 pc 000000000006fcac /system/lib64/libc.so (__epoll_pwait+8)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 0000000000013fbc /system/lib64/libutils.so (android::Looper::pollInner(int)+148)
    Support wider range of DASH manifests #2 pc 0000000000013e8c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)
    Investigate adding HLS support. #3 pc 000000000012a63c /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
    at android.os.MessageQueue.nativePollOnce (Native method)
    at android.os.MessageQueue.next (MessageQueue.java:386)
    at android.os.Looper.loop (Looper.java:175)
    at android.os.HandlerThread.run (HandlerThread.java:65)
    "RealmFinalizingDaemon" tid=24 Waiting
    "RealmFinalizingDaemon" prio=5 tid=24 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c2548 self=0x746d8ec800
    | sysTid=12762 nice=0 cgrp=default sched=0/0 handle=0x7459b2f4f0
    | state=S schedstat=( 2493750 393749 7 ) utm=0 stm=0 core=4 HZ=100
    | stack=0x7459a2c000-0x7459a2e000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x01f345cd> (a java.lang.Object)
    at java.lang.Object.wait (Object.java:422)
    at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:188)
  • locked <0x01f345cd> (a java.lang.Object)
    at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:209)
    at io.realm.internal.FinalizerRunnable.run (FinalizerRunnable.java:37)
    at java.lang.Thread.run (Thread.java:784)
    "Appboy-External-Event-Manager-Thread Add support for avc3 boxes in fragmented mp4 streams. #1" tid=26 Waiting
    "Appboy-External-Event-Manager-Thread Add support for avc3 boxes in fragmented mp4 streams. #1" prio=5 tid=26 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c28e8 self=0x745987ac00
    | sysTid=12770 nice=0 cgrp=default sched=0/0 handle=0x745708f4f0
    | state=S schedstat=( 1659897 210416 9 ) utm=0 stm=0 core=5 HZ=100
    | stack=0x7456f8c000-0x7456f8e000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x0d675e82> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x0d675e82> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
    at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172)
    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:784)
    "Appboy-User-Dependency-Thread Add support for avc3 boxes in fragmented mp4 streams. #1" tid=28 Waiting
    "Appboy-User-Dependency-Thread Add support for avc3 boxes in fragmented mp4 streams. #1" prio=5 tid=28 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c2d50 self=0x745987c400
    | sysTid=12779 nice=0 cgrp=default sched=0/0 handle=0x7456d7d4f0
    | state=S schedstat=( 28404688 14252082 145 ) utm=2 stm=0 core=4 HZ=100
    | stack=0x7456c7a000-0x7456c7c000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x04600dd0> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x04600dd0> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
    at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172)
    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:784)
    "Appboy-External-Event-Manager-Thread Support wider range of DASH manifests #2" tid=30 Waiting
    "Appboy-External-Event-Manager-Thread Support wider range of DASH manifests #2" prio=5 tid=30 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c2c70 self=0x745987a000
    | sysTid=12778 nice=0 cgrp=default sched=0/0 handle=0x7456e834f0
    | state=S schedstat=( 2758330 569275 23 ) utm=0 stm=0 core=6 HZ=100
    | stack=0x7456d80000-0x7456d82000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x0e5b0993> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x0e5b0993> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
    at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172)
    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:784)
    "ax Add support for avc3 boxes in fragmented mp4 streams. #1" tid=31 Waiting
    "ax Add support for avc3 boxes in fragmented mp4 streams. #1" prio=5 tid=31 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c2fc8 self=0x74598e1800
    | sysTid=12799 nice=0 cgrp=default sched=0/0 handle=0x74562534f0
    | state=S schedstat=( 21506259 11742711 107 ) utm=0 stm=1 core=5 HZ=100
    | stack=0x7456150000-0x7456152000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x0ffb71c9> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x0ffb71c9> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at bo.app.r.b (SourceFile:135)
    at bo.app.n$a.run (SourceFile:131)
    at java.lang.Thread.run (Thread.java:784)
    "ax Support wider range of DASH manifests #2" tid=33 Waiting
    "ax Support wider range of DASH manifests #2" prio=5 tid=33 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c3108 self=0x745983d400
    | sysTid=12800 nice=0 cgrp=default sched=0/0 handle=0x745614d4f0
    | state=S schedstat=( 29396353 11387501 85 ) utm=2 stm=0 core=4 HZ=100
    | stack=0x745604a000-0x745604c000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x0530e0ce> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x0530e0ce> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
    at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172)
    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:784)
    "ax Investigate adding HLS support. #3" tid=34 Waiting
    "ax Investigate adding HLS support. #3" prio=5 tid=34 Waiting
    | group="main" sCount=1 dsCount=0 flags=1 obj=0x142c32a0 self=0x7470ee2800
    | sysTid=12801 nice=0 cgrp=default sched=0/0 handle=0x74560474f0
    | state=S schedstat=( 16598433 1940105 28 ) utm=1 stm=0 core=7 HZ=100
    | stack=0x7455f44000-0x7455f46000 stackSize=1041KB
    | held mutexes=
    at java.lang.Object.wait (Native method)
  • waiting on <0x07a2abef> (a java.lang.Object)
    at java.lang.Thread.parkFor$ (Thread.java:2163)
  • locked <0x07a2abef> (a java.lang.Object)
    at sun.misc.Unsafe.park (Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
    at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
    at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172)
    at java.util.concurrent.ThreadPoo
    "Signal Catcher" tid=3 Runnable
    "Signal Catcher" daemon prio=5 tid=3 Runnable
    | group="system" sCount=0 dsCount=0 flags=0 obj=0x13744858 self=0x7477817400
    | sysTid=12732 nice=0 cgrp=default sched=0/0 handle=0x747114a4f0
    | state=R schedstat=( 42518751 4360417 29 ) utm=2 stm=1 core=4 HZ=100
    | stack=0x747104f000-0x7471051000 stackSize=1009KB
    | held mutexes= "mutator lock"(shared held)
    #00 pc 00000000003c7d4c /system/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+220)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 00000000004a5b64 /system/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits>&, bool, BacktraceMap*, bool) const+352)
    Support wider range of DASH manifests #2 pc 00000000004bf780 /system/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+844)
    Investigate adding HLS support. #3 pc 00000000004b84fc /system/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+484)
    Add support for parsing senc boxes. #4 pc 00000000004b798c /system/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits>&, bool)+1036)
    Bound nextIndex on seek to be 0 <= nextIndex <= numSegments #5 pc 00000000004b74ac /system/lib64/libart.so (art::ThreadList::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits>&)+884)
    Internal runtime error #6 pc 00000000004878a0 /system/lib64/libart.so (art::Runtime::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits>&)+188)
    Demo app fails to run on 2.3.4 #7 pc 0000000000493610 /system/lib64/libart.so (art::SignalCatcher::HandleSigQuit()+1372)
    Not working on 2.3.4 #8 pc 00000000004922e8 /system/lib64/libart.so (art::SignalCatcher::Run(void*)+256)
    [this is just a test] #9 pc 0000000000083588 /system/lib64/libc.so (__pthread_start(void*)+36)
    Video buffering all file but don't play  #10 pc 00000000000241dc /system/lib64/libc.so (__start_thread+68)
    "HeapTaskDaemon" tid=6
    "HeapTaskDaemon" daemon prio=5 tid=6 WaitingForTaskProcessor
    | group="system" sCount=1 dsCount=0 flags=1 obj=0x1374fc08 self=0x747797f400
    | sysTid=12736 nice=4 cgrp=default sched=0/0 handle=0x745cad74f0
    | state=S schedstat=( 401929698 40640627 278 ) utm=36 stm=3 core=4 HZ=100
    | stack=0x745c9d4000-0x745c9d6000 stackSize=1041KB
    | held mutexes=
    #00 pc 000000000001f2ec /system/lib64/libc.so (syscall+28)
    Add support for avc3 boxes in fragmented mp4 streams. #1 pc 00000000000dbd94 /system/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    Support wider range of DASH manifests #2 pc 00000000002314c0 /system/lib64/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+440)
    Investigate adding HLS support. #3 pc 0000000000231d54 /system/lib64/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+96)
    at dalvik.system.VMRuntime.runHeapTasks (Native method)
    at java.lang.Daemons$HeapTaskDaemon.runInternal (Daemons.java:475)
    at java.lang.Daemons$Daemon.run (Daemons.java:103)
    at java.lang.Thread.run (Thread.java:784)`

@rameshvoltella
Copy link

ANY FIX FOR THIS ISSUE AM ALSO GETTING ON MY MOTO DEVICE

@rameshvoltella
Copy link

rameshvoltella commented Feb 14, 2020

@ojw28 how codecNeedsSetOutputSurfaceWorkaround is working?will it fix the anr issue if i specify the device?? also should i need to download the sourse of exo player and edit MediaCodecVideoRenderer.java and make as a module in my project to make it working ? As said in #6294 it now not occasional its common, please look in to this issue.if you want the anr log i can give add

@rameshvoltella
Copy link

@ojw28 not caring about this issue?or you guys are working on it?

@krok55
Copy link

krok55 commented Mar 4, 2020

Hello,
I have a similar issue on ALL devices (not just Huawei).
Some of them report on ANR at blockUntilDelivered. Here is a typical ANR report:

"main" prio=5 tid=1 Waiting
| group="main" sCount=1 dsCount=0 flags=1 obj=0x75794770 self=0x3073021c00
| sysTid=23917 nice=0 cgrp=default sched=0/0 handle=0x2fed5cd548
| state=S schedstat=( 10073527995 6894125827 42689 ) utm=789 stm=217 core=2 HZ=100
| stack=0x7fd1b1d000-0x7fd1b1f000 stackSize=8MB
| held mutexes=
at java.lang.Object.wait (Native method)

  • waiting on <0x0c5fefc8> (a com.google.android.exoplayer2.PlayerMessage)
    at com.google.android.exoplayer2.PlayerMessage.c (PlayerMessage.java:283)
  • locked <0x0c5fefc8> (a com.google.android.exoplayer2.PlayerMessage)
    at com.google.android.exoplayer2.SimpleExoPlayer.a (SimpleExoPlayer.java:1471)
    at com.google.android.exoplayer2.SimpleExoPlayer.a (SimpleExoPlayer.java:71)
    at com.google.android.exoplayer2.SimpleExoPlayer$ComponentListener.surfaceDestroyed (SimpleExoPlayer.java:1719)
    at android.view.SurfaceView.updateSurface (SurfaceView.java:641)
    at android.view.SurfaceView.onWindowVisibilityChanged (SurfaceView.java:252)
    at android.view.View.dispatchWindowVisibilityChanged (View.java:12868)
    at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1553)
    at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1553)
    at android.view.ViewGroup.dispatchWindowVisibilityChanged (ViewGroup.java:1553)
    at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1854)
    at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1536)
    at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7502)
    at android.view.Choreographer$CallbackRecord.run (Choreographer.java:949)
    at android.view.Choreographer.doCallbacks (Choreographer.java:761)
    at android.view.Choreographer.doFrame (Choreographer.java:696)
    at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:935)
    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:6720)
    at java.lang.reflect.Method.invoke (Native method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
    I investigated a little bit and I think that the cause is a possible deadlock in the following scenario:
    I have 3 threads:

The ExoPlayer thread (the one that I used to create ExoPlayer and send control messages)
Other Async thread for doing some application-specific logic
The UI thread
In my application I need to perform some logic on the ExoPlayer thread, since this is the only way I can access various states of the player. So, during this I may request a lock on a shared resource in my application.
Now, lets assume that this lock is being held by my other ASync thread, and in the same time, I try to perform the following command on the UI thread:
setVisibility(INVISIBLE) for making the video container (my custom VideoView) to disappear.
This will cause the destroySurface event to be thrown on the UI thread, and then the following code in SimpleExoPlayer.java will block the UI thread:

private void setVideoSurfaceInternal(@nullable Surface surface, boolean ownsSurface) {
// Note: We don't turn this method into a no-op if the surface is being replaced with itself
// so as to ensure onRenderedFirstFrame callbacks are still called in this case.
List messages = new ArrayList<>();
for (Renderer renderer : renderers) {
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
messages.add(
player.createMessage(renderer).setType(C.MSG_SET_SURFACE).setPayload(surface).send());
}
}
if (this.surface != null && this.surface != surface) {
// We're replacing a surface. Block to ensure that it's not accessed after the method returns.
try {
for (PlayerMessage message : messages) {
message.blockUntilDelivered();
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
I assume that the dead-lock is bacause you need the ExoPlayer thread to be running, in order to activate a flow that will release the message block - but it's blocked.

I would like to suggest to add a special case where the surface parameter is null (which is the case in my scenario), so that no messages will be sent or blocked. You don't need to send any messages if the surface is being destroyed, right?

Thanks

@SnailDream
Copy link

Hi, we have the same problem! Does it can be resolved?

@AdamMTGreenberg
Copy link

We are also seeing this issue with the following stacktrace:

at java.lang.Object.wait(Object.java:-2)
        at com.google.android.exoplayer2.PlayerMessage.blockUntilDelivered(PlayerMessage:283)
        at com.google.android.exoplayer2.SimpleExoPlayer.setVideoSurfaceInternal(SimpleExoPlayer:1511)
        at com.google.android.exoplayer2.SimpleExoPlayer.access$1400(SimpleExoPlayer:71)
        at com.google.android.exoplayer2.SimpleExoPlayer$ComponentListener.onSurfaceTextureDestroyed(SimpleExoPlayer:1796)
        at android.view.TextureView.releaseSurfaceTexture(TextureView.java:249)
        at android.view.TextureView.onDetachedFromWindowInternal(TextureView.java:222)
        at android.view.View.dispatchDetachedFromWindow(View.java:18782)
        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3916)
        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3916)
        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3916)
        at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5471)
        at android.view.ViewGroup.removeViewAt(ViewGroup.java:5418)
        at androidx.recyclerview.widget.RecyclerView$5.removeViewAt(RecyclerView:882)
        at androidx.recyclerview.widget.ChildHelper.removeView(ChildHelper:147)
        at androidx.recyclerview.widget.RecyclerView$LayoutManager.removeView(RecyclerView:8625)
        at androidx.recyclerview.widget.RecyclerView$LayoutManager.removeAndRecycleView(RecyclerView:8900)
       

@andisolo
Copy link

andisolo commented Sep 4, 2020

we have the same problem! mark.

tonihei added a commit that referenced this issue Oct 6, 2020
Experiments showed the timeout is beneficial to avoid ANRs and
we can thus enable the feature by default.

Also add configuration to set the timeout if required.

Issue: #5887
PiperOrigin-RevId: 335652506
@tonihei
Copy link
Collaborator

tonihei commented Oct 6, 2020

We now enabled a change that times out when detaching or replacing surfaces with SimpleExoPlayer so that it's less likely that the app runs into ANRs. Instead the player will stop and report an error through onPlayerError.

The underlying platform issue for this ANR is hopefully solved from Android 11, and this workaround is probably all we can do for the existing Android versions.

@harshmittal29
Copy link

@tonihei seems the above issue is in 2.12.0 for pre Android 11 devices. Any chance there is an update which can fix this issue for pre Android 11 devices?

@tonihei
Copy link
Collaborator

tonihei commented Oct 21, 2020

@harshmittal29 I don't understand the question. The Android platform fix will only be available for devices running Android 11 and above and is independent from ExoPlayer. ExoPlayer's dev branch (not 2.12.0) contains the workaround referenced above that prevents most of the ANRs for pre Android 11 devices. It will likely be part of 2.13.0.

@harshmittal29
Copy link

Thanks @tonihei . Got the answer I was looking for :). So will wait for 2.13.0 update.

@google google locked and limited conversation to collaborators Dec 6, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests