[Bug 757360] New: bin: removing child that failed state change does not restore clean state

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Oct 30 05:52:03 PDT 2015


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

            Bug ID: 757360
           Summary: bin: removing child that failed state change does not
                    restore clean state
    Classification: Platform
           Product: GStreamer
           Version: unspecified
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: awabik at opera.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

If one of the children of the bin fails state change, it is not sufficient to
just remove it in order to restore clean state. From a quick glance at the
gstbin.c, it looks like:

- when element's state change fails, all remaining children do not change
state, so the bin may have some children in a changed state, and others in the
old state,
- removing the child that failed statechange does not cause remaining children
to transite to the previously requested state,
- removing the child that failed statechange does not restore bin's last state
change return to a proper value - it's still an error,
- removing a child that posted async-start, if all other children have already
posted async-done, will not cause the bin to post async-done if last state
change return is error (even if the element that errored was already removed
from the bin).

The simple workaround is to call again gst_element_set_state() on the bin after
I remove the child that failed state change.

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