[Xcb] libxcb/libX11 deadlocking and asserting in multi-threaded use

Nicholas Allen nick.allen at onlinehome.de
Thu Mar 18 14:38:50 PDT 2010


We have a multi-threaded app that often deadlocks inside libx11 code
(XNextEvent never returns). We've initialized threading support by
calling XInitThreads as the very first thing we do. We have no other
mutexes in use in our code so it seems that the error is within
libX11/xcb itself and not our own code.

When the app doesn't lock (very rarely) then after a short time we get
this assertion:

../../src/xcb_io.c:242: process_responses: Assertion `(((long)
(dpy->last_request_read) - (long) (dpy->request)) <= 0)' failed.

and the application aborts. We are using Ubuntu Karmic on 64-bit
machine. In Jaunty we never experienced any problems but since the
upgrade the problems are very apparent. This further convinces me that
the problem is more likely in libX11/XCB than our own code. Has anyone
else noticed these deadlock issues? Are there any workarounds? Were
there any bug fixes that could have addressed issues like this?

I will be happy to provide more information if needed and to help with
debugging and fixing xlib if needed.

Many thanks in advance,

Nicholas Allen

More information about the Xcb mailing list