[Xcb] Xlib/XCB in multi-threaded situation results in deadlock
joris.dobbelsteen at sioux.eu
Tue Dec 7 06:00:02 PST 2010
You have any hints on this issue?
I can't oversee the design and architecture of the library, so I can't
judge what effects causes the issue. The only visible thing is that
communication doesn't get communicated to the right thread at the time
Can you tell me any more about this?
- Joris Dobbelsteen
On Thu, 2010-12-02 at 11:05 +0100, Joris Dobbelsteen wrote:
> On Wed, 2010-12-01 at 09:17 -0800, Josh Triplett wrote:
> > On Wed, Dec 01, 2010 at 04:29:38PM +0100, Joris Dobbelsteen wrote:
> > > We have been using DirectFB 1.4.7 with it's X11 backend, which uses
> > > Xlib/XCB. The DirectFB library performs receiving the input
> > > (keyboard/mouse) events on a separate thread from the drawing.
> > > This has resulted in a call to DRI2GetBuffersWithFormat getting stuck,
> > > while the other thread is trying to receive a mouse event. Once the
> > > mouse moves the program moves forward for a short while.
> > >
> > > It seems that the drawing thread is suck on the poll and waiting for a
> > > reply, while the input thread is actually reading data from the socket.
> > > This causes the above deadlock.
> > Strange. Obviously this *shouldn't* happen. :)
> > > The below patch quickly fabricated here makes the window of opportunity
> > > for the situation to arise sufficiently small (its not a proper fix!).
> > Interesting; while not a proper fix, as you said, your patch does help
> > point at potential culprits. Thanks!
> > > Does anyone have a good idea of the causes of this problem and the
> > > effects it has? I think some in-depth analysis would be in order to
> > > solve the problem.
> > Just to confirm, can you provide the exact versions of XCB and of
> > Xlib that you have? Xlib 1.4 had some potentially relevant fixes.
> libxcb 1.7
> libX11 1.4
> xcb-proto 1.6
> xcb-util 0.3.6
> xorg-server 1.9.2
> and loads more X libraries. I'll provide them on popular request.
> > - Josh Triplett
> Xcb mailing list
> Xcb at lists.freedesktop.org
More information about the Xcb