From f88d8902cfc0d6a9441e794eb47611ef4ed0d46c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacio=20Rold=C3=A1n=20Etcheverry?= Date: Tue, 28 Dec 2021 23:25:16 +0100 Subject: C#: Ensure native handles are freed after switch to .NET Core Finalizers are longer guaranteed to be called on exit now that we switched to .NET Core. This results in native instances leaking. The only solution I can think of so far is to keep a list of all instances alive to dispose when the AssemblyLoadContext.Unloading event is raised. --- modules/mono/csharp_script.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'modules/mono/csharp_script.cpp') diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 80e127bbc2..52b0e82c6e 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -1581,6 +1581,7 @@ void CSharpLanguage::tie_managed_to_unmanaged_with_pre_setup(GCHandleIntPtr p_gc CSharpInstance *instance = CAST_CSHARP_INSTANCE(p_unmanaged->get_script_instance()); if (!instance) { + // Native bindings don't need post-setup return; } -- cgit v1.2.3