[Xcb] [Bug 29599] hang in xcb_request_check() due to expecting a reply on void request

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Aug 17 13:36:44 PDT 2010


Jamey Sharp <jamey at minilop.net> changed:

           What    |Removed                     |Added
             Status|NEW                         |ASSIGNED

--- Comment #3 from Jamey Sharp <jamey at minilop.net> 2010-08-17 13:36:44 PDT ---
Huh, yeah, that isn't quite right, is it?

(In reply to comment #0)
>  if(XCB_SEQUENCE_COMPARE_32(cookie.sequence,>,c->in.request_expected)
>        && XCB_SEQUENCE_COMPARE_32(cookie.sequence,>,c->in.request_completed))

I think it should be correct and sufficient to change this check to be if the
cookie is greater than *or equal to* request_expected.

Since we have a void cookie, request_expected can't have been set equal to this
sequence number when the request was sent; it can only have become equal due to
the arrival of an event or error. If it became equal due to an event then we
still need to sync. If it became equal due to an error, then request_completed
will have been updated, which means we correctly won't sync.

I don't want to change read_packet's handling of request_expected, because
that's for deferring automatic syncs for 16-bit sequence number wrap as long as
possible, so we'd wind up sending more syncs if we ignored events.

Could you test that changing the first > to >= in xcb_request_check fixes the
bug for you?

Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the Xcb mailing list