Skip to content

srt: Don't take object lock calling gst_srt_object_get_stats

This function takes the sock lock. This can result in a deadlock when another thread holding the sock lock is trying to take the object lock.

Thread A (Holds object lock, wants sock lock):

#2  gst_srt_object_get_stats at gst-plugins-bad/ext/srt/gstsrtobject.c:1753
#3  gst_srt_object_get_property_helper at gst-plugins-bad/ext/srt/gstsrtobject.c:409
#4  gst_srt_sink_get_property at gst-plugins-bad/ext/srt/gstsrtsink.c:95
#5  g_object_get_property from libgobject-2.0.so.0

Thread B (Holds sock lock, wants object lock):

#2  gst_element_post_message_default at gstreamer/gst/gstelement.c:2069
#3  gst_element_post_message at gstreamer/gst/gstelement.c:2123
#4  gst_element_message_full_with_details at gstreamer/gst/gstelement.c:2259
#5  gst_element_message_full at gstreamer/gst/gstelement.c:2298
#6  gst_srt_object_send_headers at gst-plugins-bad/ext/srt/gstsrtobject.c:1407
#7  gst_srt_object_send_headers at gst-plugins-bad/ext/srt/gstsrtobject.c:1444
#8  gst_srt_object_write_to_callers at gst-plugins-bad/ext/srt/gstsrtobject.c:1444
#9  gst_srt_object_write at gst-plugins-bad/ext/srt/gstsrtobject.c:1598
#10 gst_srt_sink_render at gst-plugins-bad/ext/srt/gstsrtsink.c:179

Fixes d2d00e07.

Merge request reports