androidx / androidx/media

Crash due to prewarming - flush() is valid only at Executing states; currently at Released state

Open
#2,239 3 comments 0 reactions 1 assignee View on GitHub

@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 bugreport to android-media-github@google.com after filing this issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.