From 9001cb1102cddba54f0e84e147dfbb0356067356 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Wed, 3 Aug 2022 11:41:53 +0200 Subject: assert: Do not use stderr in libc-internal assert Redirect internal assertion failures to __libc_assert_fail, based on based on __libc_message, which writes directly to STDERR_FILENO and calls abort. Also disable message translation and reword the error message slightly (adjusting stdlib/tst-bz20544 accordingly). As a result of these changes, malloc no longer needs its own redefinition of __assert_fail. __libc_assert_fail needs to be stubbed out during rtld dependency analysis because the rtld rebuilds turn __libc_assert_fail into __assert_fail, which is unconditionally provided by elf/dl-minimal.c. This change is not possible for the public assert macro and its __assert_fail function because POSIX requires that the diagnostic is written to stderr. Reviewed-by: Adhemerval Zanella --- malloc/malloc.c | 16 ---------------- 1 file changed, 16 deletions(-) (limited to 'malloc') diff --git a/malloc/malloc.c b/malloc/malloc.c index b2017c8fa7..914052eb69 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -288,22 +288,6 @@ #define MALLOC_DEBUG 0 #endif -#if IS_IN (libc) -#ifndef NDEBUG -# define __assert_fail(assertion, file, line, function) \ - __malloc_assert(assertion, file, line, function) - -_Noreturn static void -__malloc_assert (const char *assertion, const char *file, unsigned int line, - const char *function) -{ - __libc_message ("Fatal glibc error: malloc assertion failure in %s: %s\n", - function, assertion); - __builtin_unreachable (); -} -#endif -#endif - #if USE_TCACHE /* We want 64 entries. This is an arbitrary limit, which tunables can reduce. */ # define TCACHE_MAX_BINS 64 -- cgit 1.4.1