[Bug 731121] Race condition causes alsasink to use invalid caps when a pipeline fails to start

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Jun 3 07:18:56 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=731121
  GStreamer | gst-plugins-base | git

Vincent Penquerc'h <vincent.penquerch> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |vincent.penquerch at collabora
                   |                            |.co.uk
         Resolution|                            |FIXED
   Target Milestone|HEAD                        |1.3.3

--- Comment #1 from Vincent Penquerc'h <vincent.penquerch at collabora.co.uk> 2014-06-03 14:18:51 UTC ---
commit 3b2d5833732a29672689badf3edf69867679e052
Author: Vincent Penquerc'h <vincent.penquerch at collabora.co.uk>
Date:   Tue Jun 3 15:10:33 2014 +0100

    alsasink: fix occasional crash intersecting invalid values

    When a pipeline using alsasink and push mode upstream fails
    to preroll, the following state will be the case:
    - A loop upstream will be PAUSED, pushing a first buffer
    - alsasink will be READY, pending PAUSED, because async

    On error, the pipeline will switch to NULL. alsasink is in
    READY, so goes to NULL immediately. It zeroes its cached
    caps. Meanwhile, the upstream loop can cause a caps query,
    conccurent with the state change. This will use those cached
    caps. If the zeroing happens between the NULL test and the
    dereferencing, GStreamer will critical down in the GstValue
    code.

    Since it appears that such a gap between states (PAUSED
    and pushing upstream, and NULL downstream) is expected, we
    need to protect the read/write access to the cached caps.

    This fixes the critical.

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

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