[Bug 736740] glimagesink: racy redraw with raw data upload accesses deleted texture

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sun Sep 21 04:45:36 PDT 2014


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

Matthew Waters <ystreet00> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|HEAD                        |1.5.1

--- Comment #1 from Matthew Waters <ystreet00 at gmail.com> 2014-09-21 11:45:29 UTC ---
commit 5b8d7a443ead269d034401a6788f2d47f8fa4bc5
Author: Matthew Waters <ystreet00 at gmail.com>
Date:   Sun Sep 21 21:36:49 2014 +1000

    glupload: provide the output buffer that is rendered into

    Allows callers to properly reference count the buffers used for
    rendering.

    Fixes a redraw race in glimagesink where the previous buffer
    (the one used for redraw operations) is freed as soon as the next
    buffer is uploaded.

    1. glimagesink uploads in _prepare() to texture n
    1.1 glupload holds buffer n
    2. glimagesink _render()s texture n
    3. glimagesink uploads texture n+1
    3.1 glupload free previous buffer which deletes texture n
    3.2 glupload holds buffer n+1
    4. glwindow resize/expose
    5. glimagesink redraws with texture n

    The race is that the buffer n (the one used for redrawing) is freed as soon
as
    the buffer n+1 arrives.  There could be any amount of time and number of
    redraws between this event and when buffer n+1 is actually rendered and
thus
    replaces buffer n as the redraw source.

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

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