Просмотр исходного кода

Fix memory leak in GC when rootset enumeration fails (#4793)

Signed-off-by: zhenweijin <zhenwei.jin@intel.com>
Zhenwei Jin 2 дней назад
Родитель
Сommit
09a2456d7a
1 измененных файлов с 5 добавлено и 1 удалено
  1. 5 1
      core/shared/mem-alloc/ems/ems_gc.c

+ 5 - 1
core/shared/mem-alloc/ems/ems_gc.c

@@ -308,8 +308,12 @@ reclaim_instance_heap(gc_heap_t *heap)
         return GC_SUCCESS;
     ret = gct_vm_begin_rootset_enumeration(heap->cluster, heap);
 #endif
-    if (!ret)
+    if (!ret) {
+        if (heap->root_set) {
+            rollback_mark(heap);
+        }
         return GC_ERROR;
+    }
 
 #if BH_ENABLE_GC_VERIFY != 0
     /* no matter whether the enumeration is successful or not, the data