<div dir="auto">Please note that flush stop is passed with False so that the clock timing is not reset purposely as thereafter buffer with valid timestamp of different language is pushed. What could trigger queue thread to block / wait inside video renderer basesink from audio sink pulse audio. The test is running on x86 with gstreamer 1.4.5. Suggestion/pointer will be very helpful as there is not much clue from traces to establish design relationship between audio and video sinks and blocking wait.<div dir="auto">Thanks for ur help</div><div dir="auto">Best Regards</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Jun 1, 2017 10:14 AM, "Nitin Mahajan" <<a href="mailto:rise.era@gmail.com">rise.era@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">some updates,<div>the hang is blocking wait inside gst_system_clock_id_wait_<wbr>jitter_unlocked(). </div><div>the blocking calls is on gst_poll_wait ().</div><div>it seems that the audio sink thread (pulse audio) is related to this wait.<br></div><div>the gstreamer pipeline is full of buffers. Video rendering is in blocking wait.</div><div>The buffer carries a valid PTS value. </div><div>what could have gone wrong by flushing the audio chain which causes video chain to block on waiting ?</div><div>thanks to share your opinion and ideas to help further debugging.</div><div>BR</div><div>Nitin</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 31, 2017 at 5:28 PM, Nitin Mahajan <span dir="ltr"><<a href="mailto:nitin.mahajan78@gmail.com" target="_blank">nitin.mahajan78@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello folks,<br><br>I'm observing a/v freeze (gstreamer 1.4.5).<br>sequence of operations:<br>- a/v playback ongoing (pipeline state is in PLAYING)<br><br>On audio src pad of demux:<br>- push gst_event_new_flush_start()<br>- push gst_event_new_flush_stop(FALSE<wbr>)<br>- push new segment event <br>- push buffers<br><br>A/V freeze (random)<br>the idea is to flush gstreamer pipeline for the audio chain before pushing buffers of different language of same codec.<br><br>It seems that the pipeline is blocked on basesink for video chain.<br>The clock ID object for video renderer suggests, gst_system_clock_id_wait_jitte<wbr>r_unlocked() named GstPulseSinkClock<br>(gdb) p *clock<br>$72 = <br><br>{<br> object = <br> {<br>     object = {g_type_instance = {g_class = 0xac707c58}, ref_count = 46, qdata = 0x0}, lock = {p = 0xac709f70, i = {2893062000, 0}}, <br>     name = 0xac705520 "GstPulseSinkClock", <br>     parent = 0x0, <br>     flags = 752, <br>     control_bindings = 0x0, <br>     control_rate = 100000000, <br>     last_sync = 18446744073709551615, <br>     _gst_reserved = 0x0<br> }, <br> priv = 0xad167828, <br> _gst_reserved = {0x0, 0x0, 0x0, 0x0}<br> }<br> <br>So far not able to make out how clock management and sync with renderer is taking place.<br>But below two threads seem related as it semms that video renderer is polling for some event from audio renderer ?<br>ANy suggestion will be more that helpful<br><br>Thread<br>#0  0xb7fdd428 in __kernel_vsyscall ()<br>#1  0xb7ab5108 in __GI_ppoll (fds=0x9fe12c48, nfds=1, timeout=0xa07fe1d8, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppo<wbr>ll.c:56<br>#2  0xb7d76f29 in ppoll (__ss=0x0, __timeout=<optimized out>, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/i386-linux-gnu/bi<wbr>ts/poll2.h:77<br>#3  gst_poll_wait (set=0xac703c58, timeout=23516000) at gstpoll.c:1248<br>#4  0xb7d8d76d in gst_system_clock_id_wait_jitte<wbr>r_unlocked (clock=0xad167890, entry=0xac731948, jitter=0xa07fe650, restart=1) at gstsystemclock.c:684<br>#5  0xb7d3c1aa in gst_clock_id_wait (id=0xac731948, jitter=jitter@entry=0xa07fe650<wbr>) at gstclock.c:539<br>#6  0xb77f1930 in gst_base_sink_wait_clock (sink=sink@entry=0xadc0cfd8, time=<optimized out>, jitter=jitter@entry=0xa07fe650<wbr>) at gstbasesink.c:2104<br>#7  0xb77f3317 in gst_base_sink_do_sync (basesink=basesink@entry=0xadc<wbr>0cfd8, obj=obj@entry=0x9fe18360, late=late@entry=0xa07fe7d8, step_end=step_end@entry=0xa07f<wbr>e7dc) at gstbasesink.c:2491<br>#8  0xb77f484e in gst_base_sink_chain_unlocked (basesink=basesink@entry=0xadc<wbr>0cfd8, obj=obj@entry=0x9fe18360, is_list=is_list@entry=0, pad=<optimized out>) at gstbasesink.c:3390<br>#9  0xb77f69a8 in gst_base_sink_chain_main (basesink=0xadc0cfd8, pad=<optimized out>, obj=0x9fe18360, is_list=0) at gstbasesink.c:3538<br>#10 0xb7fb8a05 in gst_validate_pad_monitor_chain<wbr>_func (pad=0xad166500, parent=0xadc0cfd8, buffer=0x9fe18360) at gst-validate-pad-monitor.c:150<wbr>9<br>#11 0xb7d62c3a in gst_pad_chain_data_unchecked (data=0x9fe18360, type=<optimized out>, pad=0xad166500) at gstpad.c:3830<br>#12 gst_pad_push_data (pad=0xac727578, type=type@entry=4112, data=0x9fe18360) at gstpad.c:4063<br>#13 0xb7d6a45e in gst_pad_push (pad=0x9fe18360, pad@entry=0xac727578, buffer=buffer@entry=0x9fe18360<wbr>) at gstpad.c:4174<br>#14 0xb7d520c2 in gst_proxy_pad_chain_default (pad=0xac730090, parent=0xac727578, buffer=0x9fe18360) at gstghostpad.c:126<br>#15 0xb7d62c3a in gst_pad_chain_data_unchecked (data=0x9fe18360, type=<optimized out>, pad=0xac730090) at gstpad.c:3830<br>#16 gst_pad_push_data (pad=0xac70ac50, type=type@entry=4112, data=0x9fe18360) at gstpad.c:4063<br>#17 0xb7d6a45e in gst_pad_push (pad=0x9fe18360, buffer=0x9fe18360) at gstpad.c:4174<br>#18 0xb7807127 in gst_base_transform_chain (pad=0xac70ad88, parent=0xac75c788, buffer=0x9e9a7d48) at gstbasetransform.c:2260<br>#19 0xb7fb8a05 in gst_validate_pad_monitor_chain<wbr>_func (pad=0xac70ad88, parent=0xac75c788, buffer=0x9e9a7d48) at gst-validate-pad-monitor.c:150<wbr>9<br>#20 0xb7d62c3a in gst_pad_chain_data_unchecked (data=0x9e9a7d48, type=<optimized out>, pad=0xac70ad88) at gstpad.c:3830<br>#21 gst_pad_push_data (pad=0xac70a8a8, type=type@entry=4112, data=0x9e9a7d48) at gstpad.c:4063<br>#22 0xb7d6a45e in gst_pad_push (pad=0x9e9a7d48, buffer=0x9e9a7d48) at gstpad.c:4174<br>#23 0xb7807127 in gst_base_transform_chain (pad=0xac70a770, parent=0xac735588, buffer=0x9e9a7d48) at gstbasetransform.c:2260<br>#24 0xb7fb8a05 in gst_validate_pad_monitor_chain<wbr>_func (pad=0xac70a770, parent=0xac735588, buffer=0x9e9a7d48) at gst-validate-pad-monitor.c:150<wbr>9<br>#25 0xb7d62c3a in gst_pad_chain_data_unchecked (data=0x9e9a7d48, type=<optimized out>, pad=0xac70a770) at gstpad.c:3830<br>#26 gst_pad_push_data (pad=0xac75f290, type=type@entry=4112, data=0x9e9a7d48) at gstpad.c:4063<br>#27 0xb7d6a45e in gst_pad_push (pad=0x9e9a7d48, buffer=0x9e9a7d48) at gstpad.c:4174<br>#28 0xb7807127 in gst_base_transform_chain (pad=0xac75f158, parent=0x818d058, buffer=0x9e9a7d48) at gstbasetransform.c:2260<br>#29 0xb7fb8a05 in gst_validate_pad_monitor_chain<wbr>_func (pad=0xac75f158, parent=0x818d058, buffer=0x9e9a7d48) at gst-validate-pad-monitor.c:150<wbr>9<br>#30 0xb7d62c3a in gst_pad_chain_data_unchecked (data=0x9e9a7d48, type=<optimized out>, pad=0xac75f158) at gstpad.c:3830<br>#31 gst_pad_push_data (pad=0xac75f020, type=type@entry=4112, data=0x9e9a7d48) at gstpad.c:4063<br>#32 0xb7d6a45e in gst_pad_push (pad=0x9e9a7d48, buffer=0x9e9a7d48) at gstpad.c:4174<br>#33 0xb7807127 in gst_base_transform_chain (pad=0xac70aec0, parent=0xac75c490, buffer=0x9e9a7d48) at gstbasetransform.c:2260<br>#34 0xb7fb8a05 in gst_validate_pad_monitor_chain<wbr>_func (pad=0xac70aec0, parent=0xac75c490, buffer=0x9e9a7d48) at gst-validate-pad-monitor.c:150<wbr>9<br>#35 0xb7d62c3a in gst_pad_chain_data_unchecked (data=0x9e9a7d48, type=<optimized out>, pad=0xac70aec0) at gstpad.c:3830<br>#36 gst_pad_push_data (pad=0xadc32e78, type=type@entry=4112, data=0x9e9a7d48) at gstpad.c:4063<br>#37 0xb7d6a45e in gst_pad_push (pad=0x9e9a7d48, pad@entry=0xadc32e78, buffer=buffer@entry=0x9e9a7d48<wbr>) at gstpad.c:4174<br>#38 0xb7d520c2 in gst_proxy_pad_chain_default (pad=0xac727428, parent=0x8191d10, buffer=0x9e9a7d48) at gstghostpad.c:126<br>#39 0xb7d62c3a in gst_pad_chain_data_unchecked (data=0x9e9a7d48, type=<optimized out>, pad=0xac727428) at gstpad.c:3830<br>---Type <return> to continue, or q <return> to quit---<br>#40 gst_pad_push_data (pad=0xac70a3c8, type=type@entry=4112, data=0x9e9a7d48) at gstpad.c:4063<br>#41 0xb7d6a45e in gst_pad_push (pad=0x9e9a7d48, buffer=buffer@entry=0x9e9a7d48<wbr>) at gstpad.c:4174<br>#42 0xb60dfb67 in gst_queue_push_one (queue=0xac72c090) at gstqueue.c:1169<br>#43 gst_queue_loop (pad=0xac70a3c8) at gstqueue.c:1298<br>#44 0xb7d947c9 in gst_task_func (task=task@entry=0xad19f588) at gsttask.c:316<br>#45 0xb7d957ef in default_func (tdata=0xac75e980, pool=0x8057470) at gsttaskpool.c:68<br>#46 0xb7c11405 in ?? () from /lib/i386-linux-gnu/libglib-2.<wbr>0.so.0<br>#47 0xb7c109aa in ?? () from /lib/i386-linux-gnu/libglib-2.<wbr>0.so.0<br>#48 0xb7b8df72 in start_thread (arg=0xa07ffb40) at pthread_create.c:312<br>#49 0xb7ac3f8e in clone () at ../sysdeps/unix/sysv/linux/i38<wbr>6/clone.S:129<br><br>Thread <br>#0  0xb7fdd428 in __kernel_vsyscall ()<br>#1  0xb7ab501b in poll () at ../sysdeps/unix/syscall-templa<wbr>te.S:81<br>#2  0xac6e5bbd in poll (__timeout=1500, __nfds=2, __fds=0xa6c02d68) at /usr/include/i386-linux-gnu/bi<wbr>ts/poll2.h:46<br>#3  poll_func (ufds=0xa6c02d68, nfds=2, timeout=1500, userdata=0xac70b508) at pulse/thread-mainloop.c:69<br>#4  0xac6d44ee in pa_mainloop_poll (m=m@entry=0xac70b460) at pulse/mainloop.c:850<br>#5  0xac6d4d1d in pa_mainloop_iterate (m=m@entry=0xac70b460, block=block@entry=1, retval=retval@entry=0x0) at pulse/mainloop.c:932<br>#6  0xac6d4df4 in pa_mainloop_run (m=0xac70b460, retval=retval@entry=0x0) at pulse/mainloop.c:950<br>#7  0xac6e5b5c in thread (userdata=0xac705660) at pulse/thread-mainloop.c:88<br>#8  0xac68e4dd in internal_thread_func (userdata=0xac70b598) at pulsecore/thread-posix.c:83<br>#9  0xb7b8df72 in start_thread (arg=0xa753eb40) at pthread_create.c:312<br>#10 0xb7ac3f8e in clone () at ../sysdeps/unix/sysv/linux/i38<wbr>6/clone.S:129<br></div>
<br>______________________________<wbr>_________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesk<wbr>top.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/gstreamer-dev<wbr>el</a><br>
<br></blockquote></div><br></div>
</blockquote></div></div>