From f398545154c9889123b3c66cf51ca56eef0154dd Mon Sep 17 00:00:00 2001 From: Matthew Parkinson Date: Tue, 14 Dec 2021 11:48:45 +0000 Subject: [PATCH] Fix memalign usage - Alignment should be above sizeof(void*) - Don't call with very large sizes --- src/mem/external_alloc.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/mem/external_alloc.h b/src/mem/external_alloc.h index ae35870..13eb2bc 100644 --- a/src/mem/external_alloc.h +++ b/src/mem/external_alloc.h @@ -52,6 +52,16 @@ namespace snmalloc::external_alloc { inline void* aligned_alloc(size_t alignment, size_t size) { + // TSAN complains if allocation is large than this. + if constexpr (bits::BITS == 64) + { + if (size >= 0x10000000000) + return nullptr; + } + + if (alignment < sizeof(void*)) + alignment = sizeof(void*); + void* result; if (posix_memalign(&result, alignment, size) != 0) {