Skip to content

Commit c23a254

Browse files
committed
Postpone freeing a tracker entry until it is really removed from tracker
Postpone freeing a tracker entry until it is really removed from tracker. Ref: #1233 Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
1 parent c09a88b commit c23a254

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/provider/provider_tracking.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,6 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
271271
parent_value->n_children--;
272272
}
273273

274-
umf_ba_free(hTracker->alloc_info_allocator, value);
275-
276274
return UMF_RESULT_SUCCESS;
277275
}
278276

@@ -664,8 +662,6 @@ static umf_result_t trackingAllocationMerge(void *hProvider, void *lowPtr,
664662
lowLevel, lowPtr, lowValue->n_children, highPtr,
665663
highValue->n_children, totalSize);
666664

667-
umf_ba_free(provider->hTracker->alloc_info_allocator, highValue);
668-
669665
return UMF_RESULT_SUCCESS;
670666

671667
err_fatal:
@@ -1156,6 +1152,12 @@ void umfTrackingMemoryProviderGetUpstreamProvider(
11561152
*hUpstream = p->hUpstream;
11571153
}
11581154

1155+
static void free_leaf(void *leaf_allocator, void *ptr) {
1156+
if (ptr) {
1157+
umf_ba_free(leaf_allocator, ptr);
1158+
}
1159+
}
1160+
11591161
umf_memory_tracker_handle_t umfMemoryTrackerCreate(void) {
11601162
umf_memory_tracker_handle_t handle =
11611163
umf_ba_global_alloc(sizeof(struct umf_memory_tracker_t));
@@ -1180,7 +1182,8 @@ umf_memory_tracker_handle_t umfMemoryTrackerCreate(void) {
11801182

11811183
int i;
11821184
for (i = 0; i < MAX_LEVELS_OF_ALLOC_SEGMENT_MAP; i++) {
1183-
handle->alloc_segments_map[i] = critnib_new(NULL, NULL);
1185+
handle->alloc_segments_map[i] =
1186+
critnib_new(alloc_info_allocator, free_leaf);
11841187
if (!handle->alloc_segments_map[i]) {
11851188
goto err_destroy_alloc_segments_map;
11861189
}

0 commit comments

Comments
 (0)