diff options
Diffstat (limited to 'deps/jemalloc/src/safety_check.c')
-rw-r--r-- | deps/jemalloc/src/safety_check.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/deps/jemalloc/src/safety_check.c b/deps/jemalloc/src/safety_check.c index 804155dcf..209fdda92 100644 --- a/deps/jemalloc/src/safety_check.c +++ b/deps/jemalloc/src/safety_check.c @@ -1,9 +1,21 @@ #include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/jemalloc_internal_includes.h" -static void (*safety_check_abort)(const char *message); +static safety_check_abort_hook_t safety_check_abort; -void safety_check_set_abort(void (*abort_fn)(const char *)) { +void safety_check_fail_sized_dealloc(bool current_dealloc, const void *ptr, + size_t true_size, size_t input_size) { + char *src = current_dealloc ? "the current pointer being freed" : + "in thread cache, possibly from previous deallocations"; + + safety_check_fail("<jemalloc>: size mismatch detected (true size %zu " + "vs input size %zu), likely caused by application sized " + "deallocation bugs (source address: %p, %s). Suggest building with " + "--enable-debug or address sanitizer for debugging. Abort.\n", + true_size, input_size, ptr, src); +} + +void safety_check_set_abort(safety_check_abort_hook_t abort_fn) { safety_check_abort = abort_fn; } |