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

Jamey Sharp jamey at minilop.net
Wed Oct 7 19:39:35 PDT 2009

On Wed, Oct 7, 2009 at 7:02 PM,  <fdsteve at ihug.co.nz> wrote:
> First post from an X newbie - so please go easy on me :)

You're off to a great start then. :-)

>     shminfo->shmseg = XAllocID(dpy);
>     LockDisplay(dpy);
> Is this a bug in XShmAttach? Should LockDisplay() be moved before the
> XAllocId() line...?
> I made and tested a patch with LockDisplay moved before XAllocID and it
> definitely fixed our problem.

Good work! I agree, XShmAttach is busted here.

I've pushed a fix to libXext git. Thanks for the report!

>  I added an assert in XAllocID to try and find the offending caller:
>     if( dpy->lock && dpy->lock->mutex )
>         assert( pthread_mutex_lock(dpy->lock->mutex) == EDEADLK );

I wish we could print a warning when this condition fails, but I don't
think it'll work portably. I'd be tempted to make it an assert, even,
except I learned my lesson from the last time we shipped an assertion in
libX11 to catch buggy callers. :-/


More information about the Xcb mailing list