diff --git a/lib/mem.c b/lib/mem.c index 3383de0b..fc132930 100644 --- a/lib/mem.c +++ b/lib/mem.c @@ -209,14 +209,6 @@ char* u_strdup_impl(const char* s, const char* location) { return copy; } -void u_mem_get_counters(size_t* allocations, size_t* frees, size_t* allocated) { - LOCK(); - if (allocations) *allocations = allocations_count; - if (frees) *frees = frees_count; - if (allocated) *allocated = allocated_count; - UNLOCK(); -} - void u_report_unfreed_blocks(void) { LOCK(); size_t count = allocated_count; @@ -229,7 +221,7 @@ void u_report_unfreed_blocks(void) { DEBUG_INFO(DEBUG_CATEGORY_MEMORY, "No unfreed memory blocks."); return; } - DEBUG_ERROR(DEBUG_CATEGORY_MEMORY, "Unfreed memory blocks: %zu", count); + DEBUG_ERROR(DEBUG_CATEGORY_MEMORY, "Unfreed memory blocks: %zu, allocations: %zu frees: %zu", count, allocations_count, frees_count); void* curr = head; while (curr) { char* alloc_loc = (char*)curr; diff --git a/lib/mem.h b/lib/mem.h index 8854f641..48f66469 100644 --- a/lib/mem.h +++ b/lib/mem.h @@ -23,7 +23,6 @@ void* u_calloc_impl(uint32_t nmemb, uint32_t size, const char* location); void* u_realloc_impl(void* ptr, uint32_t size, const char* location); void u_free_impl(void* ptr, const char* location); char* u_strdup_impl(const char* s, const char* location); -void u_mem_get_counters(size_t* allocations, size_t* frees, size_t* allocated); void u_report_unfreed_blocks(void); #ifdef __cplusplus } diff --git a/lib/memory_pool.h b/lib/memory_pool.h index 7ea287f4..8a2bfe76 100644 --- a/lib/memory_pool.h +++ b/lib/memory_pool.h @@ -9,7 +9,7 @@ #define XSTR(s) STR(s) #define STR(s) #s -#define LOCATION __FILE__ ":" XSTR(__LINE__) +#define PLOCATION __FILE__ ":" XSTR(__LINE__) "[POOL]" struct memory_pool { void* free_head; // Голова linked list свободных блоков (next хранится в начале каждого блока) @@ -29,7 +29,7 @@ void* memory_pool_alloc_impl(struct memory_pool* pool, const char* location); void memory_pool_free_impl(struct memory_pool* pool, void* obj, const char* location); void memory_pool_get_stats(struct memory_pool* pool, size_t* allocations, size_t* reuse_count); -#define memory_pool_alloc(pool) memory_pool_alloc_impl(pool, LOCATION) -#define memory_pool_free(pool, obj) memory_pool_free_impl(pool, obj, LOCATION) +#define memory_pool_alloc(pool) memory_pool_alloc_impl(pool, PLOCATION) +#define memory_pool_free(pool, obj) memory_pool_free_impl(pool, obj, PLOCATION) #endif // MEMORY_POOL_H diff --git a/src/utun.c b/src/utun.c index 0c43d73b..d7eb24ed 100644 --- a/src/utun.c +++ b/src/utun.c @@ -405,11 +405,11 @@ int main(int argc, char *argv[]) { // Cleanup DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "Shutdown"); - u_report_unfreed_blocks(); if (instance) { utun_instance_destroy(instance); } + u_report_unfreed_blocks(); // Destroy uasync instance after instance is destroyed if (ua) {