After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 670735 - Crash when decoding H.264 stream
Crash when decoding H.264 stream
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-libav
0.10.13
Other Linux
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-02-24 11:11 UTC by Tvrtko Ursulin
Modified: 2012-12-14 00:42 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tvrtko Ursulin 2012-02-24 11:11:27 UTC
gstreamer-ffmpeg 0.10.13 using the built-in libav. 

I've also raised this at http://bugzilla.libav.org/show_bug.cgi?id=230 being unsure where the bug actually lies.

The stream is coming out a hardware encoder which puts it on the network (UDP
multicast) as a MPEG TS with H.264 video and AAC audio. Regularly, maybe once
per hour or so, the decoder crashes. For example:

[118325.648389] multiqueue0:src[4260]: segfault at e508f ip 00007f657763c38c sp
00007f65627f9788 error 4 in libgstffmpeg.so[7f657721c000+7ea000]

Traceback looks like this:

  • #0 put_pixels16_sse2
  • #1 put_h264_qpel16_mc00_sse2
  • #2 mc_dir_part
  • #3 mc_part_std
  • #4 mc_part
    at libavcodec/h264.c line 663
  • #5 hl_motion
    at libavcodec/h264.c line 705
  • #6 hl_motion_8
    at libavcodec/h264.c line 805
  • #7 hl_decode_mb_internal
    at libavcodec/h264.c line 1920
  • #8 hl_decode_mb_complex
    at libavcodec/h264.c line 2092
  • #9 ff_h264_hl_decode_mb
    at libavcodec/h264.c line 2115
  • #10 guess_mv
    at libavcodec/error_resilience.c line 576
  • #11 ff_er_frame_end
    at libavcodec/error_resilience.c line 1052
  • #12 field_end
    at libavcodec/h264.c line 2433
  • #13 decode_frame
    at libavcodec/h264.c line 3949
  • #14 frame_worker_thread
    at libavcodec/pthread.c line 301
  • #15 start_thread
    from /lib64/libpthread.so.0
  • #16 clone
    from /lib64/libc.so.6
  • #0 put_h264_qpel8or16_v_lowpass_sse2
  • #1 put_h264_qpel16_v_lowpass_sse2
  • #2 mc_dir_part
  • #3 mc_part_std
  • #4 mc_part
    at libavcodec/h264.c line 663
  • #5 hl_motion
    at libavcodec/h264.c line 705
  • #6 hl_motion_8
    at libavcodec/h264.c line 805
  • #7 hl_decode_mb_internal
    at libavcodec/h264.c line 1920
  • #8 hl_decode_mb_complex
    at libavcodec/h264.c line 2092
  • #9 ff_h264_hl_decode_mb
    at libavcodec/h264.c line 2115
  • #10 guess_mv
    at libavcodec/error_resilience.c line 576
  • #11 ff_er_frame_end
    at libavcodec/error_resilience.c line 1052
  • #12 field_end
    at libavcodec/h264.c line 2433
  • #13 decode_frame
    at libavcodec/h264.c line 3949
  • #14 frame_worker_thread
    at libavcodec/pthread.c line 301
  • #15 start_thread
    from /lib64/libpthread.so.0
  • #16 clone
    from /lib64/libc.so.6

Comment 1 Tvrtko Ursulin 2012-02-24 11:15:00 UTC
Smallest stream which triggers the crash is 1.9Mb and as such I can't attach it here. You can get it from the libav.org bugzilla.
Comment 2 Tvrtko Ursulin 2012-02-24 11:38:41 UTC
And if I replace internal libav with ffmpeg 0.7.11 or 0.9.1 crash is gone.

Upgrading to libav 0.7.4 and crash still happens.
Comment 3 Tvrtko Ursulin 2012-02-24 11:40:00 UTC
However just decoding the stream with ffmpeg command line and I don't see the crash. (ffmpeg -i <file> -f null -)
Comment 4 Tim-Philipp Müller 2012-02-24 11:46:32 UTC
> However just decoding the stream with ffmpeg command line and I don't see the
> crash. (ffmpeg -i <file> -f null -)

You should probably close the libav bug then, for now at least.
Comment 5 Tim-Philipp Müller 2012-12-14 00:42:45 UTC
This does not crash any more with libav 0.9 and gst-libav in git master (but also not with the 1.0.x branch). There's an audible gap in the audio, and some visual artefacts and libav warnings though:


$ gst-launch-1.0 playbin uri=file:///home/tpm/samples/misc/670735-colossus-crash2.ts
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
0:00:01.898384296  5552      0x1f12800 ERROR                  libav :0:: left block unavailable for requested intra mode at 0 15
0:00:01.898449877  5552      0x1f12800 ERROR                  libav :0:: error while decoding MB 0 14, bytestream (93)
0:00:01.953423908  5552      0x1f12800 ERROR                  libav :0:: get_buffer() failed (-1 2 (nil))
0:00:01.953503527  5552      0x1f12800 ERROR                  libav :0:: decode_slice_header error
Got EOS from element "playbin0".
Execution ended after 0:00:03.727817834

but it plays exactly like in VLC, so let's close this.

Please re-open if you still have issues with 1.x, thanks for the bug report and sample!