[Bug 764939] basesink: deadlock caused by klass->wait_event() which leaves preroll mutex locked

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Apr 12 12:42:16 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=764939

mariuszb <mariusz.buras at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|NOTABUG                     |FIXED

--- Comment #8 from mariuszb <mariusz.buras at gmail.com> ---
I'm getting fifo empty callback from the video decoder and want to send EOS
upstream. So in reality, my case is more complex then I've described. Here's
the callstack:

#0  0x3f488674 in gst_base_sink_wait_preroll (sink=0x614bf0) at
gstbasesink.c:2209
#1  0x3f488ab8 in gst_base_sink_do_preroll (sink=0x614bf0, obj=0x613c38) at
gstbasesink.c:2303
#2  0x3f48fa68 in gst_base_sink_do_sync (basesink=0x614bf0, obj=0x613c38,
late=0x42940e10, step_end=0x42940e14) at gstbasesink.c:2505
#3  0x3f490a9c in gst_base_sink_default_wait_event (basesink=0x614fc0,
event=0x614cc0) at gstbasesink.c:3025
#4  0x4178be08 in gst_fun_sink_wait_event_locked (basesink=<value optimized
out>, event=0x613c38) at /data/builds/...
#5  gst_fun_sink_wait_event (basesink=<value optimized out>, event=0x613c38) at
/data/builds/...
#6  0x3f4956d8 in gst_base_sink_wait_event (basesink=0x614fc0, event=0x613c38)
at gstbasesink.c:3040
#7  gst_base_sink_default_event (basesink=0x614fc0, event=0x613c38) at
gstbasesink.c:3082
#8  0x41788580 in gst_fun_sink_on_error (context=0x614bf0, reason=fifoEmpty) at
/data/builds/...

So its my funsink calling 

GST_BASE_SINK_CLASS( gst_nexus_sink_parent_class )->event( &sink->parent,
gst_event_new_eos() );

from gst_fun_sink_on_error(), this results in gst_base_sink_default_event()
being called, as seen in callstack.

I want to send an EOS upstream, and I have a terrible feeling I'm doing it
wrong :)

-- 
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