[Mesa-dev] [Mesa-stable] [PATCH 4/4] glx: fix error code when there is no context bound
Tapani Pälli
tapani.palli at intel.com
Sun May 29 05:36:36 UTC 2016
On 05/27/2016 08:16 PM, Emil Velikov wrote:
> On Friday, 27 May 2016, Tapani Pälli <tapani.palli at intel.com
> <mailto:tapani.palli at intel.com>> wrote:
>
>
>
> On 05/26/2016 05:16 PM, Emil Velikov wrote:
>
> Hi all,
>
> On 29 February 2016 at 07:14, Tapani Pälli
> <tapani.palli at intel.com> wrote:
>
>
> On 02/22/2016 10:16 PM, Ian Romanick wrote:
>
>
> There are 17 total occurrences of
>
> grep -r '[(]!gc[)]' src/glx/
>
> and
>
> grep -r 'gc[[:space:]]*==[[:space:]]*NULL' src/glx/
>
> None of these check for dummyContext. This is all
> very suspicious.
> Looking at the implementation(s) of
> __glXGetCurrentContext, I don't
> think it can ever return NULL. Look in
> src/glx/glxcurrent.c. It's
> possible that __glXGetCurrentContext used to be able
> to return NULL, but
> I find it unlikely.
>
> My guess is that all (or nearly all) of the !gc or gc
> == NULL checks are
> wrong. A bunch of them probably "just work" because
> they end up sending
> protocol requests to the server, and the server sends
> back an error.
>
>
>
> I spent some time with this and it looks like some of
> these are correct as
> create_context (or indirect_create_context) can return
> NULL and also pointer
> given by client may be NULL (and can't be dummyContext).
> The places with
> explicit __glXGetCurrentContext call (9 of these) and a
> NULL check are
> incorrect. I can add these to the patch.
>
> At the very least, I think these gc == NULL checks
> should be replaced by
> asserts. If the unit tests call these functions with
> __glXGetCurrentContext returning NULL, the unit tests
> should be fixed to
> return &dummyContext instead.
>
>
>
> Should it be then 'own dummyContext' implemented by
> fake_glx_screen.cpp
> something along lines in this patch and not trying to link
> with
> glxcurrent.c?
>
> I'd really like to see analysis of the other NULL
> checks and either have
> justifications for no change or have changes. I'd
> also really like to
> see piglit tests that could hit some of these.
>
>
>
> It looks like glx-test is testing return value of
> __glXGetCurrentContext
> currently (which is why it breaks), wouldn't fixing
> glx-test be sufficient?
>
>
> Any news on the status of this patch ? The Suse guys did bring
> some
> fixes recently (check __glXGetCurrentContext() vs dummyContext as
> opposed to NULL), although I think we still want something
> like the
> proposed here. Correct ?
>
>
> No progress, this patch has been living as is in internal project.
> The fix itself is quite simple, all places with
> __glXGetCurrentContext should check against dummyContext.
>
> Indeed. I believe I mentioned /suggested that ;-)
>
> This patch introduced its own 'dummyContext' in the unit test
> since it seemed very challenging to compile the test together with
> files in glx folder (results in linking with a *lot* of stuff). I
> can take a peek again what was the issue it replacing all of the
> checks and reply back to this.
>
> I think there were some concerns
> - not everything going is updated (Ian), looks fine now but will need
> to double check
This patch should cover all instances where __glXGetCurrentContext was
called and had a check.
> - piglits (Ian)
> - some mesa glx tests are crashing/failing (yourself mentioned that
> iirc). I take it that things are fine now ?
>
Yes things are fine now as I moved the dummyContext to fake_glx_screen
where it should have been, 'glx-test' unit tests get their context from
there.
> Thanks
> Emil
// Tapani
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160529/d0646af1/attachment-0001.html>
More information about the mesa-dev
mailing list