Skip to content

ExoPlayer crashes, possibly trying to draw on surface which has been destroyed #3

Description

@CatalystNZ

I've been trying to debug one issue, which is that ExoPlayer stops functioning, and you get a black screen.

To confirm that the OpenGL thread is still rendering, I have modified a test version to include a new OpenGL Program, and a new set of Shaders which just renders some basic shapes. When the black screen occurs, that all still renders correctly. I feel that it's safe to say, that the issue is that ExoPlayer is stopping/crashing. In other words, the OpenGL pipeline still functions.

That seems to be confirmed by the following log's I encountered when the Rendering stops with the following error, which appears related to ExoPlayer.

E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19

It might be that the Surface is not being destroyed properly when it becomes invalid. That is mentioned in this persons blog -> https://acadroid.wordpress.com/2017/12/12/queuebuffer-error-queuing-buffer-to-surfacetexture-22/

2018-11-26 14:08:07.676 433-1781/net.solusdesigns.cinemagraphlwp E/BufferQueueProducer: [SurfaceTexture-2-433-6] queueBuffer: BufferQueue has been abandoned
2018-11-26 14:08:07.676 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19
2018-11-26 14:08:07.676 433-1781/net.solusdesigns.cinemagraphlwp E/ACodec: [OMX.Exynos.vp8.dec] BaseState::onOutputBufferDrained returning error -19
2018-11-26 14:08:07.676 433-1781/net.solusdesigns.cinemagraphlwp E/ACodec: signalError(omxError 0x80001001, internalError -19)
2018-11-26 14:08:07.676 433-1780/net.solusdesigns.cinemagraphlwp E/MediaCodec: Codec reported err 0xffffffed, actionCode 0, while in state 6
2018-11-26 14:08:07.679 433-1777/net.solusdesigns.cinemagraphlwp E/ExoPlayerImplInternal: Internal runtime error.
    java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
        at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2622)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1024)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:573)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:518)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:301)
        at android.os.Handler.dispatchMessage(Handler.java:101)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2018-11-26 14:08:07.724 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571576f40
2018-11-26 14:08:07.725 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571577100
2018-11-26 14:08:07.727 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571577480
2018-11-26 14:08:07.727 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571577640
2018-11-26 14:08:07.728 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571577800
2018-11-26 14:08:07.728 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x75715779c0
2018-11-26 14:08:07.728 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571577b80
2018-11-26 14:08:07.729 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571577d40
2018-11-26 14:08:07.729 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7571577f00
2018-11-26 14:08:07.729 433-1781/net.solusdesigns.cinemagraphlwp E/Surface: getSlotFromBufferLocked: unknown buffer: 0x75715780c0
2018-11-26 14:08:07.750 433-1777/net.solusdesigns.cinemagraphlwp E/ExoPlayerImplInternal: Stop failed.
    java.lang.IllegalStateException
        at android.media.MediaCodec.native_stop(Native Method)
        at android.media.MediaCodec.stop(MediaCodec.java:2059)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:518)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.releaseCodec(MediaCodecVideoRenderer.java:474)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:474)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:362)
        at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:153)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:972)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:768)
        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:101)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions