Skip to content

Internal runtime error while adding new source to ConcatenatingMediaSource #4814

Closed
@jaloveast1k

Description

So, I just updated from version
implementation 'com.google.android.exoplayer:exoplayer-core:2.8.1'
implementation 'com.google.android.exoplayer:exoplayer-hls:2.8.1'
to version
implementation 'com.google.android.exoplayer:exoplayer-core:2.8.4'
implementation 'com.google.android.exoplayer:exoplayer-hls:2.8.4'
And on most devices and emulators application started crashing, even tho it's still works fine on my main OnePlus 3 Android 8.0.

Exception occurs once I add an additional data source(-s) to ConcatenatingMediaSource in order to start preloading process of the next clips.
Here is first exception:

09-14 10:46:49.718 E/ExoPlayerImplInternal: Internal runtime error.
    java.lang.IllegalStateException
        at com.google.android.exoplayer2.util.Assertions.checkState(Assertions.java:81)
        at com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistTracker.start(DefaultHlsPlaylistTracker.java:99)
        at com.google.android.exoplayer2.source.hls.HlsMediaSource.prepareSourceInternal(HlsMediaSource.java:373)
        at com.google.android.exoplayer2.source.BaseMediaSource.prepareSource(BaseMediaSource.java:137)
        at com.google.android.exoplayer2.source.CompositeMediaSource.prepareChildSource(CompositeMediaSource.java:109)
        at com.google.android.exoplayer2.source.ConcatenatingMediaSource.addMediaSourceInternal(ConcatenatingMediaSource.java:554)
        at com.google.android.exoplayer2.source.ConcatenatingMediaSource.handleMessage(ConcatenatingMediaSource.java:468)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:861)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:829)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:811)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:328)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:154)
        at android.os.HandlerThread.run(HandlerThread.java:61)`

And here is the second one, that happens right after the first "internal" one:
`09-14 10:46:49.860 E/AndroidRuntime: FATAL EXCEPTION: ExoPlayerImplInternal:Handler
    Process: media.soundstream.soundstream, PID: 8193
    java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.exoplayer2.upstream.Loader.release()' on a null object reference
        at com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistTracker.stop(DefaultHlsPlaylistTracker.java:113)
        at com.google.android.exoplayer2.source.hls.HlsMediaSource.releaseSourceInternal(HlsMediaSource.java:404)
        at com.google.android.exoplayer2.source.BaseMediaSource.releaseSource(BaseMediaSource.java:150)
        at com.google.android.exoplayer2.source.CompositeMediaSource.releaseSourceInternal(CompositeMediaSource.java:65)
        at com.google.android.exoplayer2.source.ConcatenatingMediaSource.releaseSourceInternal(ConcatenatingMediaSource.java:423)
        at com.google.android.exoplayer2.source.BaseMediaSource.releaseSource(BaseMediaSource.java:150)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:802)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:731)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:353)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:154)
        at android.os.HandlerThread.run(HandlerThread.java:61)

I checked out the source code of DefaultHlsPlaylistTracker and I am kinda confused. The only place where initialPlaylistLoader sets to non null value is.. right after it gets checked on being non-null and Exception gets thrown.

Thank you in advance.

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions