From 02dad379eef692203cc67b9991efffb1bd8f1b9b Mon Sep 17 00:00:00 2001 From: Thomas Schatzl Date: Fri, 6 Dec 2019 09:49:57 +0100 Subject: [PATCH] 8235346: [Redo] 8235247: WorkerDataArray leaks C heap memory for associated work items Fix gtest after last iteration to acknowledge correct ownership of sub-WorkerDataArrays. Reviewed-by: lkorinth, sjohanss --- src/hotspot/share/gc/shared/workerDataArray.inline.hpp | 3 +++ test/hotspot/gtest/gc/shared/test_workerDataArray.cpp | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/gc/shared/workerDataArray.inline.hpp b/src/hotspot/share/gc/shared/workerDataArray.inline.hpp index eeedd50e557..64f468ba83a 100644 --- a/src/hotspot/share/gc/shared/workerDataArray.inline.hpp +++ b/src/hotspot/share/gc/shared/workerDataArray.inline.hpp @@ -59,6 +59,9 @@ T WorkerDataArray::get(uint worker_i) const { template WorkerDataArray::~WorkerDataArray() { + for (uint i = 0; i < MaxThreadWorkItems; i++) { + delete _thread_work_items[i]; + } FREE_C_HEAP_ARRAY(T, _data); } diff --git a/test/hotspot/gtest/gc/shared/test_workerDataArray.cpp b/test/hotspot/gtest/gc/shared/test_workerDataArray.cpp index 02f7de4841c..bbd93da67dc 100644 --- a/test/hotspot/gtest/gc/shared/test_workerDataArray.cpp +++ b/test/hotspot/gtest/gc/shared/test_workerDataArray.cpp @@ -35,10 +35,9 @@ class WorkerDataArrayTest : public ::testing::Test { WorkerDataArrayTest() : title("Test array"), array(3, title), - sub_item_title("Sub item array"), - sub_item(3, sub_item_title) { + sub_item_title("Sub item array") { - array.link_thread_work_items(&sub_item); + array.link_thread_work_items(new WorkerDataArray(3, sub_item_title)); } const char* print_summary() { @@ -70,7 +69,6 @@ class WorkerDataArrayTest : public ::testing::Test { WorkerDataArray array; const char* sub_item_title; - WorkerDataArray sub_item; private: virtual const char* expected_summary() = 0;