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]