From: Florian Weimer Date: Thu, 21 Jul 2022 10:12:08 +0000 (+0200) Subject: malloc: Simplify implementation of __malloc_assert X-Git-Tag: glibc-2.36~37 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=ac8047cdf326504f652f7db97ec96c0e0cee052f;p=glibc.git 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 --- diff --git a/malloc/malloc.c b/malloc/malloc.c index 12908b8f97..bd3c76ed31 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -292,19 +292,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