Use regular allocator rather than GC memory for SRE related types since the contained...
authorJonathan Chambers <joncham@gmail.com>
Fri, 9 Jun 2017 22:16:26 +0000 (18:16 -0400)
committerJonathan Chambers <joncham@gmail.com>
Fri, 9 Jun 2017 22:21:22 +0000 (18:21 -0400)
Fixes crash due to MonoDynamicAssembly or MonoDynamicImage being collected under Boehm as they were unreferenced GC memory.

mono/metadata/dynamic-image.c
mono/metadata/sre.c

index b846347126cb0bf39f5baea7359c3544099cf384..9ea2bcf0ee5c5252c362d8b8106a623db82faa87 100644 (file)
@@ -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
 }
index 47dd369faf6f1e608c4f9f79dc95de23364ac246..63a9a99aaa3762e294aa6056cdf59769f25469ff 100644 (file)
@@ -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);