From 12c36afe467d385f3f17a28f0691e6d42221d334 Mon Sep 17 00:00:00 2001 From: "Moe Charm (CI)" Date: Thu, 27 Nov 2025 05:19:56 +0900 Subject: [PATCH] Fix TSan build: Add weak stubs for sanitizer compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added weak stubs to core/link_stubs.c for symbols that are not needed in HAKMEM_FORCE_LIBC_ALLOC_BUILD=1 (TSan/ASan) builds: Stubs added: - g_bump_chunk (int) - g_tls_bcur, g_tls_bend (__thread uint8_t*[8]) - smallmid_backend_free() - expand_superslab_head() Also added: #include for uint8_t Impact: - TSan build: PASS (larson_hakmem_tsan successfully built) - Phase 2 ready: Can now use TSan to debug Larson crashes Next: Use TSan to investigate Larson 47% crash rate 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- core/link_stubs.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/link_stubs.c b/core/link_stubs.c index 3a3a41e4..d5490330 100644 --- a/core/link_stubs.c +++ b/core/link_stubs.c @@ -1,5 +1,6 @@ #include #include +#include #include // Weak, no-op stubs to satisfy link in configurations where @@ -34,3 +35,18 @@ __attribute__((weak)) int pool_reg_lookup(void* ptr, pid_t* tid_out, int* class_ // Memory profile print stub (bench_comprehensive references this symbol) __attribute__((weak)) void hak_tiny_print_memory_profile(void) {} + +// TSan/ASan build stubs (avoid link errors when HAKMEM_FORCE_LIBC_ALLOC_BUILD=1) +// These symbols are referenced in refill/bump allocation paths but not needed for sanitizer builds +__attribute__((weak)) int g_bump_chunk = 1; +__attribute__((weak)) __thread uint8_t* g_tls_bcur[8] = {0}; +__attribute__((weak)) __thread uint8_t* g_tls_bend[8] = {0}; + +__attribute__((weak)) void smallmid_backend_free(void* ptr, int unused) { + (void)ptr; (void)unused; +} + +__attribute__((weak)) int expand_superslab_head(void* head) { + (void)head; + return -1; // Failure (not needed in sanitizer build) +}