On Tue, Mar 10, 2026 at 10:30 PM Alexandre Oliva <[email protected]> wrote:
>
>
> compare_exchange_weak is allowed to fail spuriously, and we're
> actually hitting such spurious failures quite often on ppc-vx7r2,
> presumably when random interrupts hit between ll and sc.
>
> Tolerate one such failure, hopefully that will suffice.
>
> Regstrapped on x86_64-linux-gnu, also tested with gcc-15 for ppc-vx7r2.
> Ok to install?

LGTM.
I am also worried that 2 weak compare exchanges would not be enough
and still cause a spurious failure
but at least it is easier to understand based on the comment there.

Thanks,
Andrew


>
>
> for  libstdc++-v3/ChangeLog
>
>         * testsuite/29_atomics/atomic/compare_exchange_padding.cc:
>         Tolerate one compare_exchange_weak spurious failure.
> ---
>  .../29_atomics/atomic/compare_exchange_padding.cc  |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git 
> a/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc 
> b/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
> index d9c7b90c1a5c1..3fc2f6b4f8031 100644
> --- a/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
> +++ b/libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
> @@ -37,8 +37,8 @@ main ()
>    fill_struct(n);
>    n.c = 'b';
>    n.s = 71;
> -  // padding cleared on compexchg
> -  VERIFY( as.compare_exchange_weak(s, n) );
> +  // padding cleared on compexchg.  tolerate one spurious _weak failure.
> +  VERIFY( as.compare_exchange_weak(s, n) || as.compare_exchange_weak(s, n) );
>    VERIFY( as.compare_exchange_strong(n, s) );
>    return 0;
>  }
>
> --
> Alexandre Oliva, happy hacker            https://blog.lx.oliva.nom.br/
> Free Software Activist     FSFLA co-founder     GNU Toolchain Engineer
> More tolerance and less prejudice are key for inclusion and diversity.
> Excluding neuro-others for not behaving ""normal"" is *not* inclusive!

Reply via email to