On 02/22/2011 11:14 AM, Julien Cristau wrote:
On Sat, Jan 29, 2011 at 09:54:37 -0800, Jeremy Huddleston wrote:

2) emacs' error handler seems bugged.  Is it legal to call XSync() within the 
error handler?  It certainly seems like it shouldn't.  Did we used to actually 
support this with the xtrans version of libX11?

Not as far as I can tell.  From XSetErrorHandler(3):

        Because this condition is not assumed to be fatal, it is acceptable for
        your error handler to return; the returned value is ignored.  However,
        the error handler should not call any functions (directly or indi‐
        rectly) on the display that will generate protocol requests or that
        will look for input events.

That's not a new requirement.

I've been running Xlib with thread-safety checks (http://lists.x.org/archives/xorg-devel/2011-February/018979.html) and have found some problems even in single threaded clients. For example, one client was doing X requests from a signal handler, which is not allowed. Today I found out that even Mozilla code is suffering from this problem (http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/nsX11ErrorHandler.cpp).

Adding Karl into CC. It looks like nsX11ErrorHandler.cpp is also calling Xlib functions resulting in protocol requests, which is not allowed.

-- Rami

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to