Summary: | [glsl] Unigine Sanctuary v2.2 assertion failed | ||
---|---|---|---|
Product: | Mesa | Reporter: | Pavel Ondračka <pavel.ondracka> |
Component: | Mesa core | Assignee: | Eric Anholt <eric> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | sa, vlee |
Version: | git | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Bug Depends on: | |||
Bug Blocks: | 28294 |
Description
Pavel Ondračka
2010-08-21 04:04:15 UTC
This doesn't happen with LIBGL_ALWAYS_SOFTWARE=1 and the 2.3 version, though it does produce a bunch of bogus shaders trying to use EXT_texture_array samplers without enabling the extension and 140 shaders without asking if 140 exists. By smashing in EXT_framebuffer_multisample support to 965, I do see the failure. Names of types are talloc_strdup()ed into the types memory context on their creation, so that they're freed at types destruction when tearing down the GL. However, the static types also get their names talloced into the types context at dlopen, and so once the free happens at last dri context close, the names of those static types point off into freed memory. Later attempts to re-add those builtin types to the new symbol table fail with bad memory references. Working on a testcase to reproduce the problem (since this probably won't be the last instance of it). For now, disabling the freeing of the types context in _mesa_glsl_release_types works around the problem. commit 8dd619ba6825e673a357336b69c96accaa96a7ef Author: Eric Anholt <eric@anholt.net> Date: Mon Aug 23 17:16:25 2010 -0700 glsl: Rely on talloc_autofree_context() instead of trying to free on our own Because the static types talloc their names at dlopen time, talloc_freeing the types at DRI driver screen teardown means that if the screen gets brought back up again, the names will point at freed memory. talloc_autofree_context() exists to do just what we want here: Free memory referenced across the program's lifetime so that we avoid noise in memory leak checkers. Fixes: bug #29722 (assertion failure in unigine). |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.