ExoTimeoutException: Player release timed out, predominantly on AndroidTV
See original GitHub issueExoPlayerVersion: 2.15.1 & 2.14.0
Issue: We are getting these Timeout Exception from production users, https://github.com/google/ExoPlayer/blob/029a2b27cbdc27cf9d51d4a73ebeb503968849f6/library/core/src/main/java/com/google/android/exoplayer2/ExoTimeoutException.java#L64
When we tried reproducing this issue on FireStick (details are below) with the following steps using ExoPlayerDemo app; we saw that the video frame was not showing audio was playing. We were trying the Widevine L1 only content. Our Firestick is supporting L1.
- Open the content and seek back and forth multiple times and quit the player screen.
- You may see the Timeout exception.
- Interesting thing was that after that we could not play any content on the device in ExoPlayer Sample, neither in our app nor in any other 3rd party app. Everywhere the content video frame was not coming.
- We had to restart the device.
We don’t find this issue on ExoPlayer’s content. We did see this issue only on our content. If you want, we can share our content over email.
On this device, we could see this issue frequently and requires lesser tries.
Devices on which this issue found: on most of the devices, it is more than 100K.

Device Info:
Available Codecs list on Device:
D/MediaCodecInfo: Name=OMX.google.aac.decoder Type=audio/mp4a-latm MaxInstances=32
2021-12-29 17:43:19.944 17504-17504/ D/MediaCodecInfo: Name=OMX.google.amrnb.decoder Type=audio/3gpp MaxInstances=32
2021-12-29 17:43:19.944 17504-17504/ D/MediaCodecInfo: Name=OMX.google.flac.decoder Type=audio/flac MaxInstances=32
2021-12-29 17:43:19.944 17504-17504/ D/MediaCodecInfo: Name=OMX.google.g711.alaw.decoder Type=audio/g711-alaw MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.g711.mlaw.decoder Type=audio/g711-mlaw MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.mp3.decoder Type=audio/mpeg MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.opus.decoder Type=audio/opus MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.raw.decoder Type=audio/raw MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.vorbis.decoder Type=audio/vorbis MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.aac.encoder Type=audio/mp4a-latm MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.amrnb.encoder Type=audio/3gpp MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.google.flac.encoder Type=audio/flac MaxInstances=32
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.AVC Type=video/avc MaxInstances=4
2021-12-29 17:43:19.945 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.AVC.secure Type=video/avc MaxInstances=1
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.AWESOME.hdcp.secure Type=video/avc MaxInstances=1
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.google.h264.decoder Type=video/avc MaxInstances=32
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.H263 Type=video/3gpp MaxInstances=4
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.google.h263.decoder Type=video/3gpp MaxInstances=32
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.HEVC Type=video/hevc MaxInstances=4
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.HEVC.secure Type=video/hevc MaxInstances=1
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.google.hevc.decoder Type=video/hevc MaxInstances=32
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.MPEG2 Type=video/mpeg2 MaxInstances=4
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.MPEG4 Type=video/mp4v-es MaxInstances=4
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.google.mpeg4.decoder Type=video/mp4v-es MaxInstances=32
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.VPX Type=video/x-vnd.on2.vp8 MaxInstances=4
2021-12-29 17:43:19.946 17504-17504/ D/MediaCodecInfo: Name=OMX.google.vp8.decoder Type=video/x-vnd.on2.vp8 MaxInstances=32
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.VP9 Type=video/x-vnd.on2.vp9 MaxInstances=4
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.DECODER.VP9.secure Type=video/x-vnd.on2.vp9 MaxInstances=1
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.google.vp9.decoder Type=video/x-vnd.on2.vp9 MaxInstances=32
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.ENCODER.AVC Type=video/avc MaxInstances=8
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.google.h264.encoder Type=video/avc MaxInstances=32
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.google.h263.encoder Type=video/3gpp MaxInstances=32
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.MTK.VIDEO.ENCODER.HEVC Type=video/hevc MaxInstances=8
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.google.mpeg4.encoder Type=video/mp4v-es MaxInstances=32
2021-12-29 17:43:19.947 17504-17504/ D/MediaCodecInfo: Name=OMX.google.vp8.encoder Type=video/x-vnd.on2.vp8 MaxInstances=32
ExoPlayerVersion v2.15.1 logs
12-29 18:30:11.134 308 519 I PCMAudioStreamOut: calculateLatency(): downstream+proxy latency 52 ms, tuning -50 ms
12-29 18:30:11.135 308 519 I PCMAudioStreamOut: getLatency(): total latency:2 ms, tuning:-50 ms
12-29 18:30:11.135 308 519 I PCMAudioStreamOut: calculateLatency(): downstream+proxy latency 51 ms, tuning -50 ms
12-29 18:30:11.135 308 519 I PCMAudioStreamOut: getLatency(): total latency:1 ms, tuning:-50 ms
12-29 18:30:11.149 522 6060 I MediaFocusControl: abandonAudioFocus() from uid/pid 10361/9417 clientId=com.amazon.media.AmazonAudioManager@6149752com.google.android.exoplayer2.AudioFocusManager$AudioFocusListener@84b9a23
12-29 18:30:11.150 9417 9417 I ExoPlayerImpl: Release 699bc87 [ExoPlayerLib/2.15.1] [sheldon, AFTSS, Amazon, 28] [goog.exo.core, goog.exo.ui, goog.exo.flac, goog.exo.dash, goog.exo.vpx, goog.exo.opus, goog.exo.ffmpeg]
12-29 18:30:11.364 296 9559 D MTKTEEClient: [MTKTEEClient::GetHDCPCapability] Enter...
12-29 18:30:11.364 296 9559 D MTKTEEClient: [MTKTEEClient::GetHDCPCapability] Current hdcp version is 1, max hdcp version is 4
12-29 18:30:11.364 296 9559 V OEMCryptoCENC: OEMCrypto_GetHDCPCapability result = 0x0
12-29 18:30:11.658 9417 9417 E EventLogger: playerFailed [eventTime=137.04, mediaPos=1031.99, window=0, period=0, errorCode=ERROR_CODE_TIMEOUT
12-29 18:30:11.658 9417 9417 E EventLogger: com.google.android.exoplayer2.ExoPlaybackException: Unexpected runtime error
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.ExoPlayerImpl.lambda$release$5(ExoPlayerImpl.java:858)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.-$$Lambda$ExoPlayerImpl$eZVQ1P4AuRBXX3IBVzj-JmjEs8k.invoke(Unknown Source:2)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:261)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:170)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.util.-$$Lambda$ListenerSet$NbKDn9xtItiyMgYZmjIx_Sv1FFQ.run(Unknown Source:6)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.util.ListenerSet.flushEvents(ListenerSet.java:191)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.util.ListenerSet.sendEvent(ListenerSet.java:206)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.ExoPlayerImpl.release(ExoPlayerImpl.java:854)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.SimpleExoPlayer.release(SimpleExoPlayer.java:1674)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.demo.PlayerActivity.releasePlayer(PlayerActivity.java:358)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.demo.PlayerActivity.onStop(PlayerActivity.java:177)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1432)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.Activity.performStop(Activity.java:7409)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:4202)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4180)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.ActivityThread.handleStopActivity(ActivityThread.java:4255)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:192)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1824)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.os.Handler.dispatchMessage(Handler.java:106)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.os.Looper.loop(Looper.java:193)
12-29 18:30:11.658 9417 9417 E EventLogger: at android.app.ActivityThread.main(ActivityThread.java:6740)
12-29 18:30:11.658 9417 9417 E EventLogger: at java.lang.reflect.Method.invoke(Native Method)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
12-29 18:30:11.658 9417 9417 E EventLogger: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
12-29 18:30:11.658 9417 9417 E EventLogger: Caused by: com.google.android.exoplayer2.ExoTimeoutException: Player release timed out.
12-29 18:30:11.658 9417 9417 E EventLogger: at com.google.android.exoplayer2.ExoPlayerImpl.lambda$release$5(ExoPlayerImpl.java:857)
12-29 18:30:11.658 9417 9417 E EventLogger: ... 26 more
12-29 18:30:11.658 9417 9417 E EventLogger: ]
12-29 18:30:11.681 522 615 E WifiVendorHal: getWifiLinkLayerStats(l.937) failed {.code = ERROR_NOT_SUPPORTED, .description = }
12-29 18:30:11.693 391 391 D MtkHdmiService: MtkHdmiService::getSupportedResolutions: possibly NULL EDID: default u4res_ntsc=0x280a
12-29 18:30:11.693 391 391 I MtkHdmiService: getSuitableResolution edid==null, returning fallback value of RESOLUTION_1280X720P_59_94HZ
12-29 18:30:11.694 522 6060 W AmzDisplayModeConverter: Display.Mode cannot be mapped to auto, please use getHighestPriorityMode to get a valid id
12-29 18:30:11.699 9417 9417 I Choreographer: Skipped 33 frames! The application may be doing too much work on its main thread.
12-29 18:30:11.704 322 322 I MTK_GRALLOC: Successfully unref secure 11187
12-29 18:30:12.171 691 1041 W bt_btif : bta_hh_le_input_rpt_notify uuid=0x2a4d srv_handle=79 is_bl_svc_primary=1 rpt_id=1 len=3
12-29 18:30:12.172 522 605 E SELinux : avc: denied { see_home_task } for scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:system_server:s0 tclass=amazon_policies permissive=0
12-29 18:30:12.172 522 605 I AmazonProfileService: Event is not filtered because it is not in filter key list.
12-29 18:30:12.173 522 605 I FireTVKeyPolicyManager: Dynamic key mapping has been enabled
12-29 18:30:12.173 522 605 I KeyMapManagerUtil: Unknown remote sku id 39. Fetch remote sku id from system property
12-29 18:30:12.173 522 605 I FireTVKeyPolicyManager: Dynamic key mapping key intercepted result 0
12-29 18:30:12.175 522 604 D AmzPhoneWindowManager: is 19 in key list = false
12-29 18:30:10.174 522 605 I KeyMapManagerUtil: Unknown remote sku id 39. Fetch remote sku id from system property
12-29 18:30:10.174 522 605 I FireTVKeyPolicyManager: Dynamic key mapping key intercepted result 0
12-29 18:30:10.176 522 604 D AmzPhoneWindowManager: is 20 in key list = false
12-29 18:30:10.364 296 9559 D MTKTEEClient: [MTKTEEClient::GetHDCPCapability] Enter...
12-29 18:30:10.364 296 9559 D MTKTEEClient: [MTKTEEClient::GetHDCPCapability] Current hdcp version is 1, max hdcp version is 4
12-29 18:30:10.364 296 9559 V OEMCryptoCENC: OEMCrypto_GetHDCPCapability result = 0x0
12-29 18:30:10.370 691 1041 W bt_btif : bta_hh_le_input_rpt_notify uuid=0x2a4d srv_handle=79 is_bl_svc_primary=1 rpt_id=1 len=3
12-29 18:30:10.371 522 605 E SELinux : avc: denied { see_home_task } for scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:system_server:s0 tclass=amazon_policies permissive=0
12-29 18:30:10.372 522 605 I FireTVKeyPolicyManager: Dynamic key mapping has been enabled
12-29 18:30:10.372 522 605 I KeyMapManagerUtil: Unknown remote sku id 39. Fetch remote sku id from system property
12-29 18:30:10.372 522 605 I FireTVKeyPolicyManager: Dynamic key mapping key intercepted result 0
12-29 18:30:10.374 522 604 D AmzPhoneWindowManager: is 20 in key list = false
12-29 18:30:11.000 9417 9417 E EventLogger: playerFailed [eventTime=136.38, mediaPos=1031.99, window=0, period=0, errorCode=ERROR_CODE_TIMEOUT
12-29 18:30:11.000 9417 9417 E EventLogger: com.google.android.exoplayer2.ExoPlaybackException: Unexpected runtime error
12-29 18:30:11.000 9417 9417 E EventLogger: at com.google.android.exoplayer2.SimpleExoPlayer.setVideoOutputInternal(SimpleExoPlayer.java:2014)
12-29 18:30:11.000 9417 9417 E EventLogger: at com.google.android.exoplayer2.SimpleExoPlayer.access$4200(SimpleExoPlayer.java:94)
12-29 18:30:11.000 9417 9417 E EventLogger: at com.google.android.exoplayer2.SimpleExoPlayer$ComponentListener.surfaceDestroyed(SimpleExoPlayer.java:2364)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.SurfaceView.updateSurface(SurfaceView.java:627)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:250)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.View.dispatchWindowVisibilityChanged(View.java:12868)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1553)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1784)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1464)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7199)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:961)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.Choreographer.doCallbacks(Choreographer.java:772)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.Choreographer.doFrame(Choreographer.java:706)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:947)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.os.Handler.handleCallback(Handler.java:873)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.os.Handler.dispatchMessage(Handler.java:99)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.os.Looper.loop(Looper.java:193)
12-29 18:30:11.000 9417 9417 E EventLogger: at android.app.ActivityThread.main(ActivityThread.java:6740)
12-29 18:30:11.000 9417 9417 E EventLogger: at java.lang.reflect.Method.invoke(Native Method)
12-29 18:30:11.000 9417 9417 E EventLogger: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
12-29 18:30:11.000 9417 9417 E EventLogger: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
12-29 18:30:11.000 9417 9417 E EventLogger: Caused by: com.google.android.exoplayer2.ExoTimeoutException: Detaching surface timed out.
12-29 18:30:11.000 9417 9417 E EventLogger: at com.google.android.exoplayer2.SimpleExoPlayer.setVideoOutputInternal(SimpleExoPlayer.java:2012)
12-29 18:30:11.000 9417 9417 E EventLogger: ... 27 more
12-29 18:30:11.000 9417 9417 E EventLogger: ]
12-29 18:30:11.007 9417 9417 D EventLogger: state [eventTime=136.40, mediaPos=1031.99, window=0, period=0, IDLE]
12-29 18:30:11.038 9417 9417 D EventLogger: surfaceSize [eventTime=136.43, mediaPos=1031.99, window=0, period=0, 0, 0]
12-29 18:30:11.038 322 428 D BufferQueueProducer: About to force-disconnect API_MEDIA, mode=1
12-29 18:30:11.039 322 428 I MTK_GRALLOC: Successfully unref secure 11172
12-29 18:30:11.039 322 428 I MTK_GRALLOC: Successfully unref secure 11174
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11178
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11181
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11184
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11190
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11193
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11196
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11197
12-29 18:30:11.040 322 428 I MTK_GRALLOC: Successfully unref secure 11199`
Issue Analytics
- State:
- Created 2 years ago
- Comments:9 (1 by maintainers)
It is also happening for us on 2.18.1 when player is running and we but an Android box to standby and we stop & release Exo.
We are having the same issue, could you please update?