This is an archive of the discontinued LLVM Phabricator instance.

[scudo][standalone] Remove unused atomic_compare_exchange_weak
ClosedPublic

Authored by cryptoad on Sep 28 2020, 1:08 PM.

Details

Summary

atomic_compare_exchange_weak is unused in Scudo, and its associated
test is actually wrong since the weak variant is allowed to fail
spuriously (thanks Roland).

This lead to flakes such as:

[ RUN      ] ScudoAtomicTest.AtomicCompareExchangeTest
../../zircon/third_party/scudo/src/tests/atomic_test.cpp:98: Failure: Expected atomic_compare_exchange_weak(reinterpret_cast<T *>(&V), &OldVal, NewVal, memory_order_relaxed) is true.
    Expected: true
    Which is: 01
    Actual  : atomic_compare_exchange_weak(reinterpret_cast<T *>(&V), &OldVal, NewVal, memory_order_relaxed)
    Which is: 00
../../zircon/third_party/scudo/src/tests/atomic_test.cpp:100: Failure: Expected atomic_compare_exchange_weak( reinterpret_cast<T *>(&V), &OldVal, NewVal, memory_order_relaxed) is false.
    Expected: false
    Which is: 00
    Actual  : atomic_compare_exchange_weak( reinterpret_cast<T *>(&V), &OldVal, NewVal, memory_order_relaxed)
    Which is: 01
../../zircon/third_party/scudo/src/tests/atomic_test.cpp:101: Failure: Expected OldVal == NewVal.
    Expected: NewVal
    Which is: 24
    Actual  : OldVal
    Which is: 42
[  FAILED  ] ScudoAtomicTest.AtomicCompareExchangeTest (0 ms)
[----------] 2 tests from ScudoAtomicTest (1 ms total)

So I am removing this, if someone ever needs the weak variant, feel
free to add it back with a test that is not as terrible. This test was
initially ported from sanitizer_common, but their weak version calls
the strong version, so it works for them.

Diff Detail

Event Timeline

cryptoad created this revision.Sep 28 2020, 1:08 PM
Herald added a project: Restricted Project. · View Herald TranscriptSep 28 2020, 1:08 PM
Herald added subscribers: Restricted Project, jfb. · View Herald Transcript
cryptoad requested review of this revision.Sep 28 2020, 1:08 PM
This revision is now accepted and ready to land.Sep 28 2020, 2:09 PM
This revision was landed with ongoing or failed builds.Sep 28 2020, 4:25 PM
This revision was automatically updated to reflect the committed changes.