[mythtv] Seg Fault in mediacodec

Aman Gupta aman at tmm1.net
Mon Jul 2 21:14:52 UTC 2018


You can try the mpv-android apk from GitHub to compare. I'm pretty sure it
works fine on Oreo.

Aman

On Mon, Jul 2, 2018 at 3:58 PM Peter Bennett <pb.mythtv at gmail.com> wrote:

> Hi Aman
>
> Thank you for all your help so far.
>
> I upgraded my Shield to Android 8.0. Now I get a seg fault every time I
> play 1080 interlaced recordings. Progressive recordings are fine, and
> 480 interlaced are fine. Also 4K recordings are fine. With 1080
> interlaced it gets a seg fault in avcodec_receive_frame. This happens at
> about the fifth frame received in the video. It starts off fine, with
> avcodec_receive_frame returning EAGAIN until some number of packets have
> been sent, then it receives a few frames, then there is a seg fault in
> memcpy. There are no null addresses being passed to memcpy, but
> something must be invalid. This was working fine with Android 7. I am
> using the default buffer allocation: AVCodecContext->get_buffer2 =
> get_avf_buffer. avcodec_receive_frame should allocate the buffers using
> that routine so they should be valid.
>
> Thread 42 "Thread-6" received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 21798.21939]
> 0x0000002ade99c51c in memcpy () from
> /home/peter/proj/github.com/MythTV/packaging/android/so/libc.so
> (gdb) bt
> #0  0x0000002ade99c51c in memcpy () from
> /home/peter/proj/github.com/MythTV/packaging/android/so/libc.so
> #1  0x0000002afc1afa4c in
> ff_mediacodec_sw_buffer_copy_yuv420_semi_planar
> (avctx=avctx at entry=0x2b13274c00,
>      s=s at entry=0x2b14044cc0, data=data at entry=0x2b2ccc3a00 '\020'
> <repeats 200 times>..., size=size at entry=3110400,
>      info=info at entry=0x2b19ed8bf8, frame=frame at entry=0x2b140ba800) at
> libavcodec/mediacodec_sw_buffer.c:159
> #2  0x0000002afc1b418c in mediacodec_wrap_sw_buffer (frame=0x2b140ba800,
> info=0x2b19ed8bf8, index=7, size=3110400,
>      data=0x2b2ccc3a00 '\020' <repeats 200 times>..., s=0x2b14044cc0,
> avctx=0x2b13274c00)
>      at libavcodec/mediacodecdec_common.c:328
> #3  ff_mediacodec_dec_receive (avctx=avctx at entry=0x2b13274c00,
> s=0x2b14044cc0, frame=frame at entry=0x2b140ba800,
>      wait=wait at entry=true) at libavcodec/mediacodecdec_common.c:706
> #4  0x0000002afc1b31e0 in mediacodec_receive_frame (avctx=0x2b13274c00,
> frame=0x2b140ba800)
>      at libavcodec/mediacodecdec.c:432
> #5  0x0000002afbf494e4 in decode_receive_frame_internal
> (avctx=avctx at entry=0x2b13274c00,
>      frame=frame at entry=0x2b140ba800) at libavcodec/decode.c:610
> #6  0x0000002afbf4bf28 in avcodec_receive_frame (avctx=0x2b13274c00,
> frame=0x2b140ba800) at libavcodec/decode.c:726
> #7  0x0000002b0185bcdc in AvFormatDecoder::ProcessVideoPacket
> (this=0x2b0a41dc00, curstream=0x2b11bf6c80,
>      pkt=0x2b13f45a20) at avformatdecoder.cpp:3653
>
> Another backtrace shows some suspicious looking stuff in one of the
> buffers. a lot of 9's, 8's, 7's. I don't know if this gives a clue.
>
> #0  0x0000002ade99c51c in memcpy () from
> /home/peter/proj/github.com/MythTV/packaging/android/so/libc.so
> #1  0x0000002afc4b2a4c in
> ff_mediacodec_sw_buffer_copy_yuv420_semi_planar
> (avctx=avctx at entry=0x2b1293ee00,
>      s=s at entry=0x2b1afa0aa0,
>      data=data at entry=0x2b249f1a00 '9' <repeats 13 times>, ":::", '9'
> <repeats 13 times>, ":::", '9' <repeats 80 times>,
> ":::999999999888899999889999889998998888889988889:998888999988887888888889988887789988888"...,
>
> size=size at entry=3110400,
>      info=info at entry=0x2b17e42bf8, frame=frame at entry=0x2b04ba9c00) at
> libavcodec/mediacodec_sw_buffer.c:159
> #2  0x0000002afc4b718c in mediacodec_wrap_sw_buffer (frame=0x2b04ba9c00,
> info=0x2b17e42bf8, index=7, size=3110400,
>      data=0x2b249f1a00 '9' <repeats 13 times>, ":::", '9' <repeats 13
> times>, ":::", '9' <repeats 80 times>,
> ":::999999999888899999889999889998998888889988889:998888999988887888888889988887789988888"...,
>
> s=0x2b1afa0aa0, avctx=0x2b1293ee00)
>      at libavcodec/mediacodecdec_common.c:328
> #3  ff_mediacodec_dec_receive (avctx=avctx at entry=0x2b1293ee00,
> s=0x2b1afa0aa0, frame=frame at entry=0x2b04ba9c00,
>      wait=wait at entry=false) at libavcodec/mediacodecdec_common.c:706
> #4  0x0000002afc4b6074 in mediacodec_receive_frame (avctx=0x2b1293ee00,
> frame=0x2b04ba9c00)
>      at libavcodec/mediacodecdec.c:421
> #5  0x0000002afc24c4e4 in decode_receive_frame_internal
> (avctx=avctx at entry=0x2b1293ee00,
>      frame=frame at entry=0x2b04ba9c00) at libavcodec/decode.c:610
> #6  0x0000002afc24ef28 in avcodec_receive_frame (avctx=0x2b1293ee00,
> frame=0x2b04ba9c00) at libavcodec/decode.c:726
> #7  0x0000002b01857cdc in AvFormatDecoder::ProcessVideoPacket
> (this=0x2adf725800, curstream=0x2af790b300,
>      pkt=0x2b03547440) at avformatdecoder.cpp:3653
>
> Peter
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mythtv.org/pipermail/mythtv-dev/attachments/20180702/852221c9/attachment.html>


More information about the mythtv-dev mailing list