diff --git a/conan/profiles/sanitizers b/conan/profiles/sanitizers index 6af5565bcb..7fb59a8250 100644 --- a/conan/profiles/sanitizers +++ b/conan/profiles/sanitizers @@ -32,6 +32,7 @@ include(default) {% set sanitizer_flags = "-fsanitize=" ~ ",".join(sanitizer_list) ~ " " ~ model_code %} tools.build:cxxflags+=['{{sanitizer_flags}} {{" ".join(extra_cxxflags)}}'] + tools.build:cflags+=['{{sanitizer_flags}} -fno-omit-frame-pointer -O1'] tools.build:sharedlinkflags+=['{{sanitizer_flags}}'] tools.build:exelinkflags+=['{{sanitizer_flags}}'] tools.build:defines+={{defines}} @@ -61,6 +62,7 @@ include(default) {% set sanitizer_flags = "-fsanitize=" ~ ",".join(sanitizer_list) %} tools.build:cxxflags+=['{{sanitizer_flags}} {{" ".join(extra_cxxflags)}}'] + tools.build:cflags+=['{{sanitizer_flags}} -fno-omit-frame-pointer -O1'] tools.build:sharedlinkflags+=['{{sanitizer_flags}}'] tools.build:exelinkflags+=['{{sanitizer_flags}}'] tools.build:defines+={{defines}} @@ -68,7 +70,7 @@ include(default) {% endif %} {% endif %} -tools.info.package_id:confs+=["tools.build:cxxflags", "tools.build:exelinkflags", "tools.build:sharedlinkflags", "tools.build:defines"] +tools.info.package_id:confs+=["tools.build:cxxflags", "tools.build:cflags", "tools.build:exelinkflags", "tools.build:sharedlinkflags", "tools.build:defines"] [options] {% if sanitizers %} diff --git a/sanitizers/suppressions/tsan.supp b/sanitizers/suppressions/tsan.supp index 1a8566d41e..993cb6cc08 100644 --- a/sanitizers/suppressions/tsan.supp +++ b/sanitizers/suppressions/tsan.supp @@ -42,6 +42,13 @@ deadlock:boost::asio # Requires a larger lock-ordering redesign to fix properly. deadlock:RCLConsensus +# Lock-order-inversion in LedgerReplay subsystem. +# LedgerDeltaAcquire::notify() calls LedgerReplayTask::deltaReady() while +# holding LedgerDeltaAcquire's mutex, which then acquires LedgerReplayTask's +# mutex. The reverse order also occurs. Pre-existing design issue. +deadlock:LedgerReplayTask +deadlock:LedgerDeltaAcquire + # Signal/crash suppressions for GCC TSAN instrumentation issues signal:std::__cxx11::basic_stringbuf signal:basic_stringbuf