godot-mono-builds/files/patches/mono-dbg-agent-clear-tls-instead-of-abort.diff

20 lines
652 B
Diff

diff --git a/mono/mini/debugger-agent.c b/mono/mini/debugger-agent.c
index df6329391df..05f30d5b4dc 100644
--- a/mono/mini/debugger-agent.c
+++ b/mono/mini/debugger-agent.c
@@ -4088,8 +4088,12 @@ thread_startup (MonoProfiler *prof, uintptr_t tid)
}
tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
- g_assert (!tls);
- // FIXME: Free this somewhere
+ if (tls) {
+ if (!tls->terminated) {
+ MONO_GC_UNREGISTER_ROOT(tls->thread);
+ }
+ g_free (tls);
+ }
tls = g_new0 (DebuggerTlsData, 1);
MONO_GC_REGISTER_ROOT_SINGLE (tls->thread, MONO_ROOT_SOURCE_DEBUGGER, NULL, "Debugger Thread Reference");
tls->thread = thread;