ghostpad: invalid ref getting internal pad
@mparisdiaz
Submitted by Miguel París Díaz Link to original bug (#768100)
Description
Hello,
I found an invalid reference usage while I was doing "massive testing".
In the GDB trace [gdb-1] we can see that the internal pad ref is not valid when the refcount is tried to be increased [ref-1]
Refs
[ref-1] https://github.com/Kurento/gstreamer/blob/2f41e7bc6a842044cb73bc0470601200575c378a/gst/gstghostpad.c#L224
GDB traces
[gdb-1]
#0 0x00002aae19f2289b in g_logv (breakpoint=1) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmessages.c:324
#1 0x00002aae19f2289b in g_logv (log_domain=0x2aae19cbaa56 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x2aae2755d2d0) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmessages.c:1081
#2 0x00002aae19f22a0f in g_log (log_domain=log_domain@entry=0x2aae19cbaa56 "GLib-GObject", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x2aae19f6d114 "%s: assertion '%s' failed")
at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmessages.c:1119
#3 0x00002aae19f22a49 in g_return_if_fail_warning (log_domain=log_domain@entry=0x2aae19cbaa56 "GLib-GObject", pretty_function=pretty_function@entry=0x2aae19cbe198 <__func__.13611> "g_object_ref", expression=expression@entry=0x2aae19cbceba "G_IS_OBJECT (object)") at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./glib/gmessages.c:1128
#4 0x00002aae19c93a3c in g_object_ref (_object=_object@entry=0x2aae8400a2c0) at /build/glib2.0-ajuDY6/glib2.0-2.46.1/./gobject/gobject.c:3045
#5 0x00002aae1998a131 in gst_object_ref (object=object@entry=0x2aae8400a2c0) at gstobject.c:256
#6 0x00002aae199bb04b in gst_proxy_pad_get_internal (pad=0x2aae5c017600 [GstProxyPad]) at gstghostpad.c:224
#7 0x00002aae199bb0d8 in gst_proxy_pad_iterate_internal_links_default (pad=0x2aae5c017600 [GstProxyPad], parent=<optimized out>) at gstghostpad.c:94
#8 0x00002aae199cebac in gst_pad_iterate_internal_links (pad=pad@entry=0x2aae5c017600 [GstProxyPad]) at gstpad.c:2876
#9 0x00002aae199cec6b in gst_pad_forward (pad=pad@entry=0x2aae5c017600 [GstProxyPad], forward=forward@entry=0x2aae19a04df0 <query_accept_caps_func>, user_data=user_data@entry=0x2aae2755d530) at gstpad.c:2915
#10 0x00002aae19a07261 in gst_pad_proxy_query_accept_caps (pad=pad@entry=0x2aae5c017600 [GstProxyPad], query=query@entry=0x2aae5c0148a0) at gstutils.c:2539
#11 0x00002aae199cf4a8 in gst_pad_query_default (query=0x2aae5c0148a0, pad=0x2aae5c017600 [GstProxyPad]) at gstpad.c:3062
#12 0x00002aae199cf4a8 in gst_pad_query_default (pad=0x2aae5c017600 [GstProxyPad], parent=<optimized out>, query=0x2aae5c0148a0) at gstpad.c:3338
#13 0x00002aae199d010a in gst_pad_query (pad=pad@entry=0x2aae5c017600 [GstProxyPad], query=query@entry=0x2aae5c0148a0) at gstpad.c:3922
#14 0x00002aae19a0a3d6 in gst_pad_query_accept_caps (pad=pad@entry=0x2aae5c017600 [GstProxyPad], caps=<optimized out>) at gstutils.c:2926
#15 0x00002aae199c8ad2 in gst_pad_send_event_unchecked (event=0x2aae5c0028e0, pad=0x2aae5c017600 [GstProxyPad]) at gstpad.c:5435
#16 0x00002aae199c8ad2 in gst_pad_send_event_unchecked (pad=pad@entry=0x2aae5c017600 [GstProxyPad], event=event@entry=0x2aae5c0028e0, type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5567
#17 0x00002aae199c8f7b in gst_pad_push_event_unchecked (pad=pad@entry=0x2aae9000aec0 [GstTeePad], event=0x2aae5c0028e0, type=type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5234
#18 0x00002aae199c9588 in push_sticky (pad=0x2aae9000aec0 [GstTeePad], ev=0x2aae2755d900, user_data=0x2aae2755d990) at gstpad.c:3779
#19 0x00002aae199c7532 in events_foreach (pad=pad@entry=0x2aae9000aec0 [GstTeePad], func=func@entry=0x2aae199c9430 <push_sticky>, user_data=user_data@entry=0x2aae2755d990) at gstpad.c:601
#20 0x00002aae199c9a46 in gst_pad_push_data (event=0x0, pad=0x2aae9000aec0 [GstTeePad]) at gstpad.c:3836
#21 0x00002aae199c9a46 in gst_pad_push_data (pad=pad@entry=0x2aae9000aec0 [GstTeePad], type=type@entry=4112, data=data@entry=0x2aae80010c40) at gstpad.c:4407
#22 0x00002aae199d1cbe in gst_pad_push (pad=pad@entry=0x2aae9000aec0 [GstTeePad], buffer=0x2aae80010c40) at gstpad.c:4548
#23 0x00002aae1cea4b89 in gst_tee_handle_data (is_list=0, data=0x2aae80010c40, pad=0x2aae9000aec0 [GstTeePad], tee=0x2aae6800a1c0 [GstTee]) at gsttee.c:605
#24 0x00002aae1cea4b89 in gst_tee_handle_data (tee=tee@entry=0x2aae6800a1c0 [GstTee], data=data@entry=0x2aae80010c40, is_list=is_list@entry=0) at gsttee.c:685
#25 0x00002aae1cea51a3 in gst_tee_chain (pad=pad@entry=0x2aae5c00aff0 [GstPad], parent=parent@entry=0x2aae6800a1c0 [GstTee], buffer=buffer@entry=0x2aae80010c40) at gsttee.c:768
Version: 1.8.2