From f354099a6b61418a78717578f939deadb30df848 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 May 2022 17:37:52 +0200 Subject: [PATCH] Set app context to null on thread detach (#21489) When a domain is unloaded, it is possible that an InternalThread has a reference to an app context from the unloaded domain. Co-authored-by: Bill Holmes --- mono/metadata/domain.c | 1 + mono/metadata/threads.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mono/metadata/domain.c b/mono/metadata/domain.c index 98214f13a61..cef0fa5d046 100644 --- a/mono/metadata/domain.c +++ b/mono/metadata/domain.c @@ -961,6 +961,7 @@ void mono_domain_unset (void) { SET_APPDOMAIN (NULL); + SET_APPCONTEXT(NULL); } void diff --git a/mono/metadata/threads.c b/mono/metadata/threads.c index 5354a51b9e7..8d6753f2e01 100644 --- a/mono/metadata/threads.c +++ b/mono/metadata/threads.c @@ -1080,8 +1080,8 @@ mono_thread_detach_internal (MonoInternalThread *thread) /* There is no more any guarantee that `thread` is alive */ mono_memory_barrier (); + mono_domain_unset(); SET_CURRENT_OBJECT (NULL); - mono_domain_unset (); if (!mono_thread_info_try_get_internal_thread_gchandle (info, &gchandle)) g_error ("%s: failed to get gchandle, info = %p", __func__, info); -- 2.11.4.GIT