[Xcb] XTS repo - where to?

Jamey Sharp jamey at minilop.net
Fri Jul 2 07:31:28 PDT 2010


On 6/30/10, Peter Hutterer <peter.hutterer at who-t.net> wrote:
> Adding xcb list, I _think_ this is an xcb issue.
>
> Looks like this may be some rather weird behaviour xcb doesn't cater for.
>
> closer() in xts5/Xlib3/XConnectionNumber.c calls close(2) on the display's
> fd. Then it calls XFlush(3).
> http://cgit.freedesktop.org/xorg/test/xts/tree/xts5/Xlib3/XConnectionNumber.m#n128
>
> XFlush(3) eventually calls _xcb_out_send() with has the following loop:
>     while(ret && *count)
>             ret = _xcb_conn_wait(c, &c->out.cond, vector, count);
>
> _xcb_conn_wait(), if built with USE_POLL gets the POLLNVAL error. It only
> checks for POLLIN and POLLOUT though, ignoring the error.
> Return value is 1, count is unmodified, leaving us with an endless loop and
> the hang you noticed.
>
> Now you could argue that closing the file descriptor on xcb is nasty but I
> think xcb should probably cater for this eventuality. Am I reading this
> right?

That sounds completely plausible. I'm not in a position to do anything
about it at the moment though; perhaps you could put together a patch?

I wonder if _xcb_conn_wait should return failure if poll returns an
event we don't understand?

Thanks for the careful diagnosis.

Jamey


More information about the xorg-devel mailing list