From c3527dafd586fd09199907d903fabf553fca66db Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Mon, 28 Nov 2016 09:52:49 +0000 Subject: [PATCH 1/2] epee: signal cond var before unlocking This is more canonical, and avoids some helgrind spam --- contrib/epee/include/net/abstract_tcp_server2.inl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/epee/include/net/abstract_tcp_server2.inl b/contrib/epee/include/net/abstract_tcp_server2.inl index f51ca88bf..3dca30006 100644 --- a/contrib/epee/include/net/abstract_tcp_server2.inl +++ b/contrib/epee/include/net/abstract_tcp_server2.inl @@ -1010,7 +1010,7 @@ POP_WARNINGS boost::unique_lock lock(local_shared_context->connect_mut); auto connect_callback = [](boost::system::error_code ec_, boost::shared_ptr shared_context) { - shared_context->connect_mut.lock(); shared_context->ec = ec_; shared_context->connect_mut.unlock(); shared_context->cond.notify_one(); + shared_context->connect_mut.lock(); shared_context->ec = ec_; shared_context->cond.notify_one(); shared_context->connect_mut.unlock(); }; sock_.async_connect(remote_endpoint, boost::bind(connect_callback, _1, local_shared_context)); From 8b0e04cb12224e7218a3d80f9255be39da9920e6 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Mon, 28 Nov 2016 09:52:59 +0000 Subject: [PATCH 2/2] monero.supp: add a suppression for noisy boost cond var signalling --- contrib/valgrind/monero.supp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/contrib/valgrind/monero.supp b/contrib/valgrind/monero.supp index 1c400076e..16e34e82f 100644 --- a/contrib/valgrind/monero.supp +++ b/contrib/valgrind/monero.supp @@ -8,3 +8,12 @@ fun:_ULx86_64_step ... } + +{ + boost unlocks before signalling cond var + Helgrind:Misc + ... + fun:pthread_cond_signal@* + fun:maybe_unlock_and_signal_one > + ... +}