[Mesa-dev] glxinfo proposed change

Jorge Ramirez Ortiz, HCL Europe Jorge.Ramirez-Ortiz at hcl.com
Mon Jan 7 13:11:31 PST 2013

>-----Original Message-----
>From: Brian Paul [mailto:brianp at vmware.com]
>Sent: Monday, January 07, 2013 8:07 PM
>To: Jorge Ramirez Ortiz, HCL Europe
>Cc: Ian Romanick; mesa-dev at lists.freedesktop.org
>Subject: Re: [Mesa-dev] glxinfo proposed change
>On 01/07/2013 11:48 AM, Ian Romanick wrote:
>> On 01/07/2013 06:35 AM, Jorge Ramirez Ortiz, HCL Europe wrote:
>>>> -----Original Message-----
>>>> From: Dan Nicholson [mailto:dbn.lists at gmail.com]
>>>> Sent: Monday, January 07, 2013 2:31 PM
>>>> To: Jorge Ramirez Ortiz, HCL Europe
>>>> Cc: mesa-dev at lists.freedesktop.org
>>>> Subject: Re: [Mesa-dev] glxinfo proposed change
>>>> On Mon, Jan 7, 2013 at 5:06 AM, Jorge Ramirez Ortiz, HCL Europe
>>>> <Jorge.Ramirez-Ortiz at hcl.com> wrote:
>>>>> Hi all,
>>>>> Does this patch make sense? glVersion can be NULL and not having the
>>>> changes below could cause a SIGSEGV
>>>>> [jramirez at calypso-2 mesa-demos.git (tmp *)]$ git diff
>>>>> src/xdemos/glxinfo.c
>>>>> diff --git a/src/xdemos/glxinfo.c b/src/xdemos/glxinfo.c
>>>>> index aa6430d..97b6539 100644
>>>>> --- a/src/xdemos/glxinfo.c
>>>>> +++ b/src/xdemos/glxinfo.c
>>>>> @@ -639,7 +639,7 @@ print_screen_info(Display *dpy, int scrnum, Bool
>>>> allowDirect, Bool limits, Bool
>>>>> printf("OpenGL renderer string: %s\n", glRenderer);
>>>>> printf("OpenGL version string: %s\n", glVersion);
>>>>> #ifdef GL_VERSION_2_0
>>>>> - if (glVersion[0] >= '2' && glVersion[1] == '.') {
>>>>> + if (glVersion && glVersion[0] >= '2' && glVersion[1] == '.') {
>>>>> char *v = (char *) glGetString(GL_SHADING_LANGUAGE_VERSION);
>>>>> printf("OpenGL shading language version string: %s\n", v);
>>>>> }
>>>> Normally, this is a good idea. However, glVersion is already
>>>> dereferenced in the printf on the previous line. So, any actual
>>>> checking for NULL glVersion should at least come earlier in the
>>>> function. On the other hand, returning NULL from
>>>> glGetString(GL_VERSION) might be so rare that bothering to guard for
>>>> it would be more effort than it's worth.
>>> Bear in mind that printf of a null string wont SIGSEGV.
>>> Only trying to access glVersion[] elements presents -and indeed is -
>>> a risk and therefore a critical bug (for my usual standards that is).
>> The critical bug is that glGetString is not allowed to return NULL.
>> Your GL is horrifically broken in that case, and no application will
>> work either.
>glGetString() will return NULL if there's no bound context.  But if
>glXMakeCurrent() fails, glxinfo won't be calling glGetString().
>Jorge, have you actually seen glxinfo fail with glVersion==NULL or is
>this just something you spotted in the code?

I am in wrapping of a 64 bit port of a well known 3D graphics chipset - there are zillions of these devices in the market- and just closing on some final bugs. 
While I realize that glGetString returning  NULL represents a major system problem, the fact that glxinfo SIGSEGVs when glGetString returns NULL means that glxinfo is not properly handling the fault, that is all.


The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only.
E-mail transmission is not guaranteed to be secure or error-free as information could be intercepted, corrupted,
lost, destroyed, arrive late or incomplete, or may contain viruses in transmission. The e mail and its contents
(with or without referred errors) shall therefore not attach any liability on the originator or HCL or its affiliates.
Views or opinions, if any, presented in this email are solely those of the author and may not necessarily reflect the
views or opinions of HCL or its affiliates. Any form of reproduction, dissemination, copying, disclosure, modification,
distribution and / or publication of this message without the prior written consent of authorized representative of
HCL is strictly prohibited. If you have received this email in error please delete it and notify the sender immediately.
Before opening any email and/or attachments, please check them for viruses and other defects.


More information about the mesa-dev mailing list