postgres.git / summary / log / commit / refs
commit 6c878edc1df9d4d9ad7ed4a7e1c34c0bf0f622b9
Author: Andres Freund <andres@anarazel.de>
Date: Fri Nov 14 15:58:00 2014 +0000
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 4721c0a6fb6..0df95eabf12 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
+}
[parent: a15d387c22b7]