This is an archive of the discontinued LLVM Phabricator instance.

tsan: don't use spinning in __cxa_guard_acquire/pthread_once
ClosedPublic

Authored by dvyukov on Aug 3 2021, 8:21 AM.

Details

Summary

Currently we use passive spinning with internal_sched_yield to wait
in __cxa_guard_acquire/pthread_once. Passive spinning tends to degrade
ungracefully under high load. Use FutexWait/Wake instead.

Depends on D107359.

Diff Detail

Event Timeline

dvyukov created this revision.Aug 3 2021, 8:21 AM
dvyukov requested review of this revision.Aug 3 2021, 8:21 AM
Herald added a project: Restricted Project. · View Herald TranscriptAug 3 2021, 8:21 AM
Herald added a subscriber: Restricted Project. · View Herald Transcript
vitalybuka accepted this revision.Aug 3 2021, 10:01 AM
vitalybuka added inline comments.
compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
853

static?

873

looks like only two atomic_* lines are related to the description
the rest looks like a separate NFC patch

This revision is now accepted and ready to land.Aug 3 2021, 10:01 AM
dvyukov added inline comments.Aug 3 2021, 10:13 AM
compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
853
melver accepted this revision.Aug 3 2021, 10:20 AM
vitalybuka added inline comments.Aug 3 2021, 1:26 PM
compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
853

Thanks.

dvyukov updated this revision to Diff 364049.Aug 4 2021, 4:46 AM

split introduction of named constants into separate commit

dvyukov added inline comments.Aug 4 2021, 4:48 AM
compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
873

Moved introduction of named consts into https://reviews.llvm.org/D107445

This revision was landed with ongoing or failed builds.Aug 4 2021, 4:56 AM
This revision was automatically updated to reflect the committed changes.