From 6c878edc1df9d4d9ad7ed4a7e1c34c0bf0f622b9 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Fri, 14 Nov 2014 16:58:00 +0100 Subject: [PATCH] Add valgrind suppression for pg_atomic_init_u64. pg_atomic_init_u64 (indirectly) uses compare/exchange to guarantee atomic writes on platforms where compare/exchange is available, but 64bit writes aren't atomic (yes, those exist). That leads to a harmless read of the initial value of variable. --- src/tools/valgrind.supp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/tools/valgrind.supp b/src/tools/valgrind.supp index 4721c0a6fb..0df95eabf1 100644 --- a/src/tools/valgrind.supp +++ b/src/tools/valgrind.supp @@ -104,3 +104,16 @@ fun:IsBinaryCoercible } + +# Atomic writes to 64bit atomic vars uses compare/exchange to +# guarantee atomic writes of 64bit variables. pg_atomic_write is used +# during initialization of the atomic variable, hat leads to an +# initial read of the old, undefined, memory value. But that's just to +# make sure the swap works correctly. +{ + uninitialized_atomic_init_u64 + Memcheck:Cond + fun:pg_atomic_exchange_u64_impl + fun:pg_atomic_write_u64_impl + fun:pg_atomic_init_u64_impl +}