Skip to content

Commit

Permalink
Merge #29776: ThreadSanitizer: Fix #29767
Browse files Browse the repository at this point in the history
bbe82c1 Fix #29767, set m_synced = true after Commit() (nanlour)

Pull request description:

  I think this problem #29767 (comment) is because of
  in BaseIndex::Sync
  https://github.com/bitcoin/bitcoin/blob/61de64df6790077857faba84796bb874b59c5d15/src/index/base.cpp#L163-L168
  Setup m_synced = true; before Commit();
  So this may cause a race condition window to BaseIndex::BlockConnected
  https://github.com/bitcoin/bitcoin/blob/61de64df6790077857faba84796bb874b59c5d15/src/index/base.cpp#L271-L274
  So i try to fix it with move m_synced = true after Commit().
  Also see comment of Sync():
  https://github.com/bitcoin/bitcoin/blob/61de64df6790077857faba84796bb874b59c5d15/src/index/base.h#L151-L156
  I am a newcomer interested in Bitcoin, trying to become a member of the Bitcoin Core development team. Please give me some feedback if you could, as I may be doing something wrong. Thank you!

ACKs for top commit:
  fjahr:
    Code review ACK bbe82c1
  ryanofsky:
    Code review ACK bbe82c1

Tree-SHA512: 89a09498a232c87ef1e083d4cc4ed9bb15f045ad0624d5d150a87187b2b8a48a41137974dbc7ea5c37f73da90742c43259f5aa7f84b4179eb8d62033e44fa479
  • Loading branch information
ryanofsky committed Apr 4, 2024
2 parents 71c51c1 + bbe82c1 commit 5a5ab1d
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/index/base.cpp
Expand Up @@ -162,9 +162,9 @@ void BaseIndex::Sync()
const CBlockIndex* pindex_next = WITH_LOCK(cs_main, return NextSyncBlock(pindex, m_chainstate->m_chain));
if (!pindex_next) {
SetBestBlockIndex(pindex);
m_synced = true;
// No need to handle errors in Commit. See rationale above.
Commit();
m_synced = true;
break;
}
if (pindex_next->pprev != pindex && !Rewind(pindex, pindex_next->pprev)) {
Expand Down

0 comments on commit 5a5ab1d

Please sign in to comment.