diff --git a/files/patches/mono-dbg-agent-clear-tls-instead-of-abort.diff b/files/patches/mono-dbg-agent-clear-tls-instead-of-abort.diff new file mode 100644 index 0000000..10ecc63 --- /dev/null +++ b/files/patches/mono-dbg-agent-clear-tls-instead-of-abort.diff @@ -0,0 +1,19 @@ +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; diff --git a/patch_mono.py b/patch_mono.py index 8cdd9b0..a60551e 100755 --- a/patch_mono.py +++ b/patch_mono.py @@ -26,7 +26,8 @@ def main(raw_args): mono_source_root = args.mono_sources patches = [ - 'fix-mono-android-tkill.diff' + 'fix-mono-android-tkill.diff', + 'mono-dbg-agent-clear-tls-instead-of-abort.diff' ] from subprocess import Popen