[Xcb] xcb_io.c:378: _XAllocID: Assertion `ret != inval_id' failed

fdsteve at ihug.co.nz fdsteve at ihug.co.nz
Wed Oct 7 19:02:16 PDT 2009

First post from an X newbie - so please go easy on me :) 

There's quite
a few recent bug reports around looking similar to this (subject line). 
know because I had this occur in our own multi threaded app and have been
searching for a solution. (No luck.) 

So I figured out that the only way
this assert could occur is if _XAllocID was being called without
LockDisplay() in effect. So I added an assert in XAllocID to try and find
the offending caller: 

 if( dpy->lock & font-family: "Courier New";
mso-no-proof: yes;"> assert( pthread_mutex_lock(dpy->lock->mutex) ==

Then re-ran the app - and hit the assert from
OurFn()-->XShmAttach() -->_XAllocID ()  

libXext::XShmAttach looks like

Status XShmAttach(Display *dpy, XShmSegmentInfo *shminfo) 


 shminfo->shmseg = XAllocID(dpy); 


 ... some
stuff ... 



 return 1; 


this a bug in XShmAttach? Should LockDisplay() be moved before the
XAllocId() line...?
Or is it the XShmAttach caller's responsibility to lock
the display?
I made and tested a patch with LockDisplay moved before
XAllocID and it definitely fixed our problem.   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freedesktop.org/archives/xcb/attachments/20091008/f1b9b65f/attachment.html 

More information about the Xcb mailing list