Skip to content

Commit fb6bded

Browse files
authored
Merge pull request #238 from ldorau/Fix_TRACKER_issues
Make sure TRACKER is not used after being destroyed
2 parents e22e03a + 68a9e16 commit fb6bded

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/libumf_linux.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ void __attribute__((constructor)) umfCreate(void) {
1919
}
2020

2121
void __attribute__((destructor)) umfDestroy(void) {
22-
umfMemoryTrackerDestroy(TRACKER);
22+
umf_memory_tracker_handle_t t = TRACKER;
23+
// make sure TRACKER is not used after being destroyed
24+
TRACKER = NULL;
25+
umfMemoryTrackerDestroy(t);
2326
}
2427

2528
void libumfInit(void) {

src/provider/provider_tracking.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
8181
umf_memory_pool_handle_t umfMemoryTrackerGetPool(const void *ptr) {
8282
assert(ptr);
8383

84+
if (TRACKER == NULL) {
85+
fprintf(stderr, "tracker is not created\n");
86+
return NULL;
87+
}
88+
89+
if (TRACKER->map == NULL) {
90+
fprintf(stderr, "tracker's map is not created\n");
91+
return NULL;
92+
}
93+
8494
uintptr_t rkey;
8595
tracker_value_t *rvalue;
8696
int found = critnib_find(TRACKER->map, (uintptr_t)ptr, FIND_LE,

0 commit comments

Comments
 (0)