[Bug 686365] New: pad: segfault querying pad caps

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Oct 18 04:19:33 PDT 2012


https://bugzilla.gnome.org/show_bug.cgi?id=686365
  GStreamer | gstreamer (core) | 1.x

           Summary: pad: segfault querying pad caps
    Classification: Platform
           Product: GStreamer
           Version: 1.x
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: ylatuya at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


I can trigger a segfault in gst_pad_query_caps with the following use case:
  * pipeline appsrc nun-buffers=1 ! decodebin
  * connect to decodebin's "new-decoded-pad"
  * push one buffer to appsrc containing 5 seconds of H264 muxed in a mpegts
stream, appsrc sends an eos after this buffer is pushed because of
num-buffers=1
  * query caps in for the new pad in new_decoded_caps_cb callback

Program received signal SIGSEGV, Segmentation fault.
[Cambiando a Thread 0x7fffe3fff700 (LWP 16832)]
0x00007ffff757ba8c in g_datalist_id_get_data () from
/home/andoni/cerbero/dist/linux_x86_64/lib/libglib-2.0.so.0
(gdb) bt
#0  0x00007ffff757ba8c in g_datalist_id_get_data () from
/home/andoni/cerbero/dist/linux_x86_64/lib/libglib-2.0.so.0
#1  0x00007ffff78a78f1 in g_object_notify_queue_freeze () from
/home/andoni/cerbero/dist/linux_x86_64/lib/libgobject-2.0.so.0
#2  0x00007ffff78a93a1 in g_object_notify_by_spec_internal () from
/home/andoni/cerbero/dist/linux_x86_64/lib/libgobject-2.0.so.0
#3  0x00007ffff78a968d in g_object_notify_by_pspec () from
/home/andoni/cerbero/dist/linux_x86_64/lib/libgobject-2.0.so.0
#4  0x00007ffff7b40622 in gst_pad_store_sticky_event (pad=0x7fffe401c400,
event=<optimized out>) at gstpad.c:4429
#5  0x00007ffff7b4ac1b in gst_pad_push_event (pad=0x7fffe401c400,
event=0x7fffe4002f00) at gstpad.c:4626
#6  0x00007ffff7b4af17 in event_forward_func (pad=0x7fffe401c400,
data=0x7fffe3ffe920) at gstpad.c:2719
#7  0x00007ffff7b47f8a in gst_pad_forward (pad=0x7fffed97cb60,
forward=0x7ffff7b4ae40 <event_forward_func>, user_data=0x7fffe3ffe920) at
gstpad.c:2673
#8  0x00007ffff7b48739 in gst_pad_event_default (pad=<optimized out>,
parent=<optimized out>, event=0x7fffe4002f00) at gstpad.c:2770
#9  0x00007ffff7b41add in gst_pad_send_event_unchecked (pad=0x7fffed97cb60,
event=0x7fffe4002f00, type=<optimized out>) at gstpad.c:4821
#10 0x00007ffff7b4233e in gst_pad_push_event_unchecked (pad=0x7fffe40302f0,
event=0x7fffe4002f00, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at
gstpad.c:4514
#11 0x00007ffff7b42838 in push_sticky (pad=0x7fffe40302f0, ev=0x7fffe3ffec30,
user_data=0x7fffe3ffeca0) at gstpad.c:3285
#12 0x00007ffff7b40372 in events_foreach (pad=0x7fffe40302f0,
func=0x7ffff7b42780 <push_sticky>, user_data=0x7fffe3ffeca0) at gstpad.c:514
#13 0x00007ffff7b4adb4 in check_sticky (pad=0x7fffe40302f0) at gstpad.c:3333
#14 gst_pad_push_event (pad=0x7fffe40302f0, event=0x7fffe4002f00) at
gstpad.c:4635
#15 0x00007fffe8db986d in gst_single_queue_push_one (object=0x7fffe4002f00,
sq=0x7fffe405b3a0, mq=0x7fffe405a040) at gstmultiqueue.c:1080
#16 gst_multi_queue_loop (pad=<optimized out>) at gstmultiqueue.c:1303
#17 0x00007ffff7b717df in gst_task_func (task=0x7cdb40) at gsttask.c:316
#18 0x00007ffff75c6e12 in g_thread_pool_thread_proxy () from
/home/andoni/cerbero/dist/linux_x86_64/lib/libglib-2.0.so.0
#19 0x00007ffff75c684d in g_thread_proxy () from
/home/andoni/cerbero/dist/linux_x86_64/lib/libglib-2.0.so.0
#20 0x00007ffff7333e9a in start_thread (arg=0x7fffe3fff700) at
pthread_create.c:308
#21 0x00007ffff7060dbd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#22 0x0000000000000000 in ?? ()
(gdb) frame 4
#4  0x00007ffff7b40622 in gst_pad_store_sticky_event (pad=0x7fffe401c400,
event=<optimized out>) at gstpad.c:4429
4429            g_object_notify_by_pspec ((GObject *) pad, pspec_caps);
(gdb) l
4424        switch (GST_EVENT_TYPE (event)) {
4425          case GST_EVENT_CAPS:
4426            GST_OBJECT_UNLOCK (pad);
4427    
4428            GST_DEBUG_OBJECT (pad, "notify caps");
4429            g_object_notify_by_pspec ((GObject *) pad, pspec_caps);
4430    
4431            GST_OBJECT_LOCK (pad);
4432            break;
4433          default:
(gdb) p *pad
$1 = {object = {object = {g_type_instance = {g_class = 0x7fffed8d5c00},
ref_count = 6, qdata = 0x7254c4}, lock = {p = 0x7fffe405b060, i = {3825578080,
32767}}, 
    name = 0x7fffdc001a70 "src_0", parent = 0x7fffed978090, flags = 29952,
control_bindings = 0x0, control_rate = 100000000, last_sync =
18446744073709551615, 
    _gst_reserved = 0x0}, element_private = 0x0, padtemplate = 0x7fffe401a420,
direction = GST_PAD_SRC, stream_rec_lock = {p = 0x7fffe4056490, i = {0, 0}},
task = 0x0, 
  block_cond = {p = 0x7fffe4059950, i = {0, 0}}, probes = {seq_id = 2,
hook_size = 72, is_setup = 1, hooks = 0x7fffe402b2d0, dummy3 = 0x0, 
    finalize_hook = 0x7ffff7589824 <default_finalize_hook>, dummy = {0x0,
0x0}}, mode = GST_PAD_MODE_PUSH, activatefunc = 0x7ffff7b479e0
<gst_pad_activate_default>, 
  activatedata = 0x0, activatenotify = 0, activatemodefunc = 0x7ffff7b35620
<gst_ghost_pad_activate_mode_default>, activatemodedata = 0x0,
activatemodenotify = 0, peer = 0x0, 
  linkfunc = 0, linkdata = 0x0, linknotify = 0, unlinkfunc = 0, unlinkdata =
0x0, unlinknotify = 0, chainfunc = 0, chaindata = 0x0, chainnotify = 0, 
  chainlistfunc = 0x7ffff7b432d0 <gst_pad_chain_list_default>, chainlistdata =
0x0, chainlistnotify = 0, getrangefunc = 0x7ffff7b350b0
<gst_proxy_pad_getrange_default>, 
  getrangedata = 0x0, getrangenotify = 0, eventfunc = 0x7ffff7b48650
<gst_pad_event_default>, eventdata = 0x0, eventnotify = 0, offset = 0, 
  queryfunc = 0x7ffff7b47fc0 <gst_pad_query_default>, querydata = 0x0,
querynotify = 0, iterintlinkfunc = 0x7ffff7b35370
<gst_proxy_pad_iterate_internal_links_default>, 
  iterintlinkdata = 0x0, iterintlinknotify = 0, num_probes = 1, num_blocked =
0, priv = 0x7fffe401c640, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}
(gdb) p pspec_caps
$2 = (GParamSpec *) 0x6198f0
(gdb) p *pspec_caps
$3 = {g_type_instance = {g_class = 0x6131a0}, name = 0x7ffff7b9fec9 "caps",
flags = 225, value_type = 6360208, owner_type = 6360704, _nick = 0x7ffff7b96ec7
"Caps", 
  _blurb = 0x7ffff7b9faed "The capabilities of the pad", qdata = 0x0, ref_count
= 2, param_id = 1}
(gdb)

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list