commit b2f32e746492615a6eb3e66fac1e766e32e8deb1 Author: Florian Weimer Date: Thu Jul 21 12:12:08 2022 +0200 malloc: Simplify implementation of __malloc_assert It is prudent not to run too much code after detecting heap corruption, and __fxprintf is really complex. The line number and file name do not carry much information, so it is not included in the error message. (__libc_message only supports %s formatting.) The function name and assertion should provide some context. Reviewed-by: Siddhesh Poyarekar (cherry picked from commit ac8047cdf326504f652f7db97ec96c0e0cee052f) diff --git a/malloc/malloc.c b/malloc/malloc.c index 7882c70f0a0312d1..d31e985ecce968fe 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -294,19 +294,14 @@ # define __assert_fail(assertion, file, line, function) \ __malloc_assert(assertion, file, line, function) -extern const char *__progname; - -static void +_Noreturn static void __malloc_assert (const char *assertion, const char *file, unsigned int line, const char *function) { - (void) __fxprintf (NULL, "%s%s%s:%u: %s%sAssertion `%s' failed.\n", - __progname, __progname[0] ? ": " : "", - file, line, - function ? function : "", function ? ": " : "", - assertion); - fflush (stderr); - abort (); + __libc_message (do_abort, "\ +Fatal glibc error: malloc assertion failure in %s: %s\n", + function, assertion); + __builtin_unreachable (); } #endif #endif