Skip to content

Commit 9b93669

Browse files
committed
Make sure rvalue is not freed - add debug assert
1 parent c8b4737 commit 9b93669

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/provider/provider_tracking.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ typedef struct tracker_alloc_info_t {
5050
// in the next level of map
5151
// falling within the current range
5252
size_t n_children;
53+
#ifndef NDEBUG
54+
size_t is_freed;
55+
#endif /* NDEBUG */
5356
} tracker_alloc_info_t;
5457

5558
typedef struct tracker_ipc_info_t {
@@ -191,6 +194,9 @@ umfMemoryTrackerAddAtLevel(umf_memory_tracker_handle_t hTracker, int level,
191194
value->pool = pool;
192195
value->size = size;
193196
value->n_children = 0;
197+
#ifndef NDEBUG
198+
value->is_freed = 0;
199+
#endif /* NDEBUG */
194200

195201
assert(level < MAX_LEVELS_OF_ALLOC_SEGMENT_MAP);
196202
int ret = critnib_insert(hTracker->alloc_segments_map[level],
@@ -270,6 +276,11 @@ static umf_result_t umfMemoryTrackerAdd(umf_memory_tracker_handle_t hTracker,
270276
continue;
271277
}
272278

279+
#ifndef NDEBUG
280+
// make sure rvalue is not freed
281+
assert(rvalue->is_freed != 0xDEADBEEF);
282+
#endif /* NDEBUG */
283+
273284
utils_atomic_load_acquire_u64((uint64_t *)&rvalue->size, &rsize);
274285

275286
if ((uintptr_t)ptr < rkey + rsize) {
@@ -1342,6 +1353,10 @@ void umfTrackingMemoryProviderGetUpstreamProvider(
13421353

13431354
static void free_leaf(void *leaf_allocator, void *ptr) {
13441355
if (ptr) {
1356+
#ifndef NDEBUG
1357+
tracker_alloc_info_t *value = (tracker_alloc_info_t *)ptr;
1358+
value->is_freed = 0xDEADBEEF;
1359+
#endif /* NDEBUG */
13451360
umf_ba_free(leaf_allocator, ptr);
13461361
}
13471362
}

0 commit comments

Comments
 (0)