diff --git a/.pick_status.json b/.pick_status.json index 4127c762e6b..eab1664306d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -787,7 +787,7 @@ "description": "compiler/glsl: Use mutex lock while freeing up mem_ctx", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e4da8b9c331cc3ae1b86b3a7860231e202463db0" }, diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp index 6d700c14bec..9f3b526671e 100644 --- a/src/compiler/glsl/builtin_functions.cpp +++ b/src/compiler/glsl/builtin_functions.cpp @@ -90,6 +90,8 @@ using namespace ir_builder; +static mtx_t builtins_lock = _MTX_INITIALIZER_NP; + /** * Availability predicates: * @{ @@ -1296,7 +1298,15 @@ builtin_builder::builtin_builder() builtin_builder::~builtin_builder() { + mtx_lock(&builtins_lock); + ralloc_free(mem_ctx); + mem_ctx = NULL; + + ralloc_free(shader); + shader = NULL; + + mtx_unlock(&builtins_lock); } ir_function_signature * @@ -7753,7 +7763,6 @@ builtin_builder::_helper_invocation() /* The singleton instance of builtin_builder. */ static builtin_builder builtins; -static mtx_t builtins_lock = _MTX_INITIALIZER_NP; static uint32_t builtin_users = 0; /**