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@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5789>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2020-07-07 11:08:50 +02:00 committed by Marge Bot
parent 7f0b6a5df8
commit 25baceafd3

View file

@ -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) {