[Mesa-dev] glxcurrent.c question SEGFAULT question
John Doe
umebugmenot at gmail.com
Wed Mar 9 10:31:14 PST 2011
Thank you for the reply.
I tried the patch and SEGFAULT disappeared.
Thank you again.
UB
On Wed, Mar 9, 2011 at 11:00 AM, Brian Paul <brian.e.paul at gmail.com> wrote:
> On Wed, Mar 9, 2011 at 8:09 AM, John Doe <umebugmenot at gmail.com> wrote:
>> Hi all,
>>
>> I have posted this question on the users list also but figured this
>> should be the right place to ask.
>> Apologies if this cross-posting is considered a bad etiquette. Here it goes:
>>
>> While working with a third party application I received a SEGFAULT.
>> Using backtrace I was able to home in the apparent (might not be the
>> main) source of the SEGFAULT. It is in glxcurrent.c.
>> More specifically, it is generated at line 201:
>>
>> static void
>> __glXGenerateError(Display * dpy, struct glx_context *gc, XID resource,
>> BYTE errorCode, CARD16 minorCode)
>> {
>> xError error;
>>
>> error.errorCode = errorCode;
>> error.resourceID = resource;
>> error.sequenceNumber = dpy->request;
>> error.type = X_Error;
>> error.majorCode = gc->majorOpcode; <---- Line 201
>> error.minorCode = minorCode;
>> _XError(dpy, &error);
>> }
>>
>> The previous stack call is in the same file at line 228:
>>
>> if (gc == NULL && (draw != None || read != None)) {
>> __glXGenerateError(dpy, gc, (draw != None) ? draw : read, <-- Line 228
>> BadMatch, X_GLXMakeContextCurrent);
>> return False;
>> }
>>
>> Examining the trace I was able to see that all the conditions for the
>> if-test were satisfied. Hence the program counter enters the if-block
>> and calls the __glXGenerateError.
>> But, in __glXGenerateError since the gc is NULL the call:
>>
>> error.majorCode = gc->majorOpcode
>>
>> causes SEGFAULT.
>>
>> Is this a bug? Or am I missing something?
>>
>> I am on a 32-bit Ubuntu Maverick box. MESA version is 7.9.2.
>>
>> Thank you,
>
> Can you try the attached patch?
>
> -Brian
>
More information about the mesa-dev
mailing list