[Xcb] mesa +xcb = assertion death

Jeremy Kolb jkolb at brandeis.edu
Fri Apr 29 01:44:13 PDT 2005


Okay.

In line 250 of xcb_in_read_packet we have:

c->in.request_read = (lastread & 0xffff0000) | genrep.sequence;

For some reason when it fails genrep has a response_type of 5, a 
sequence of 0 and a length of 1.  This is when it should be pixing up 
sequence 12 I believe.  Up until this point I get perfectly sane values 
for this.

I don't know why it's getting this value for genrep.  But it causes the 
next read to be 65536 since 0 & 0xffff = 65536.  And that's why the 
assertion fires.

However I have no idea why the generic reply is returning 0 as a 
sequence number, nor do I know what response_type 5 is.

Maybe Jamey has an answer?

Jeremy


Jamey Sharp wrote:
> On Thu, 2005-04-28 at 17:27 -0400, Jeremy Kolb wrote:
> 
>>Okay, the error is in getting the reply for GLXGetFBConfigs (and 
>>GLXGetFBConfigsSGI which is just an alias for the former) in 
>>AllocAndFetchScreenConfigs.  From there it goes:
>>_XReply -> XCBWaitForReply -> _xcb_conn_wait
>>
>>The problem occurs in _xcb_conn_wait at:
>>
>>if ((ret = _xcb_read_int(c) >= 0)
>>
>>then in xcb_in_read_packet in _xcb_read_int().  This is were it gets 
>>confusing.  When xcb_in_read_packet returns the value of 
>>c->in.request_read suddenly becomes 65536 on my computer but I couldn't 
>>find where it was set to that... it simply became that when the function 
>>returned (using ddd with gdb as the debugger).


More information about the xcb mailing list