From 28014ee2bc049921effdd9a39fe983a43108cbdc Mon Sep 17 00:00:00 2001 From: daan Date: Sun, 26 Jul 2020 00:16:17 -0700 Subject: [PATCH] fix atomic access for MADV_FREE in os_reset --- src/os.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/os.c b/src/os.c index 29a76a88..0b959a9c 100644 --- a/src/os.c +++ b/src/os.c @@ -759,12 +759,12 @@ static bool mi_os_resetx(void* addr, size_t size, bool reset, mi_stats_t* stats) if (p != start) return false; #else #if defined(MADV_FREE) - static int advice = MADV_FREE; - int err = madvise(start, csize, advice); + static _Atomic(uintptr_t) advice = ATOMIC_VAR_INIT(MADV_FREE); + int err = madvise(start, csize, (int)mi_atomic_read_relaxed(&advice)); if (err != 0 && errno == EINVAL && advice == MADV_FREE) { // if MADV_FREE is not supported, fall back to MADV_DONTNEED from now on - advice = MADV_DONTNEED; - err = madvise(start, csize, advice); + mi_atomic_write(&advice, MADV_DONTNEED); + err = madvise(start, csize, MADV_DONTNEED); } #elif defined(__wasi__) int err = 0;