From: Jonathan Chambers Date: Fri, 9 Jun 2017 22:16:26 +0000 (-0400) Subject: Use regular allocator rather than GC memory for SRE related types since the contained... X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=128e454ad2139144496670128e473caae8d51527;p=mono.git Use regular allocator rather than GC memory for SRE related types since the contained GC tracked hash tables are now themselves roots since 863ddf25bfb4e88db7225dd4968a4403840c42af. Fixes crash due to MonoDynamicAssembly or MonoDynamicImage being collected under Boehm as they were unreferenced GC memory. --- diff --git a/mono/metadata/dynamic-image.c b/mono/metadata/dynamic-image.c index b846347126c..9ea2bcf0ee5 100644 --- a/mono/metadata/dynamic-image.c +++ b/mono/metadata/dynamic-image.c @@ -314,12 +314,7 @@ mono_dynamic_image_create (MonoDynamicAssembly *assembly, char *assembly_name, c else version = mono_get_runtime_info ()->runtime_version; -#if HAVE_BOEHM_GC - /* The MonoGHashTable's need GC tracking */ - image = (MonoDynamicImage *)GC_MALLOC (sizeof (MonoDynamicImage)); -#else image = g_new0 (MonoDynamicImage, 1); -#endif mono_profiler_module_event (&image->image, MONO_PROFILE_START_LOAD); @@ -549,10 +544,5 @@ mono_dynamic_image_free (MonoDynamicImage *image) void mono_dynamic_image_free_image (MonoDynamicImage *image) { - /* See create_dynamic_mono_image () */ -#if HAVE_BOEHM_GC - /* Allocated using GC_MALLOC */ -#else g_free (image); -#endif } diff --git a/mono/metadata/sre.c b/mono/metadata/sre.c index 47dd369faf6..63a9a99aaa3 100644 --- a/mono/metadata/sre.c +++ b/mono/metadata/sre.c @@ -1222,12 +1222,7 @@ mono_reflection_dynimage_basic_init (MonoReflectionAssemblyBuilder *assemblyb) if (assemblyb->dynamic_assembly) return; -#if HAVE_BOEHM_GC - /* assembly->assembly.image might be GC allocated */ - assembly = assemblyb->dynamic_assembly = (MonoDynamicAssembly *)GC_MALLOC (sizeof (MonoDynamicAssembly)); -#else assembly = assemblyb->dynamic_assembly = g_new0 (MonoDynamicAssembly, 1); -#endif mono_profiler_assembly_event (&assembly->assembly, MONO_PROFILE_START_LOAD);