Merge bitcoin/bitcoin#29776: ThreadSanitizer: Fix #29767

bbe82c116e Fix #29767, set m_synced = true after Commit() (nanlour)

Pull request description:

  I think this problem https://github.com/bitcoin/bitcoin/issues/29767#issue-2216373048 is because of
  in BaseIndex::Sync
  61de64df67/src/index/base.cpp (L163-L168)
  Setup m_synced = true; before Commit();
  So this may cause a race condition window to BaseIndex::BlockConnected
  61de64df67/src/index/base.cpp (L271-L274)
  So i try to fix it with move m_synced = true after Commit().
  Also see comment of Sync():
  61de64df67/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 bbe82c116e
  ryanofsky:
    Code review ACK bbe82c116e

Tree-SHA512: 89a09498a232c87ef1e083d4cc4ed9bb15f045ad0624d5d150a87187b2b8a48a41137974dbc7ea5c37f73da90742c43259f5aa7f84b4179eb8d62033e44fa479
This commit is contained in:
Ryan Ofsky 2024-04-04 09:25:12 -04:00
commit 5a5ab1d544
No known key found for this signature in database
GPG Key ID: 46800E30FC748A66
1 changed files with 1 additions and 1 deletions

View File

@ -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)) {