Closed
Description
Version
Media3 1.1.1 / ExoPlayer 2.19.1
More version details
No response
Devices that reproduce the issue
Observed on Android OS 11-14, could include more.
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Not tested
Reproduction steps
- Implement a playback scenario with multiple periods or ads, ensuring the playback queue has distinct playing and reading periods.
- Induce a renderer error during playback, specifically when the playing period differs from the reading period.
- Observe the handling of discontinuity events following the renderer error, particularly the reporting of non-internal discontinuity reasons (Player.DISCONTINUITY_REASON_AUTO_TRANSITION) in quick succession or across different parts of the playback queue.
It's also manually reproducible in unit tests by instantiating PlaybackInfoUpdate
and invoking setPositionDiscontinuity
multiple times with non-internal events, i.e.
// rapidly set position discontinuity
playbackInfoUpdate.setPositionDiscontinuity(Player.DISCONTINUITY_REASON_SEEK);
playbackInfoUpdate.setPositionDiscontinuity(Player.DISCONTINUITY_REASON_INTERNAL);
playbackInfoUpdate.setPositionDiscontinuity(Player.DISCONTINUITY_REASON_SEEK);
Here's a draft PR showing the issue google/ExoPlayer#11392
Expected result
No assert or unit test failures.
Actual result
In production we've seen app crashes with the following stack-trace:
java.lang.IllegalArgumentException: null
at com.google.android.exoplayer2.util.Assertions.checkArgument
at com.google.android.exoplayer2.ExoPlayerImplInternal$PlaybackInfoUpdate.setPositionDiscontinuity(SourceFile:121)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handlePositionDiscontinuity(SourceFile:2489)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(SourceFile:626)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.os.HandlerThread.run(HandlerThread.java:67)
We began seeing this exception after upgrading from Exoplayer 2.13.3 to 2.19.1. This stack-trace follows a path introduced in commit 79b688e. It occurs across a broad range of Android OS (mostly 11-14) and Android device class.
Media
Not applicable
Bug Report
- You will email the zip file produced by
adb bugreport
to [email protected] after filing this issue.