[gstreamer-bugs] [Bug 340174] New: locking problem in gstbasesink
GStreamer (bugzilla.gnome.org)
bugzilla-daemon at bugzilla.gnome.org
Sun Apr 30 03:23:21 PDT 2006
Do not reply to this via email (we are currently unable to handle email
responses and they get discarded). You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=340174
GStreamer | gstreamer (core) | Ver: 0.10.x
Summary: locking problem in gstbasesink
Product: GStreamer
Version: 0.10.x
Platform: Other
OS/Version: Linux
Status: UNCONFIRMED
Severity: major
Priority: Normal
Component: gstreamer (core)
AssignedTo: gstreamer-bugs at lists.sourceforge.net
ReportedBy: philippero at libertysurf.fr
QAContact: gstreamer-bugs at lists.sourceforge.net
GNOME version: Unspecified
GNOME milestone: Unspecified
I hope this won't be a bold comment again ;).
When changing state from PLAYING to PAUSED basesink tries to lock the
PREROLL_LOCK (line 2476). It does the same thing before calling the ::render
method of the object in gst_base_sink_queue_object (line 1664). So far so good.
But, if the sink is in ::render, blocking to wait for a condition that would
allow it to write (like fdsink blocking on select(), waiting for the file
descriptor to be ready for a write) it might block since
gst_base_sink_change_state calls the ::unlock method of the object AFTER trying
to take the PREROLL_LOCK
One obvious solution (and working though not necessarily the best) would be to
call the ::unlock method before trying to take the preroll_lock in
gst_base_sink_change_state.
Sorry if I'm not clear enough.
NOTE: I noticed that the same problem can happen in gst_base_sink_set_flushing
()
--
Configure bugmail: http://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