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

Reply via email to