Public bug reported:

The following bug don't impact me directly because i'm a nvidia user.
But i got lot of people complaining about a random freeze when using
opengl application. I've been able to track down the bug. It's actually
reported at :

https://bugs.freedesktop.org/show_bug.cgi?id=35603

Ubuntu ship Mesa 7.10.2, and it seem they got a bug when reading builtin.
1. in src/glsl/builtin_functions.cpp:38, they are creating a fakeCtx, but never 
initialize it, except API
2. 4 lines after, this unitialized context is used by _mesa_glsl_parse_state()
3. in src/glsl/glsl_parser_extras.cpp:98, the highest_version is read from the 
fake context... and so you can random value. It can be very high in some case 
like 135840965
4. few lines after, they are doing a loop, and generate a string of supported 
glsl version. Unfortunatly, the loop is too big to be finished, and the string 
became really really big... and it's freeze here. (strlen issue ? dunno.)

So here we are, to prevent that, i've tryed to initialize part of the
structure used in _mesa_glsl_parse_state.

--- src/glsl/builtin_function.cpp.before        2011-05-26 18:54:01.299953729 
+0200
+++ src/glsl/builtin_function.cpp       2011-05-26 18:54:44.730017427 +0200
@@ -37,6 +37,8 @@
 {
    struct gl_context fakeCtx;
    fakeCtx.API = API_OPENGL;
+   fakeCtx.Const.GLSLVersion = 120;
+   fakeCtx.Extensions.ARB_ES2_compatibility = 0;
    gl_shader *sh = _mesa_new_shader(NULL, 0, target);
    struct _mesa_glsl_parse_state *st =
       new(sh) _mesa_glsl_parse_state(&fakeCtx, target, sh);

I'm not sure at all that this will be ok for everyone, but it's
resolving the current freeze, by using initialized value...

** Affects: mesa (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/788730

Title:
  Random freeze when using gl application

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to