Xlib error handler causes xcb double lock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

I'm using mwm, and it keeps crashing on me with a failed locking
assertion ("!c->xlib.lock") from libxcb (unless I allow sloppy locking).
After investigating the issue, I came to the conclusion that it's an
Xlib issue:

- mwm uses its own error handler (set with XSetErrorHandler) in order to
catch BadWindow errors, e.g. from XGetWindowAttributes.

- the error handler calls XFindContext which in turn calls LockDisplay
(and _XCBLockDisplay, and xcb_xlib_lock) on the already locked display.

- similarly, when the error handler returns, xcb_xlib_unlock is called a
second time.

Note that calling XFindContext (or any other function belonging to the
context manager) from an error handler was always assumed to be legal
because the functions don't issue any protocol requests. And although
they may have to lock the Display structure (or, at least, the context
store itself) to avoid database corruption, it's wrong for them to call
xcb_xlib_{lock,unlock}, in my opinion.

My setup (just for the record - I doubt it matters):
Linux (2.6.x kernel), Xorg 7.3 (libX11 1.1.3), libxcb 1.1.

-- 
Michael "Tired" Riepe <michael.riepe@xxxxxxxxxxxxxx>
X-Tired: Each morning I get up I die a little

_______________________________________________
xorg mailing list
xorg@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/xorg

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [X Forum]     [Intel Graphics]     [AMD Graphics]     [Nouveau Driver]     [XFree86]     [XFree86 Newbie]     [IETF Annouce]     [Security]     [Fontconfig]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Video for Linux]     [Linux RAID]

  Powered by Linux