[Bug 721300] New: tee: locking issues
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Wed Jan 1 04:57:22 PST 2014
https://bugzilla.gnome.org/show_bug.cgi?id=721300
GStreamer | gstreamer (core) | git
Summary: tee: locking issues
Classification: Platform
Product: GStreamer
Version: git
OS/Version: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gstreamer (core)
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: me at andrey-utkin.pp.ua
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
My app to removes pipeline parts while in PLAYING state.
Have got a following crash backtrace from valgrind just now (after
certain amount of uptime).
The point is that tee srcpad is released (from main thread or
whatever), and at the same time tee is pushing data though its
srcpads.
The other way should be releasing tee srcpad from BLOCK probe
callback. But unfortunately it results in similar crash, see second
part of log below.
==11961== Thread 5:
==11961== Invalid read of size 8
==11961== at 0x4EDB3C6: g_mutex_get_impl (gthread-posix.c:121)
==11961== by 0x4EDB464: g_mutex_lock (gthread-posix.c:210)
==11961== by 0x545DA15: gst_pad_push_data (gstpad.c:3995)
==11961== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==11961== by 0x963D037: gst_tee_handle_data (gsttee.c:601)
==11961== by 0x963D4C7: gst_tee_chain (gsttee.c:699)
==11961== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==11961== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==11961== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==11961== by 0x7191003: gst_base_src_loop (gstbasesrc.c:2785)
==11961== by 0x54919BB: gst_task_func (gsttask.c:316)
==11961== by 0x5492AB6: default_func (gsttaskpool.c:70)
==11961== by 0x4EB79BD: g_thread_pool_thread_proxy (gthreadpool.c:309)
==11961== by 0x4EB73D2: g_thread_proxy (gthread.c:798)
==11961== by 0x5B68DA5: start_thread (in /lib64/libpthread-2.15.so)
==11961== by 0x6A86ABC: clone (in /lib64/libc-2.15.so)
==11961== Address 0xfac0cd8 is 24 bytes inside a block of size 576 free'd
==11961== at 0x4C2B2CC: free (vg_replace_malloc.c:446)
==11961== by 0x4E92379: g_free (gmem.c:252)
==11961== by 0x4EAAE8E: g_slice_free1 (gslice.c:1111)
==11961== by 0x51BC691: g_type_free_instance (gtype.c:1962)
==11961== by 0x51A5D8C: g_object_unref (gobject.c:3037)
==11961== by 0x540C2A3: gst_object_unref (gstobject.c:275)
==11961== by 0x4D1167: common_release_pad(_GstElement*, _GstPad*)
(gst_utils.cpp:136)
......
==11961==
==11961== Invalid read of size 4
==11961== at 0x5B6B394: pthread_mutex_lock (in /lib64/libpthread-2.15.so)
==11961== by 0x4EDB46C: g_mutex_lock (gthread-posix.c:210)
==11961== by 0x545DA15: gst_pad_push_data (gstpad.c:3995)
==11961== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==11961== by 0x963D037: gst_tee_handle_data (gsttee.c:601)
==11961== by 0x963D4C7: gst_tee_chain (gsttee.c:699)
==11961== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==11961== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==11961== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==11961== by 0x7191003: gst_base_src_loop (gstbasesrc.c:2785)
==11961== by 0x54919BB: gst_task_func (gsttask.c:316)
==11961== by 0x5492AB6: default_func (gsttaskpool.c:70)
==11961== by 0x4EB79BD: g_thread_pool_thread_proxy (gthreadpool.c:309)
==11961== by 0x4EB73D2: g_thread_proxy (gthread.c:798)
==11961== by 0x5B68DA5: start_thread (in /lib64/libpthread-2.15.so)
==11961== by 0x6A86ABC: clone (in /lib64/libc-2.15.so)
==11961== Address 0x3333333333333343 is not stack'd, malloc'd or
(recently) free'd
==13499== Thread 7:
==13499== Invalid read of size 8
==13499== at 0x4EDB3C6: g_mutex_get_impl (gthread-posix.c:121)
==13499== by 0x4EDB464: g_mutex_lock (gthread-posix.c:210)
==13499== by 0x545AA44: probe_hook_marshal (gstpad.c:3104)
==13499== by 0x4E78F52: g_hook_list_marshal (ghook.c:676)
==13499== by 0x545ADD7: do_probe_callbacks (gstpad.c:3196)
==13499== by 0x545D8F5: gst_pad_push_data (gstpad.c:3974)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x963D037: gst_tee_handle_data (gsttee.c:601)
==13499== by 0x963D4C7: gst_tee_chain (gsttee.c:699)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x7199EDF: gst_base_transform_chain (gstbasetransform.c:2237)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0xB25906C: mpegtsmux_push_packets (mpegtsmux.c:1373)
==13499== by 0xB2583F7: mpegtsmux_collected_buffer (mpegtsmux.c:1209)
==13499== by 0x71A5E12: gst_collect_pads_default_collected
(gstcollectpads.c:1539)
==13499== by 0x71A55F4: gst_collect_pads_check_collected
(gstcollectpads.c:1337)
==13499== by 0x71A76CD: gst_collect_pads_chain (gstcollectpads.c:2177)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x962AF33: gst_queue_push_one (gstqueue.c:1118)
==13499== by 0x962BCB2: gst_queue_loop (gstqueue.c:1247)
==13499== by 0x54919BB: gst_task_func (gsttask.c:316)
==13499== by 0x5492AB6: default_func (gsttaskpool.c:70)
==13499== by 0x4EB79BD: g_thread_pool_thread_proxy (gthreadpool.c:309)
==13499== by 0x4EB73D2: g_thread_proxy (gthread.c:798)
==13499== by 0x5B68DA5: start_thread (in /lib64/libpthread-2.15.so)
==13499== by 0x6A86ABC: clone (in /lib64/libc-2.15.so)
==13499== Address 0x8b51678 is 24 bytes inside a block of size 576 free'd
==13499== at 0x4C2B2CC: free (vg_replace_malloc.c:446)
==13499== by 0x4E92379: g_free (gmem.c:252)
==13499== by 0x4EAAE8E: g_slice_free1 (gslice.c:1111)
==13499== by 0x51BC691: g_type_free_instance (gtype.c:1962)
==13499== by 0x51A5D8C: g_object_unref (gobject.c:3037)
==13499== by 0x540C2A3: gst_object_unref (gstobject.c:275)
==13499== by 0x963C881: gst_tee_release_pad (gsttee.c:424)
==13499== by 0x5436961: gst_element_release_request_pad (gstelement.c:335)
==13499== by 0x4D0F62: pad_block_cb(_GstPad*, _GstPadProbeInfo*,
void*) (gst_utils.cpp:103)
==13499== by 0x545AA31: probe_hook_marshal (gstpad.c:3102)
==13499== by 0x4E78F52: g_hook_list_marshal (ghook.c:676)
==13499== by 0x545ADD7: do_probe_callbacks (gstpad.c:3196)
==13499== by 0x545D8F5: gst_pad_push_data (gstpad.c:3974)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x963D037: gst_tee_handle_data (gsttee.c:601)
==13499== by 0x963D4C7: gst_tee_chain (gsttee.c:699)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x7199EDF: gst_base_transform_chain (gstbasetransform.c:2237)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0xB25906C: mpegtsmux_push_packets (mpegtsmux.c:1373)
==13499== by 0xB2583F7: mpegtsmux_collected_buffer (mpegtsmux.c:1209)
==13499== by 0x71A5E12: gst_collect_pads_default_collected
(gstcollectpads.c:1539)
==13499== by 0x71A55F4: gst_collect_pads_check_collected
(gstcollectpads.c:1337)
==13499== by 0x71A76CD: gst_collect_pads_chain (gstcollectpads.c:2177)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x962AF33: gst_queue_push_one (gstqueue.c:1118)
==13499== by 0x962BCB2: gst_queue_loop (gstqueue.c:1247)
==13499== by 0x54919BB: gst_task_func (gsttask.c:316)
==13499== by 0x5492AB6: default_func (gsttaskpool.c:70)
==13499== by 0x4EB79BD: g_thread_pool_thread_proxy (gthreadpool.c:309)
==13499== by 0x4EB73D2: g_thread_proxy (gthread.c:798)
==13499== by 0x5B68DA5: start_thread (in /lib64/libpthread-2.15.so)
==13499== by 0x6A86ABC: clone (in /lib64/libc-2.15.so)
==13499==
==13499== Invalid read of size 4
==13499== at 0x5B6B394: pthread_mutex_lock (in /lib64/libpthread-2.15.so)
==13499== by 0x4EDB46C: g_mutex_lock (gthread-posix.c:210)
==13499== by 0x545AA44: probe_hook_marshal (gstpad.c:3104)
==13499== by 0x4E78F52: g_hook_list_marshal (ghook.c:676)
==13499== by 0x545ADD7: do_probe_callbacks (gstpad.c:3196)
==13499== by 0x545D8F5: gst_pad_push_data (gstpad.c:3974)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x963D037: gst_tee_handle_data (gsttee.c:601)
==13499== by 0x963D4C7: gst_tee_chain (gsttee.c:699)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x7199EDF: gst_base_transform_chain (gstbasetransform.c:2237)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0xB25906C: mpegtsmux_push_packets (mpegtsmux.c:1373)
==13499== by 0xB2583F7: mpegtsmux_collected_buffer (mpegtsmux.c:1209)
==13499== by 0x71A5E12: gst_collect_pads_default_collected
(gstcollectpads.c:1539)
==13499== by 0x71A55F4: gst_collect_pads_check_collected
(gstcollectpads.c:1337)
==13499== by 0x71A76CD: gst_collect_pads_chain (gstcollectpads.c:2177)
==13499== by 0x545CD63: gst_pad_chain_data_unchecked (gstpad.c:3758)
==13499== by 0x545D9F6: gst_pad_push_data (gstpad.c:3991)
==13499== by 0x545DF47: gst_pad_push (gstpad.c:4094)
==13499== by 0x962AF33: gst_queue_push_one (gstqueue.c:1118)
==13499== by 0x962BCB2: gst_queue_loop (gstqueue.c:1247)
==13499== by 0x54919BB: gst_task_func (gsttask.c:316)
==13499== by 0x5492AB6: default_func (gsttaskpool.c:70)
==13499== by 0x4EB79BD: g_thread_pool_thread_proxy (gthreadpool.c:309)
==13499== by 0x4EB73D2: g_thread_proxy (gthread.c:798)
==13499== by 0x5B68DA5: start_thread (in /lib64/libpthread-2.15.so)
==13499== by 0x6A86ABC: clone (in /lib64/libc-2.15.so)
==13499== Address 0x3333333333333343 is not stack'd, malloc'd or
(recently) free'd
--
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