[Bug 731525] New: multiple glimagesink elements aborts due to no XInitThreads.

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Jun 11 06:49:34 PDT 2014


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

           Summary: multiple glimagesink elements aborts due to no
                    XInitThreads.
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: All
            Status: NEW
          Severity: blocker
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: ystreet00 at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Pipeline:
videotestsrc ! tee name=t ! queue ! glimagesink t. ! queue ! glimagesink

Output:
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been
called
[xcb] Aborting, sorry about that.
gst-launch-1.0: xcb_io.c:179: dequeue_pending_request: Assertion
`!xcb_xlib_unknown_req_in_deq' failed.

The issue here is that the glx contexts use the display's x11 connection to
create their contexts.  If we separate the display connection per context, then
context sharing breaks on intel drivers.  egl/x11 works fine.

The solution is to, as the error message suggests, call XInitThreads() however
we would need to do that before any other GUI toolkit attempts to access X. 
For Gtk+ that is before gtk_init is called which is typically one of the first
things an app does.  This poses a problem as the libgstgl/libgstopengl is
typically loaded (by GstElementFactory) after gtk_init is called and will cause
segfaults due to the use of XInitThreads() after X11 resources have been
created.

Proposed Solution:
1. Punt responsibility to the application to call XInitThreads before calling
any toolkit functions and
2. add an XInitThreads call to plugin_init in libgstopengl for the gst-launch
case.

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