On 23/11/14 02:45 PM, DRC wrote: > Never mind. I put it in a debugger and figured out exactly what was > happening. XNextEvent() is being called by glib, within the body of > QEventDispatcherGlib::processEvents(). XNextEvent() locks the display, > then calls xcb_wait_for_event(), which was previously querying the atom > on the same display connection and causing the deadlock.
On my system it really is XPending -> xcb_intern_atom that locks[1], which merely gives weight to your notion of "be cautious about xcb". -Nathan [1] #2 0x00007ffff5bd4480 in __GI___pthread_mutex_lock (mutex=0x6b8be0) at ../nptl/pthread_mutex_lock.c:79 #3 0x00007ffff4ad5b7a in _XInternalLockDisplay (dpy=0x6d0a00, wskip=0) at ../../src/locking.c:480 #4 0x00007ffff4ae7018 in return_socket (closure=0x6d0a00) at ../../src/xcb_io.c:52 #5 0x00007ffff02f6ef7 in get_socket_back (c=c@entry=0x6d1c50) at ../../src/xcb_out.c:96 #6 0x00007ffff02f74df in xcb_send_request (c=0x6d1c50, flags=flags@entry=1, vector=vector@entry=0x7fffffffdfb0, req=req@entry=0x7ffff03043a0 <xcb_req>) at ../../src/xcb_out.c:242 #7 0x00007ffff02fbe4c in xcb_intern_atom (c=<optimized out>, only_if_exists=<optimized out>, name_len=<optimized out>, name=<optimized out>) at xproto.c:3338 #8 0x00007ffff78cf386 in _xcb_intern_atom.constprop.54 () from libopentextglfaker.so.1 #9 0x00007ffff78cf469 in handleXCBEvent () from libopentextglfaker.so.1 #10 0x00007ffff78e13a3 in xcb_poll_for_event () from libopentextglfaker.so.1 #11 0x00007ffff4ae6bb8 in poll_for_event (dpy=dpy@entry=0x6d0a00) at ../../src/xcb_io.c:257 #12 0x00007ffff4ae6cfc in poll_for_response (dpy=dpy@entry=0x6d0a00) at ../../src/xcb_io.c:289 #13 0x00007ffff4ae6fcd in _XEventsQueued (dpy=dpy@entry=0x6d0a00, mode=mode@entry=2) at ../../src/xcb_io.c:363 #14 0x00007ffff4ad912d in XPending (dpy=0x6d0a00) at ../../src/Pending.c:55 #15 0x00007fffe86c8626 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #16 0x00007ffff438868d in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #17 0x00007ffff4388f03 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #18 0x00007ffff43890ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #19 0x00007ffff63e898c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #20 0x00007ffff639a96b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #21 0x00007ffff63a10e1 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #22 0x00000000004051a1 in main () ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk _______________________________________________ VirtualGL-Devel mailing list VirtualGL-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtualgl-devel