Crash due to prewarming - flush() is valid only at Executing states; currently at Released state
Open
@microkatz is already working on this.
Since Mar 17, 2025.
bug
needs triage
- Dominant language
- Java
- Stars
- 3k
- Forks
- 955
- Avg merge
- 12d 14h
- Merged PRs (30d)
- 2
Description
Version
Media3 pre-release (alpha, beta or RC not in this list)
More version details
1.6.0-beta01
Devices that reproduce the issue
OS version: android15
Model:Galaxy S25 Ultra
OS version: android14
Model:Pixel 4a (5G)
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Yes
Reproduction steps
I think this happens when the user leaves a screen that had an exoplayer playing with prewarming renderers enabled. This crash shows up in crashlytics for me with high frequency but I can't reproduce it on my device.
Expected result
no crash
Actual result
Fatal Exception: java.lang.IllegalStateException: flush() is valid only at Executing states; currently at Released state
at android.media.MediaCodec.native_flush(MediaCodec.java)
at android.media.MediaCodec.flush(MediaCodec.java:2504)
at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.flush(AsynchronousMediaCodecAdapter.java:272)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:968)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:961)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:784)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:1026)
at androidx.media3.exoplayer.BaseRenderer.disable(BaseRenderer.java:244)
at androidx.media3.exoplayer.RendererHolder.disableRenderer(RendererHolder.java:645)
at androidx.media3.exoplayer.RendererHolder.disablePrewarming(RendererHolder.java:586)
at androidx.media3.exoplayer.ExoPlayerImplInternal.disableAndResetPrewarmingRenderers(ExoPlayerImplInternal.java:1984)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:731)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.os.HandlerThread.run(HandlerThread.java:67)
at androidx.media3.exoplayer.RendererHolder.disableRenderer(RendererHolder.java:645)
at androidx.media3.exoplayer.RendererHolder.disablePrewarming(RendererHolder.java:586)
at androidx.media3.exoplayer.ExoPlayerImplInternal.disableAndResetPrewarmingRenderers(ExoPlayerImplInternal.java:1984)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:731)
☝ this part makes me suspect that the issue relates to prewarming
Media
unknown - stack trace should provide enough information to figure out what's going wrong
Bug Report
- You will email the zip file produced by
adb bugreportto android-media-github@google.com after filing this issue.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.