diff options
author | Florian Weimer <fweimer@redhat.com> | 2022-07-21 12:12:08 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2022-07-21 16:34:20 +0200 |
commit | 0e5b239f45992e4b54c6f946ecb0c410afc8bb08 (patch) | |
tree | 6ecb977e64f33964fcd18d183c0fef120803d378 | |
parent | dc2d843045678f4adb7803f1ed0dd05147770974 (diff) |
malloc: Simplify implementation of __malloc_assertlinaro-local/ci/tcwg_bmk_llvm_tx1/llvm-release-aarch64-spec2k6-O2linaro-local/ci/tcwg_bmk_llvm_tk1/llvm-release-arm-spec2k6-O3linaro-local/ci/tcwg_bmk_llvm_sq/llvm-release-aarch64-spec2k6-Oslinaro-local/ci/tcwg_bmk_llvm_apm/llvm-release-arm-spec2k6-Oz_LTOlinaro-local/ci/tcwg_bmk_llvm_apm/llvm-release-arm-spec2k6-Ozlinaro-local/ci/tcwg_bmk_llvm_apm/llvm-release-arm-spec2k6-Os_LTOlinaro-local/ci/tcwg_bmk_llvm_apm/llvm-release-aarch64-spec2k6-Os_LTOlinaro-local/ci/tcwg_bmk_llvm_apm/llvm-release-aarch64-spec2k6-Oslinaro-local/ci/tcwg_bmk_gnu_tx1/gnu-release-aarch64-spec2k6-O2_LTOlinaro-local/ci/tcwg_bmk_gnu_tk1/gnu-release-arm-spec2k6-O3linaro-local/ci/tcwg_bmk_gnu_tk1/gnu-release-arm-spec2k6-O2_LTOlinaro-local/ci/tcwg_bmk_gnu_sq/gnu-release-aarch64-spec2k6-Os
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 <siddhesh@sourceware.org>
(cherry picked from commit ac8047cdf326504f652f7db97ec96c0e0cee052f)
-rw-r--r-- | malloc/malloc.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/malloc/malloc.c b/malloc/malloc.c index 1a1ac1d8f0..fe9cb9b800 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 |