Mesa (master): mesa/st: release debug_output after destroying the context
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 15 09:38:24 UTC 2020
Module: Mesa
Branch: master
Commit: 25baceafd3dfbc288fe05876c7c088549e46d9d4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=25baceafd3dfbc288fe05876c7c088549e46d9d4
Author: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Date: Tue Jul 7 11:08:50 2020 +0200
mesa/st: release debug_output after destroying the context
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3230
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2218
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5789>
---
src/mesa/state_tracker/st_context.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 3b1fb862891..490e959d6da 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -29,6 +29,7 @@
#include "main/accum.h"
#include "main/api_exec.h"
#include "main/context.h"
+#include "main/debug_output.h"
#include "main/glthread.h"
#include "main/samplerobj.h"
#include "main/shaderobj.h"
@@ -1103,13 +1104,19 @@ st_destroy_context(struct st_context *st)
st_destroy_program_variants(st);
- _mesa_free_context_data(ctx, true);
+ /* Do not release debug_output yet because it might be in use by other threads.
+ * These threads will be terminated by _mesa_free_context_data and
+ * st_destroy_context_priv.
+ */
+ _mesa_free_context_data(ctx, false);
/* This will free the st_context too, so 'st' must not be accessed
* afterwards. */
st_destroy_context_priv(st, true);
st = NULL;
+ _mesa_destroy_debug_output(ctx);
+
free(ctx);
if (save_ctx == ctx) {
More information about the mesa-commit
mailing list