From 840b5c151fcd207e904fb2a6d3bb3fd658ef6209 Mon Sep 17 00:00:00 2001 From: iamcheeseman Date: Fri, 29 May 2026 22:01:18 -0400 Subject: remove the memory tracker in debug mode for asan --- teensy/teensy_mem.c | 144 +--------------------------------------------------- 1 file changed, 1 insertion(+), 143 deletions(-) (limited to 'teensy/teensy_mem.c') diff --git a/teensy/teensy_mem.c b/teensy/teensy_mem.c index 65b7486..d32cabf 100644 --- a/teensy/teensy_mem.c +++ b/teensy/teensy_mem.c @@ -8,67 +8,11 @@ uint8_t temp_arena[TEMP_ALLOC_ARENA_SIZE]; uint8_t *next_temp_alloc = temp_arena; -#ifdef TEENSY_DEBUG - -#include - -#define BACKTRACE_SIZE 16 - -typedef struct { - void *ptr; - size_t size; - int backtrace_len; - char **backtrace; -} Alloc; - -int allocations_cap; -int allocations_len; -Alloc *allocations; - -#endif // TODO TEENSY_DEBUG - -void ty_init_mem(void) -{ -#ifdef TEENSY_DEBUG - allocations_len = 0; - allocations_cap = 8; - allocations = malloc(sizeof(Alloc) * 8); - if (!allocations) - ty_log_fatal(TY_ERR_MEM, "(%s) (track) ran out of memory", __func__); -#endif // TEENSY_DEBUG -} - -void ty_deinit_mem(void) -{ -#ifdef TEENSY_DEBUG - fprintf(stderr, "%d allocations leaked\n", allocations_len); - for (int i = 0; i < allocations_len; i++) { - Alloc *alloc = &allocations[i]; - fprintf( - stderr, - "leaked %zu bytes at %p\n", - alloc->size, - alloc->ptr - ); - for (int j = 0; j < alloc->backtrace_len; j++) { - fprintf(stderr, "\t%s\n", alloc->backtrace[j]); - } - putc('\n', stderr); - - free(alloc->backtrace); - } - free(allocations); - - if (allocations_len > 0) - exit(TY_ERR_MEM_LEAK); -#endif // TEENSY_DEBUG -} - void *ty_talloc(size_t size) { if (next_temp_alloc > temp_arena + TEMP_ALLOC_ARENA_SIZE) ty_log_fatal(TY_ERR_MEM, "bump up the temp alloc arena size"); - + void *ptr = next_temp_alloc; next_temp_alloc += size; return ptr; @@ -86,36 +30,6 @@ void *ty_alloc(size_t size) void *ptr = malloc(size); if (!ptr) ty_log_fatal(TY_ERR_MEM, "(%s) ran out of memory", __func__); - -#ifdef TEENSY_DEBUG - // Log allocation - Alloc alloc; - void *bt[BACKTRACE_SIZE]; - int bt_len = backtrace(bt, BACKTRACE_SIZE); - char **symbols = backtrace_symbols(bt, bt_len); - - alloc.ptr = ptr; - alloc.size = size; - alloc.backtrace_len = bt_len; - alloc.backtrace = symbols; - - if (allocations_len + 1 > allocations_cap) { - allocations_cap *= 2; - allocations = realloc( - allocations, - sizeof(Alloc) * allocations_cap - ); - if (!allocations) - ty_log_fatal( - TY_ERR_MEM, - "(%s) (track) ran out of memory", - __func__ - ); - } - - allocations[allocations_len++] = alloc; -#endif // TEENSY_DEBUG - return ptr; } @@ -135,66 +49,10 @@ void *ty_realloc(void *ptr, size_t new_size) if (!new_ptr) ty_log_fatal(TY_ERR_MEM, "(%s) ran out of memory", __func__); -#ifdef TEENSY_DEBUG - for (int i = 0; i < allocations_len; i++) { - Alloc *alloc = &allocations[i]; - if (alloc->ptr == ptr) { - alloc->ptr = new_ptr; - alloc->size = new_size; - break; - } - } -#endif // TEENSY_DEBUG - return new_ptr; } void ty_free(void *ptr) { -#ifdef TEENSY_DEBUG - bool double_free = true; - - for (int i = 0; i < allocations_len; i++) { - Alloc *alloc = &allocations[i]; - if (alloc->ptr == ptr) { - free(alloc->backtrace); - *alloc = allocations[allocations_len - 1]; - allocations_len--; - double_free = false; - break; - } - } - - if (double_free) { - ty_log_fatal( - TY_ERR_MEM, - "Double free or freed unowned memory (%p)", - ptr - ); - } -#endif // TEENSY_DEBUG free(ptr); } - -int ty_alloc_count(void) -{ -#ifdef TEENSY_DEBUG - return allocations_len; -#else - return -1; -#endif -} - -size_t ty_alloc_size(void) -{ -#ifdef TEENSY_DEBUG - size_t total = 0; - for (int i = 0; i < allocations_len; i++) { - Alloc *alloc = &allocations[i]; - total += alloc->size; - } - return total; -#else - return 0; -#endif -} -- cgit v1.3-2-g0d8e