Skip to content
Permalink
Browse files

8239070: Memory leak when unsuccessfully mapping in archive regions

Reviewed-by: kbarrett, iklam, coleenp, jiangli
  • Loading branch information
Thomas Schatzl
Thomas Schatzl committed Feb 19, 2020
1 parent 6015cab commit fff8438af836df3b86e6a9956119f3aee7523fa3
Showing with 9 additions and 0 deletions.
  1. +9 −0 src/hotspot/share/memory/filemap.cpp
@@ -1748,6 +1748,14 @@ void FileMapInfo::map_heap_regions() {
bool FileMapInfo::map_heap_data(MemRegion **heap_mem, int first,
int max, int* num, bool is_open_archive) {
MemRegion* regions = MemRegion::create_array(max, mtInternal);

struct Cleanup {
MemRegion* _regions;
bool _aborted;
Cleanup(MemRegion* regions) : _regions(regions), _aborted(true) { }
~Cleanup() { if (_aborted) { FREE_C_HEAP_ARRAY(MemRegion, _regions); } }
} cleanup(regions);

FileMapRegion* si;
int region_num = 0;

@@ -1807,6 +1815,7 @@ bool FileMapInfo::map_heap_data(MemRegion **heap_mem, int first,
}
}

cleanup._aborted = false;
// the shared heap data is mapped successfully
*heap_mem = regions;
*num = region_num;

0 comments on commit fff8438

Please sign in to comment.