diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-02-02 22:33:53 +0000 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-02-02 22:33:53 +0000 |
commit | 928c1825f09d840a73d75889a21a68871e8f3164 (patch) | |
tree | cb8ff98a5e0e890f053270fc51ffb42541064ee6 /src/cryptonote_protocol/cryptonote_protocol_handler.inl | |
parent | Merge pull request #3198 (diff) | |
download | monero-928c1825f09d840a73d75889a21a68871e8f3164.tar.xz |
cryptonote_protocol: guard against all threads in standby
Diffstat (limited to 'src/cryptonote_protocol/cryptonote_protocol_handler.inl')
-rw-r--r-- | src/cryptonote_protocol/cryptonote_protocol_handler.inl | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl index bc11ab6e4..e14040299 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl @@ -1333,6 +1333,15 @@ skip: break; } + // this one triggers if all threads are in standby, which should not happen, + // but happened at least once, so we unblock at least one thread if so + const boost::unique_lock<boost::mutex> sync{m_sync_lock, boost::try_to_lock}; + if (sync.owns_lock()) + { + LOG_DEBUG_CC(context, "No other thread is adding blocks, resuming"); + break; + } + if (should_download_next_span(context)) { MDEBUG(context << " we should try for that next span too, we think we could get it faster, resuming"); |