[gstreamer-bugs] [Bug 319871] New: drop GIL state lock when doing something that can cause a property notify to be emitted

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Wed Oct 26 09:46:11 PDT 2005


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=319871
 GStreamer | gst-python | Ver: 0.9.x

           Summary: drop GIL state lock when doing something that can cause
                    a property notify to be emitted
           Product: GStreamer
           Version: 0.9.x
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: major
          Priority: Normal
         Component: gst-python
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: wingo at pobox.com
         QAContact: johan at gnome.org
                CC: all-bugs at bugzilla.gnome.org


The class lock that is taken in gstobject::dispatch_properties_changed can cause
deadlocks when doing emissions. Consider an application written in a language
that has to hold a global lock G at all times, and two objects A and B of type T.

Application thread: B.connect(my_func)
  Streaming thread: B.notify('foo')
  Streaming thread: T.lock() (via gstobject::dispatch_properties_change)
  Streaming thread: G.lock() (blocks until application thread drops G)
Application thread: A.set_property('foo')
Application thread: A.notify('foo') (via the gobject notify system)
Application thread: T.lock() (deadlocks)

The class lock is unnecessary for GLib 2.8 and so is not taken. However
something will have to be done for GLib 2.6. Assigning to Mr. Vander Stichele :)

------- You are receiving this mail because: -------
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list