From a5e9269f51791e4f55f6087b3be10636a7007ca7 Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Fri, 8 Aug 2025 14:00:43 +0000 Subject: [PATCH] malloc: Fix MALLOC_DEBUG MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit MALLOC_DEBUG only works on locked arenas, so move the call to check_inuse_chunk from __libc_free() to _int_free_chunk(). Regress now passes if MALLOC_DEBUG is enabled. Reviewed-by: Adhemerval Zanella  --- malloc/malloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/malloc/malloc.c b/malloc/malloc.c index 5257ee24fd..3a8aaeb665 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -3456,8 +3456,6 @@ __libc_free (void *mem) if (__glibc_unlikely (misaligned_chunk (p))) return malloc_printerr_tail ("free(): invalid pointer"); - check_inuse_chunk (arena_for_chunk (p), p); - #if USE_TCACHE if (__glibc_likely (size < mp_.tcache_max_bytes && tcache != NULL)) { @@ -4680,6 +4678,8 @@ _int_free_merge_chunk (mstate av, mchunkptr p, INTERNAL_SIZE_T size) { mchunkptr nextchunk = chunk_at_offset(p, size); + check_inuse_chunk (av, p); + /* Lightweight tests: check whether the block is already the top block. */ if (__glibc_unlikely (p == av->top)) -- 2.47.2