/* if Xlib has a partial request pending then XCB doesn't know about
* the current request yet */
if(dpy->xcb->partial_request) {
++xcb_req;
printf ("partial request thing\n");
}
if (XCB_SEQUENCE_COMPARE(xcb_req, <, dpy->request)) {
printf ("xcb_req=%u\n", xcb_req);
printf ("dpy->request=%u\n", dpy->request); print_backtrace(); fflush(stdout);
}
assert(XCB_SEQUENCE_COMPARE(xcb_req, >=, dpy->request));
dpy->request = xcb_req;
And then it prints:
xcb_req=3334
dpy->request=3335
So basically, this means that the code near when the assert is triggered does NOT take the branch into the "++xcb_req" statement. I've no idea if it is supposed to do that or not but that would certainly have prevented the assert from being hit?
I modified the code around the assert to say:
/* if Xlib has a partial request pending then XCB doesn't know about dpy->xcb- >partial_ request) { COMPARE( xcb_req, <, dpy->request)) { request= %u\n", dpy->request);
print_ backtrace( );
fflush( stdout) ; XCB_SEQUENCE_ COMPARE( xcb_req, >=, dpy->request));
* the current request yet */
if(
++xcb_req;
printf ("partial request thing\n");
}
if (XCB_SEQUENCE_
printf ("xcb_req=%u\n", xcb_req);
printf ("dpy->
}
assert(
dpy->request = xcb_req;
And then it prints:
xcb_req=3334
dpy->request=3335
So basically, this means that the code near when the assert is triggered does NOT take the branch into the "++xcb_req" statement. I've no idea if it is supposed to do that or not but that would certainly have prevented the assert from being hit?