[Xcb] Assertion `c->out.request == c->out.request_written' failed

Jamey Sharp jamey at minilop.net
Thu Dec 1 08:25:43 PST 2011


...oh. Thanks!

Reviewed-by: Jamey Sharp <jamey at minilop.net>

We really need a libxcb release in the near future, if we've addressed
the regressions we introduced after the last release. (Which I'm not
sure we fully have?)

Jamey

On 12/1/11, Keith Packard <keithp at keithp.com> wrote:
>
> This was pretty easy to fix -- xcb_take_socket just needs to loop until
> the requests queue is actually flushed as _xcb_out_flush may drop the
> iolock and let some other thread come back in and queue a request.
>
> From 0297a46f008186a56826f5a2c7621dd7b4b69718 Mon Sep 17 00:00:00 2001
> From: Keith Packard <keithp at keithp.com>
> Date: Thu, 1 Dec 2011 10:28:51 +0000
> Subject: [PATCH] Make xcb_take_socket keep flushing until idle
>
> _xcb_out_flush_to will drop the iolock in pthread_cond_wait allowing
> other threads to queue new requests. When this happened,
> there would be requests queued for the socket after _xcb_out_flush_to
> returned, and xcb_take_socket would throw an assert.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29875
> Signed-off-by: Keith Packard <keithp at keithp.com>
> ---
>  src/xcb_out.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/src/xcb_out.c b/src/xcb_out.c
> index 5eb1e42..d6082fc 100644
> --- a/src/xcb_out.c
> +++ b/src/xcb_out.c
> @@ -263,7 +263,13 @@ int xcb_take_socket(xcb_connection_t *c, void
> (*return_socket)(void *closure), v
>          return 0;
>      pthread_mutex_lock(&c->iolock);
>      get_socket_back(c);
> -    ret = _xcb_out_flush_to(c, c->out.request);
> +
> +    /* _xcb_out_flush may drop the iolock allowing other threads to
> +     * write requests, so keep flushing until we're done
> +     */
> +    do
> +	    ret = _xcb_out_flush_to(c, c->out.request);
> +    while (ret && c->out.request != c->out.request_written);
>      if(ret)
>      {
>          c->out.return_socket = return_socket;
> --
> 1.7.7.3
>
> --
> keith.packard at intel.com
>


More information about the Xcb mailing list