aboutsummaryrefslogtreecommitdiff
path: root/teensy/teensy_mem.c
diff options
context:
space:
mode:
authoriamcheeseman <[email protected]>2026-05-29 22:01:18 -0400
committeriamcheeseman <[email protected]>2026-05-29 22:01:18 -0400
commit840b5c151fcd207e904fb2a6d3bb3fd658ef6209 (patch)
treed06c90490f087b2c5ad8a95b292ddfa315f5b70f /teensy/teensy_mem.c
parenta1429f81e3cfb6cefd44ba412d3d5e8f7bc97a71 (diff)
remove the memory tracker in debug mode for asan
Diffstat (limited to 'teensy/teensy_mem.c')
-rw-r--r--teensy/teensy_mem.c144
1 files changed, 1 insertions, 143 deletions
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 <execinfo.h>
-
-#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
-}