Bug#831529: gstreamer1.0-libav: segfault when trying to play h264 video

Tim Dengel tim.dengel.debian at gmail.com
Sun Jul 17 01:00:32 UTC 2016


Package: gstreamer1.0-libav
Version: 1.8.2-1
Severity: important

Dear Maintainer,

applications that use gstreamer segfault when trying to play any h264 video. Other codecs work fine.

I assume this is due to a recent ffmpeg update, but ffmpeg itself (and other applications using libav) continue to work, so I think the problem is in gstreamer.

Here is a backtrace I got from gst-launch-1.0 -v playbin uri=file:///path/to/video.mp4

------------------SNIP--------------------

Thread 6 "multiqueue0:src" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffedf1e700 (LWP 26245)]
0x00007ffff6fc01c8 in __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
54	../sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt full
#0  0x00007ffff6fc01c8 in __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
        resultvar = 0
        pid = 26237
        selftid = 26245
#1  0x00007ffff6fc164a in __GI_abort () at abort.c:89
        save_stage = 2
        act = 
          {__sigaction_handler = {sa_handler = 0x20, sa_sigaction = 0x20}, sa_mask = {__val = {140736585731512, 140736586987917, 142, 140736585750902, 140736817862560, 8, 140736885465681, 140736817858928, 16237680842874452480, 140736591042816, 140736817862560, 140736817863744, 16237680842874452480, 1136, 140736590853200, 140736817862560}}, sa_flags = -670496400, sa_restorer = 0x7fffd8090660}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007fffc9e78f5b in init_context_defaults (s=s at entry=0x7fffd80917a0, codec=codec at entry=0x7fffca841900 <ff_h264_vaapi_encoder>)
    at src/libavcodec/options.c:142
        ret = <optimized out>
        d = 0x7fffca813450 <vaapi_encode_h264_defaults+80>
        flags = <optimized out>
#3  0x00007fffc9e79026 in avcodec_alloc_context3 (codec=0x7fffca841900 <ff_h264_vaapi_encoder>) at src/libavcodec/options.c:163
        avctx = 0x7fffd80917a0
#4  0x00007fffdc380540 in gst_ffmpeg_cfg_install_property (klass=0x7fffd8090970, base=8) at gstavcfg.c:732
        pspec = <optimized out>
        list = <optimized out>
        prop_id = 8
        ctx = <optimized out>
        __func__ = "gst_ffmpeg_cfg_install_property"
#5  0x00007fffdc376e53 in gst_ffmpegvidenc_class_init (klass=0x7fffd8090970) at gstavvidenc.c:225
        gobject_class = 0x7fffd8090970
        venc_class = 0x7fffd8090970
        caps = <optimized out>
#6  0x00007ffff788c22d in g_type_class_ref (pclass=0x7fffd8090660, node=0x7fffd8090380)
    at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./gobject/gtype.c:2241
        slist = <optimized out>
        init_slist = <optimized out>
        i = <optimized out>
        class = 0x7fffd8090970
        entries = <optimized out>
        entry = <optimized out>
---Type <return> to continue, or q <return> to quit---
        bnode = <optimized out>
        ptype = <optimized out>
        holds_ref = <optimized out>
        pclass = <optimized out>
#7  0x00007ffff788c22d in g_type_class_ref (type=type at entry=140736817857408) at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./gobject/gtype.c:2956
        ptype = <optimized out>
        holds_ref = <optimized out>
        pclass = <optimized out>
#8  0x00007ffff7b09da4 in gst_element_register (plugin=plugin at entry=0x6df290 [GstPlugin], name=name at entry=0x7fffd806cea0 "avenc_h264_vaapi", rank=rank at entry=128, type=type at entry=140736817857408) at gstelementfactory.c:243
        existing_feature = <optimized out>
        registry = 0x61b950 [GstRegistry]
        factory = 0x7fffe0022160 [GstElementFactory]
        interfaces = <optimized out>
        n_interfaces = 32767
        i = <optimized out>
        klass = <optimized out>
        item = <optimized out>
        __func__ = "gst_element_register"
        __PRETTY_FUNCTION__ = "gst_element_register"
#9  0x00007fffdc3775b3 in gst_ffmpegvidenc_register (plugin=plugin at entry=0x6df290 [GstPlugin]) at gstavvidenc.c:1009
        type_name = 0x7fffd806cea0 "avenc_h264_vaapi"
        typeinfo = 
          {class_size = 792, base_init = 0x7fffdc376ef0 <gst_ffmpegvidenc_base_init>, base_finalize = 0x0, class_init = 0x7fffdc376c50 <gst_ffmpegvidenc_class_init>, class_finalize = 0x0, class_data = 0x0, instance_size = 1944, n_preallocs = 0, instance_init = 0x7fffdc375540 <gst_ffmpegvidenc_init>, value_table = 0x0}
        type = 140736817857408
        in_plugin = 0x7fffca841900 <ff_h264_vaapi_encoder>
        __func__ = "gst_ffmpegvidenc_register"
#10 0x00007fffdc369e20 in plugin_init (plugin=0x6df290 [GstPlugin]) at gstav.c:158
        plugin = 0x6df290 [GstPlugin]
#11 0x00007ffff7b2b537 in gst_plugin_register_func (plugin=0x6df290 [GstPlugin], desc=0x7fffdc598180 <gst_plugin_desc>, user_data=0x0)
    at gstplugin.c:523
        user_data = 0x0
        desc = 0x7fffdc598180 <gst_plugin_desc>
        plugin = 0x6df290 [GstPlugin]
---Type <return> to continue, or q <return> to quit---
#12 0x00007ffff7b2d425 in _priv_gst_plugin_load_file_for_registry (filename=0x6dec50 "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstlibav.so", registry=0x61b950 [GstRegistry], registry at entry=0x0, error=error at entry=0x7fffedf1d060) at gstplugin.c:826
        desc = <optimized out>
        plugin = 0x6df290 [GstPlugin]
        module = <optimized out>
        ret = <optimized out>
        ptr = 0x7fffdc598180 <gst_plugin_desc>
        file_status = 
            {st_dev = 20, st_ino = 12284313, st_nlink = 1, st_mode = 33188, st_uid = 0, st_gid = 0, __pad0 = 0, st_rdev = 0, st_size = 241040, st_blksize = 4096, st_blocks = 472, st_atim = {tv_sec = 1465819700, tv_nsec = 0}, st_mtim = {tv_sec = 1465462429, tv_nsec = 0}, st_ctim = {tv_sec = 1465819782, tv_nsec = 466688673}, __glibc_reserved = {0, 0, 0}}
        new_plugin = 0
        flags = <optimized out>
        __func__ = "_priv_gst_plugin_load_file_for_registry"
        __PRETTY_FUNCTION__ = "_priv_gst_plugin_load_file_for_registry"
#13 0x00007ffff7b2dcea in gst_plugin_load_file (filename=<optimized out>, error=error at entry=0x7fffedf1d060) at gstplugin.c:680
#14 0x00007ffff7b2e12c in gst_plugin_load_by_name (name=0x6dcd49 "libav") at gstplugin.c:1265
        plugin = 0x6df290 [GstPlugin]
        newplugin = <optimized out>
        error = 0x0
        __PRETTY_FUNCTION__ = "gst_plugin_load_by_name"
#15 0x00007ffff7b2ea8d in gst_plugin_feature_load (feature=feature at entry=0x7576e0 [GstElementFactory]) at gstpluginfeature.c:111
        plugin = <optimized out>
        real_feature = <optimized out>
        __func__ = "gst_plugin_feature_load"
        __PRETTY_FUNCTION__ = "gst_plugin_feature_load"
#16 0x00007ffff7b0946e in gst_element_factory_create (factory=0x7576e0 [GstElementFactory], name=0x0) at gstelementfactory.c:351
        element = <optimized out>
        oclass = <optimized out>
        newfactory = <optimized out>
        __func__ = "gst_element_factory_create"
        __PRETTY_FUNCTION__ = "gst_element_factory_create"
#17 0x00007ffff5fae398 in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstplayback.so
#18 0x00007ffff5fba202 in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstplayback.so
#19 0x00007ffff5fbaab2 in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstplayback.so
#20 0x00007ffff5fbacff in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstplayback.so
---Type <return> to continue, or q <return> to quit---
#24 0x00007ffff788708f in <emit signal notify:caps on instance 0x7fffe001abb0 [GstPad]> (instance=instance at entry=0x7fffe001abb0, signal_id=<optimized out>, detail=<optimized out>) at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./gobject/gsignal.c:3441
Python Exception <class 'gdb.error'> Attempt to dereference a generic pointer.: 
#25 0x00007ffff78704d4 in g_object_dispatch_properties_changed (object=0x7fffe001abb0 [GstPad], n_pspecs=<optimized out>, pspecs=<optimized out>)
    at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./gobject/gobject.c:1062
        i = <optimized out>
#26 0x00007ffff7adcd44 in gst_object_dispatch_properties_changed (object=0x7fffe001abb0 [GstPad], n_pspecs=1, pspecs=0x7fffedf1d830)
    at gstobject.c:445
        gst_object = <optimized out>
        parent = <optimized out>
        old_parent = <optimized out>
        i = <optimized out>
        name = 0x0
        debug_name = <optimized out>
        __PRETTY_FUNCTION__ = "gst_object_dispatch_properties_changed"
#27 0x00007ffff7872a79 in g_object_notify_by_pspec (pspec=<optimized out>, object=0x7fffe001abb0 [GstPad])
    at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./gobject/gobject.c:1155
        nqueue = 0x0
        notify_pspec = 0x61a0a0 [GParamBoxed]
        __func__ = "g_object_notify_by_pspec"
#28 0x00007ffff7872a79 in g_object_notify_by_pspec (object=object at entry=0x7fffe001abb0 [GstPad], pspec=<optimized out>)
    at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./gobject/gobject.c:1265
        __func__ = "g_object_notify_by_pspec"
#29 0x00007ffff7b1afbc in store_sticky_event (pad=pad at entry=0x7fffe001abb0 [GstPad], event=event at entry=0x7fffe002a120) at gstpad.c:5076
        i = <optimized out>
        len = <optimized out>
        type = <optimized out>
        events = <optimized out>
        res = <optimized out>
        name = <optimized out>
        insert = <optimized out>
        __PRETTY_FUNCTION__ = "store_sticky_event"
        __func__ = "store_sticky_event"
#30 0x00007ffff7b26710 in gst_pad_push_event (pad=0x7fffe001abb0 [GstPad], event=0x7fffe002a120) at gstpad.c:5353
        res = 0
        type = GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM
        sticky = 1
---Type <return> to continue, or q <return> to quit---
        serialized = 1
        __func__ = "gst_pad_push_event"
        __PRETTY_FUNCTION__ = "gst_pad_push_event"
#31 0x00007fffed501a1b in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstaudioparsers.so
#32 0x00007fffed50228f in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstaudioparsers.so
#33 0x00007ffff53cf963 in gst_base_parse_sink_event_default (parse=0x7fffe0025ca0 [GstAacParse], event=0x7fffe0004de0) at gstbaseparse.c:1186
        caps = 0x7fffe0006000
        klass = <optimized out>
        ret = 0
        forward_immediate = 0
        __PRETTY_FUNCTION__ = "gst_base_parse_sink_event_default"
#34 0x00007ffff7b1c317 in gst_pad_send_event_unchecked (pad=pad at entry=0x7fffe001a970 [GstPad], event=event at entry=0x7fffe0004de0, type=<optimized out>, type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5576
        ret = <optimized out>
        event_type = <optimized out>
        serialized = <optimized out>
        need_unlock = 1
        sticky = <optimized out>
        eventfunc = 0x7ffff53c40f0 <gst_base_parse_sink_event>
        eventfullfunc = 0x0
        parent = 0x7fffe0025ca0 [GstAacParse]
        __PRETTY_FUNCTION__ = "gst_pad_send_event_unchecked"
#35 0x00007ffff7b1c74e in gst_pad_push_event_unchecked (pad=pad at entry=0x7fffe001a730 [GstPad], event=0x7fffe0004de0, type=type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5234
        ret = <optimized out>
        peerpad = 0x7fffe001a970 [GstPad]
        event_type = GST_EVENT_CAPS
        __PRETTY_FUNCTION__ = "gst_pad_push_event_unchecked"
#36 0x00007ffff7b1cb90 in push_sticky (pad=pad at entry=0x7fffe001a730 [GstPad], ev=ev at entry=0x7fffedf1dd10, user_data=user_data at entry=0x7fffedf1dd80)
    at gstpad.c:3779
        data = 0x7fffedf1dd80
        event = 0x7fffe0004de0
        __PRETTY_FUNCTION__ = "push_sticky"
#37 0x00007ffff7b1a83f in events_foreach (pad=pad at entry=0x7fffe001a730 [GstPad], func=func at entry=0x7ffff7b1ca40 <push_sticky>, user_data=user_data at entry=0x7fffedf1dd80) at gstpad.c:601
        ev = 0x7fffe0023b40
---Type <return> to continue, or q <return> to quit---
        ev_ret = {received = 0, event = 0x7fffe0004de0}
        i = 1
        len = 2
        events = 0x7fffe0005410
        ret = <optimized out>
        cookie = 2
#38 0x00007ffff7b26864 in gst_pad_push_event (event=0x7fffe0004de0, pad=0x7fffe001a730 [GstPad]) at gstpad.c:3836
        data = {ret = GST_FLOW_OK, was_eos = 0, event = 0x7fffe0004de0}
        res = 0
        type = GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM
        sticky = <optimized out>
        serialized = <optimized out>
        __func__ = "gst_pad_push_event"
        __PRETTY_FUNCTION__ = "gst_pad_push_event"
#39 0x00007ffff7b26864 in gst_pad_push_event (pad=0x7fffe001a730 [GstPad], event=event at entry=0x7fffe0004de0) at gstpad.c:5365
        res = 0
        type = GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM
        sticky = <optimized out>
        serialized = <optimized out>
        __func__ = "gst_pad_push_event"
        __PRETTY_FUNCTION__ = "gst_pad_push_event"
#40 0x00007ffff4ce854e in gst_multi_queue_loop (allow_drop=<synthetic pointer>, object=0x7fffe0004de0, sq=0x7fffe0023560, mq=0x7fffe000d070 [GstMultiQueue]) at gstmultiqueue.c:1458
        event = 0x7fffe0004de0
        result = GST_FLOW_OK
        sq = 0x7fffe0023560
        item = <optimized out>
        sitem = 0x7fffd8001990
        mq = 0x7fffe000d070 [GstMultiQueue]
        object = <optimized out>
        newid = 10
        result = <optimized out>
        next_time = <optimized out>
        is_buffer = 0
        do_update_buffering = 0
        dropping = 0
---Type <return> to continue, or q <return> to quit---
        __PRETTY_FUNCTION__ = "gst_multi_queue_loop"
#41 0x00007ffff4ce854e in gst_multi_queue_loop (pad=<optimized out>) at gstmultiqueue.c:1701
        sq = 0x7fffe0023560
        item = <optimized out>
        sitem = 0x7fffd8001990
        mq = 0x7fffe000d070 [GstMultiQueue]
        object = <optimized out>
        newid = 10
        result = <optimized out>
        next_time = <optimized out>
        is_buffer = 0
        do_update_buffering = 0
        dropping = 0
        __PRETTY_FUNCTION__ = "gst_multi_queue_loop"
#42 0x00007ffff7b4fe71 in gst_task_func (task=0x833cb0 [GstTask]) at gsttask.c:332
        lock = 0x7fffe001a7a0
        tself = 0x7fffe0006140
        priv = 0x833c60
        __PRETTY_FUNCTION__ = "gst_task_func"
#43 0x00007ffff75bc55e in g_thread_pool_thread_proxy (data=<optimized out>) at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./glib/gthreadpool.c:307
        task = 0x7fffe0003c10
        pool = 0x623f60
#44 0x00007ffff75bbbc5 in g_thread_proxy (data=0x7fffe0006140) at /build/glib2.0-vjfO_h/glib2.0-2.48.1/./glib/gthread.c:780
        thread = 0x7fffe0006140
#45 0x00007ffff7335464 in start_thread (arg=0x7fffedf1e700) at pthread_create.c:333
        __res = <optimized out>
        pd = 0x7fffedf1e700
        now = <optimized out>
        unwind_buf = 
              {cancel_jmp_buf = {{jmp_buf = {140737185441536, 2620934839452329127, 0, 140737207136415, 3, 6438752, -2620895172195490649, -2620953974834305881}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
---Type <return> to continue, or q <return> to quit---
#46 0x00007ffff707430d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb) q


------------------SNIP--------------------

-- System Information:
Debian Release: stretch/sid
  APT prefers unstable
  APT policy: (1000, 'unstable'), (500, 'unstable-debug'), (500, 'experimental'), (1, 'experimental-debug')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages gstreamer1.0-libav depends on:
ii  libavcodec57                    7:3.1.1-2
ii  libavfilter6                    7:3.1.1-2
ii  libavformat57                   7:3.1.1-2
ii  libavutil55                     7:3.1.1-2
ii  libc6                           2.23-1
ii  libglib2.0-0                    2.48.1-2
ii  libgstreamer-plugins-base1.0-0  1.8.2-1
ii  libgstreamer1.0-0               1.8.2-1

gstreamer1.0-libav recommends no packages.

gstreamer1.0-libav suggests no packages.

-- no debconf information



More information about the pkg-gstreamer-maintainers mailing list