malloc: Use _int_free_chunk in tcache_thread_shutdown

Wilco Dijkstra Wilco.Dijkstra@arm.com
Fri Aug 29 13:09:04 GMT 2025


Directly call _int_free_chunk during tcache shutdown to avoid
possible recursion.

Passes regress, OK for commit?

---

diff --git a/malloc/malloc.c b/malloc/malloc.c
index 6c02af5a271d21a40cfe199d118dd7e7ad886ed5..943d5afd821e78d3f5d702bdc6fdc5caf21262fb 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -3346,6 +3346,7 @@ static void
 tcache_thread_shutdown (void)
 {
   int i;
+  mchunkptr p;
   tcache_perthread_struct *tcache_tmp = tcache;
 
   tcache_shutting_down = true;
@@ -3367,11 +3368,14 @@ tcache_thread_shutdown (void)
 	    malloc_printerr ("tcache_thread_shutdown(): "
 			     "unaligned tcache chunk detected");
 	  tcache_tmp->entries[i] = REVEAL_PTR (e->next);
-	  __libc_free (e);
+	  e->key = 0;
+	  p = mem2chunk (e);
+	  _int_free_chunk (arena_for_chunk (p), p, chunksize (p), 0);
 	}
     }
 
-  __libc_free (tcache_tmp);
+  p = mem2chunk (tcache_tmp);
+  _int_free_chunk (arena_for_chunk (p), p, chunksize (p), 0);
 }
 
 /* Initialize tcache.  In the rare case there isn't any memory available,



More information about the Libc-alpha mailing list