[Mesa-dev] [PATCH 1/2] compiler: Free types in _mesa_glsl_release_types() rather than autofree.

Lionel Landwerlin lionel.g.landwerlin at intel.com
Mon Feb 27 13:49:03 UTC 2017


Does this fix the double free issue I've been seeing in shader-db?

Regardless :

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 27/02/17 12:23, Kenneth Graunke wrote:
> Instead of using ralloc_autofree_context() to install an atexit()
> handler to ralloc_free(glsl_type::mem_ctx), we can simply free them
> from _mesa_glsl_release_types().
>
> This is effectively the same, because _mesa_glsl_release_types() is
> called from _mesa_destroy_shader_compiler(), which is called from Mesa's
> one_time_fini() function, which Mesa installs as an atexit() handler.
>
> The one advantage here is that it ensures the built-in functions are
> destroyed before the types.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>   src/compiler/glsl_types.cpp | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp
> index a431edcdd3f..1da631dcb98 100644
> --- a/src/compiler/glsl_types.cpp
> +++ b/src/compiler/glsl_types.cpp
> @@ -40,7 +40,7 @@ void
>   glsl_type::init_ralloc_type_ctx(void)
>   {
>      if (glsl_type::mem_ctx == NULL) {
> -      glsl_type::mem_ctx = ralloc_autofree_context();
> +      glsl_type::mem_ctx = ralloc_context(NULL);
>         assert(glsl_type::mem_ctx != NULL);
>      }
>   }
> @@ -416,6 +416,9 @@ _mesa_glsl_release_types(void)
>         _mesa_hash_table_destroy(glsl_type::interface_types, NULL);
>         glsl_type::interface_types = NULL;
>      }
> +
> +   ralloc_free(glsl_type::mem_ctx);
> +   glsl_type::mem_ctx = NULL;
>   }
>   
>   




More information about the mesa-dev mailing list