[Bug 668254] New: [pad] possible race between FLUSH_STOP and pad deactivation

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Jan 19 02:10:51 PST 2012


https://bugzilla.gnome.org/show_bug.cgi?id=668254
  GStreamer | gstreamer (core) | git

           Summary: [pad] possible race between FLUSH_STOP and pad
                    deactivation
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: mnauw at users.sourceforge.net
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=205612)
 View: https://bugzilla.gnome.org/attachment.cgi?id=205612
 Review: https://bugzilla.gnome.org/review?bug=668254&attachment=205612

pad: also flush FLUSH_STOP if pad not active

Consider a FLUSH_STOP moving through the pipeline in one thread, while other
thread (mainloop) is performing PAUSED_TO_READY.  While such behaviour is
typically rare (FLUSH_STOP usually occurs with seeking and done by mainloop),
it is (AFAIK) not "illegal" and can in fact occur in e.g. GNonLin context.

The following race can occur:
* mainloop performs pre_activate for src pad
* mainloop performs queue src pad (de)activation 
(setting src result, unblocking loop etc)
* core processes FLUSH_STOP for sink pad; it notices that pad has been
deactivated so will not clear flush flag, but afaics it will still invoke the
pad's event function

* processing an event while flushing is Not Good.  For queue-like elements,
this could also mean loop task being started again and so even worse.
Particularly so when mainloop then performs src pad post_activate, which tries
to get STREAM_LOCK (and will not get since a task is running).

Looks like this has been fixed in 0.11 (slightly differently); would seem to be
proper in 0.10 as well unless there is some behaviour to maintain there.

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