Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCoinsViewCache code cleanup & deduplication #9384

Closed
wants to merge 1 commit into from

Conversation

ryanofsky
Copy link
Contributor

@ryanofsky ryanofsky commented Dec 20, 2016

CCoinsViewCache code cleanup & deduplication

The change moves code responsible for updating the cache out of various
CCoinsViewCache methods and into a Modifier class. This way the cache update
code is just written once in a general way instead of being duplicated and
split up to handle various special cases.

This is a refactoring, with changes to cache behavior only in 2 corner cases
(with corresponding tests in coins_test.cpp) which don't affect the meaning of
data stored in the cache:

  • In BatchWrite, overwriting a non-dirty pruned cache entry with a fresh pruned
    cache entry now deletes the cache entry instead of leaving behind a dirty
    pruned entry that will trigger an unnecessary database write later.

  • In BatchWrite, overwriting a dirty pruned fresh cache entry with a nonpruned
    entry updates the entry without dropping the fresh flag. There's no reason to
    drop the fresh flag in this case because the flag accurately describes the
    state of the base view and could prevent unnecessary database writes in the
    future if the utxo is spent later.

@ryanofsky ryanofsky changed the title CCoinsViewCache code cleanup & deduplication (based on #9107, #9308, #9310) CCoinsViewCache code cleanup & deduplication (based on #9107 & #9310) Dec 21, 2016
@ryanofsky ryanofsky changed the title CCoinsViewCache code cleanup & deduplication (based on #9107 & #9310) CCoinsViewCache code cleanup & deduplication (based on #9310) Jan 4, 2017
@ryanofsky ryanofsky changed the title CCoinsViewCache code cleanup & deduplication (based on #9310) CCoinsViewCache code cleanup & deduplication Jan 11, 2017
@@ -612,7 +612,7 @@ BOOST_AUTO_TEST_CASE(ccoins_access)
CheckAccessCoins(ABSENT, VALUE2, VALUE2, FRESH , FRESH );
CheckAccessCoins(ABSENT, VALUE2, VALUE2, DIRTY , DIRTY );
CheckAccessCoins(ABSENT, VALUE2, VALUE2, DIRTY|FRESH, DIRTY|FRESH);
CheckAccessCoins(PRUNED, ABSENT, PRUNED, NO_ENTRY , FRESH );
CheckAccessCoins(PRUNED, ABSENT, ABSENT, NO_ENTRY , NO_ENTRY );
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explanation of this change: Calling CCoinsViewCache::AccessCoins when no cache entry exists and the base entry is pruned no longer creates a cache entry.

The changed behavior in this case is better than the current behavior because now this case is consistent with the case in line 606 above where no cache entry exists and no base entry exists. It doesn't make any sense for the cache to behave differently just because a base entry is pruned instead of nonexistent.

@@ -826,15 +826,15 @@ BOOST_AUTO_TEST_CASE(ccoins_write)
CheckWriteCoins(PRUNED, ABSENT, PRUNED, DIRTY , NO_ENTRY , DIRTY );
CheckWriteCoins(PRUNED, ABSENT, PRUNED, DIRTY|FRESH, NO_ENTRY , DIRTY|FRESH);
CheckWriteCoins(PRUNED, PRUNED, PRUNED, 0 , DIRTY , DIRTY );
CheckWriteCoins(PRUNED, PRUNED, PRUNED, 0 , DIRTY|FRESH, DIRTY );
CheckWriteCoins(PRUNED, PRUNED, ABSENT, 0 , DIRTY|FRESH, NO_ENTRY );
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explanation of this change: Overwriting a non-dirty pruned cache entry with a fresh pruned cache entry now deletes the cache entry instead of leaving behind a dirty pruned entry that will trigger an unnecessary database write later.

CheckWriteCoins(PRUNED, PRUNED, ABSENT, FRESH , DIRTY , NO_ENTRY );
CheckWriteCoins(PRUNED, PRUNED, ABSENT, FRESH , DIRTY|FRESH, NO_ENTRY );
CheckWriteCoins(PRUNED, PRUNED, PRUNED, DIRTY , DIRTY , DIRTY );
CheckWriteCoins(PRUNED, PRUNED, PRUNED, DIRTY , DIRTY|FRESH, DIRTY );
CheckWriteCoins(PRUNED, PRUNED, ABSENT, DIRTY|FRESH, DIRTY , NO_ENTRY );
CheckWriteCoins(PRUNED, PRUNED, ABSENT, DIRTY|FRESH, DIRTY|FRESH, NO_ENTRY );
CheckWriteCoins(PRUNED, VALUE2, VALUE2, 0 , DIRTY , DIRTY );
CheckWriteCoins(PRUNED, VALUE2, VALUE2, 0 , DIRTY|FRESH, DIRTY );
CheckWriteCoins(PRUNED, VALUE2, VALUE2, 0 , DIRTY|FRESH, DIRTY|FRESH);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explanation of this change: Overwriting a dirty pruned fresh cache entry with a nonpruned entry updates the entry without dropping the fresh flag. There's no reason to drop the fresh flag in this case because the flag accurately describes the state of the base view and could prevent unnecessary database writes in the future if the utxo is spent later.

@ryanofsky
Copy link
Contributor Author

@sipa, this is the PR I mentioned other day. It does move code to the modifier object, but the code could be moved if the modifier object is going away.

@ryanofsky
Copy link
Contributor Author

@sipa, I posted a version of your pertxoutcache branch rebased on top of this PR here:
https://github.com/ryanofsky/bitcoin/commits/pr/pertxoutcache

It might be useful to you even if you aren't interested in this PR because it also updates coins_tests to be compatible with your change.

Relevant commits:

  • 6b547c2 WIP per-txout chainstate – rebased version of your main commit on top of this PR.
  • 5853aed Re-enable and fix coins_test.cpp – coins_test fixes that you can incorporate (regardless of the code refactoring in this PR)
  • 1b8425f Fix wallet CCoinsViewCache::GetCoins call – fix for compile error in wallet caused by ccoins changes

@ryanofsky
Copy link
Contributor Author

Rebased c72de76 -> 2f2d3c8 (pr/ccoins-cleanup.6 -> pr/ccoins-cleanup.7) after #10195 merge.

@sipa
Copy link
Member

sipa commented Mar 6, 2018

Concept ACK

@DrahtBot DrahtBot closed this Jul 20, 2018
@DrahtBot DrahtBot reopened this Jul 20, 2018
}
return true;
coin.Clear();
return !already_spent;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this change (after #10537) would have prevented the inflation bug caused by #9049 + #10195, discussed in
the CVE-2018-17144 full disclosure.

@DrahtBot
Copy link
Contributor

DrahtBot commented Mar 15, 2019

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Reviews

See the guideline for information on the review process.

Type Reviewers
Concept ACK sipa, jonatack

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #26593 (tracing: Only prepare tracepoint arguments when actually tracing by 0xB10C)
  • #26331 (Implement CCoinsViewErrorCatcher::HaveCoin and check disk space periodically by aureleoules)
  • #17487 (coins: allow write to disk without cache drop by jamesob)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@DrahtBot DrahtBot closed this Apr 28, 2019
@DrahtBot
Copy link
Contributor

The last travis run for this pull request was 281 days ago and is thus outdated. To trigger a fresh travis build, this pull request should be closed and re-opened.

@ryanofsky
Copy link
Contributor Author

ryanofsky commented Apr 27, 2020

The change moves code responsible for updating the cache out of various
CCoinsViewCache methods and into a Modifier class. This way the cache update
code is just written once in a general way instead of being duplicated and
split up to handle various special cases.

This is a refactoring, with changes to cache behavior only in 2 corner cases
(with corresponding tests in coins_test.cpp) which don't affect the meaning of
data stored in the cache:

* In BatchWrite, overwriting a non-dirty pruned cache entry with a fresh pruned
  cache entry now deletes the cache entry instead of leaving behind a dirty
  pruned entry that will trigger an unnecessary database write later.

* In BatchWrite, overwriting a dirty pruned fresh cache entry with a nonpruned
  entry updates the entry without dropping the fresh flag. There's no reason to
  drop the fresh flag in this case because the flag accurately describes the
  state of the base view and could prevent unnecessary database writes in the
  future if the utxo is spent later.
uvhw added a commit to uvhw/Bitcoin-Foundation that referenced this pull request Feb 14, 2022
Master-headers-dns (bitcoin/bitcoin#15934) del (bitcoin/bitcoin#15934) ipc-export (bitcoin/bitcoin#15934) pr/= (bitcoin/bitcoin#15934) pr/argcheck (bitcoin/bitcoin#16545, bitcoin/bitcoin#15934) pr/argcheck.12-rebase (bitcoin/bitcoin#15934) pr/argcheck.18-rebase (bitcoin/bitcoin#15934) pr/argcheck.19-rebase (bitcoin/bitcoin#15934) pr/argcheck.20-rebase (bitcoin/bitcoin#15934) pr/argcheck.21-rebase (bitcoin/bitcoin#15934) pr/argcheck.22-rebase (bitcoin/bitcoin#15934) pr/argcheck.24-rebase (bitcoin/bitcoin#15934) pr/argcheck.25-rebase (bitcoin/bitcoin#15934) pr/argcheck.26-rebase (bitcoin/bitcoin#15934) pr/argmap (bitcoin/bitcoin#15934) pr/argscripts (bitcoin/bitcoin#15934) pr/argscripts.1-rebase (bitcoin/bitcoin#15934) pr/argscripts.3-rebase (bitcoin/bitcoin#15934) pr/argscripts.5-rebase (bitcoin/bitcoin#15934) pr/argscripts.7-rebase (bitcoin/bitcoin#15934) pr/atw-nomerge (bitcoin/bitcoin#15934) pr/atw-nomerge.74-rebase (bitcoin/bitcoin#15934) pr/atw-nomerge.76-rebase (bitcoin/bitcoin#15934) pr/atw-nomerge.77-rebase (bitcoin/bitcoin#15934) pr/atw-nomerge.78-rebase (bitcoin/bitcoin#15934) pr/badbdb (bitcoin/bitcoin#20974, bitcoin/bitcoin#15934) pr/badsalv (bitcoin/bitcoin#15934) pr/block (bitcoin/bitcoin#15934) pr/block.1-rebase (bitcoin/bitcoin#15934) pr/bp (bitcoin/bitcoin#15934) pr/capconst (bitcoin/bitcoin#15934) pr/cblock (bitcoin/bitcoin#15934) pr/ccoins-cleanup (bitcoin/bitcoin#9384, bitcoin/bitcoin#15934) pr/ccoins-cleanup.12-rebase (bitcoin/bitcoin#15934) pr/ccoins-cleanup.13-rebase (bitcoin/bitcoin#15934) pr/ccoins-cleanup.14-rebase (bitcoin/bitcoin#15934) pr/ccoins-cleanup.16-rebase (bitcoin/bitcoin#15934) pr/cleanset (bitcoin/bitcoin#15934) pr/commoninit (bitcoin/bitcoin#15934) pr/create (bitcoin/bitcoin#15934) pr/create.1-rebase (bitcoin/bitcoin#15934) pr/defw (bitcoin/bitcoin#15934) pr/dep-libevent (bitcoin/bitcoin#15934) pr/ensa (bitcoin/bitcoin#15934) pr/ensa.1-rebase (bitcoin/bitcoin#15934) pr/exist (bitcoin/bitcoin#15934) pr/exist.1-rebase (bitcoin/bitcoin#15934) pr/exist.2-rebase (bitcoin/bitcoin#15934) pr/exist.3-rebase (bitcoin/bitcoin#15934) pr/fee (bitcoin/bitcoin#10443, bitcoin/bitcoin#15934) pr/fee.49-rebase (bitcoin/bitcoin#15934) pr/fee.50-rebase (bitcoin/bitcoin#15934) pr/fee.51-rebase (bitcoin/bitcoin#15934) pr/fee.52-rebase (bitcoin/bitcoin#15934) pr/fee.56-rebase (bitcoin/bitcoin#15934) pr/fee.57-rebase (bitcoin/bitcoin#15934) pr/fee.58-rebase (bitcoin/bitcoin#15934) pr/fee.59-rebase (bitcoin/bitcoin#15934) pr/fee.60-rebase (bitcoin/bitcoin#15934) pr/fee.62-rebase (bitcoin/bitcoin#15934) pr/fee.63-rebase (bitcoin/bitcoin#15934) pr/fee.64-rebase (bitcoin/bitcoin#15934) pr/fee.65-rebase (bitcoin/bitcoin#15934) pr/fee.66-rebase (bitcoin/bitcoin#15934) pr/fee.67-rebase (bitcoin/bitcoin#15934) pr/fee.68-rebase (bitcoin/bitcoin#15934) pr/fee.69-rebase (bitcoin/bitcoin#15934) pr/fixref (bitcoin/bitcoin#15934) pr/frpc (bitcoin/bitcoin#15934) pr/frpc.1-rebase (bitcoin/bitcoin#15934) pr/frpc.3-rebase (bitcoin/bitcoin#15934) pr/frpc.5-rebase (bitcoin/bitcoin#15934) pr/frpc.6-rebase (bitcoin/bitcoin#15934) pr/frpc.7-rebase (bitcoin/bitcoin#15934) pr/fsd (bitcoin/bitcoin#15934) pr/getblock (bitcoin/bitcoin#15934) pr/green (bitcoin/bitcoin#15934) pr/grind (bitcoin/bitcoin#15934) pr/gsync (bitcoin/bitcoin#15934) pr/guishut (bitcoin/bitcoin#15934) pr/indexy (bitcoin/bitcoin#24230, bitcoin/bitcoin#15934) pr/indexy.1-rebase (bitcoin/bitcoin#15934) pr/initc (bitcoin/bitcoin#15934) pr/intarg (bitcoin/bitcoin#15934) pr/intarg.1-rebase (bitcoin/bitcoin#15934) pr/intarg.2-rebase (bitcoin/bitcoin#15934) pr/ipc (bitcoin/bitcoin#10102, bitcoin/bitcoin#15934) pr/ipc-bal (bitcoin/bitcoin#15934) pr/ipc-bal.1-rebase (bitcoin/bitcoin#15934) pr/ipc-bal.3-rebase (bitcoin/bitcoin#15934) pr/ipc-banmap (bitcoin/bitcoin#15934) pr/ipc-banmap.1-rebase (bitcoin/bitcoin#15934) pr/ipc-blob (bitcoin/bitcoin#15934) pr/ipc-broadcast (bitcoin/bitcoin#15934) pr/ipc-build (bitcoin/bitcoin#15934) pr/ipc-build.13-rebase (bitcoin/bitcoin#15934) pr/ipc-build.22-rebase (bitcoin/bitcoin#15934) pr/ipc-build2 (bitcoin/bitcoin#15934) pr/ipc-build2.5-rebase (bitcoin/bitcoin#15934) pr/ipc-build2.7-rebase (bitcoin/bitcoin#15934) pr/ipc-client (bitcoin/bitcoin#15934) pr/ipc-clients (bitcoin/bitcoin#15934) pr/ipc-clients.1-rebase (bitcoin/bitcoin#15934) pr/ipc-connect (bitcoin/bitcoin#19460, bitcoin/bitcoin#15934) pr/ipc-connect.10-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.11-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.12-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.13-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.14-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.15-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.16-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.17-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.18-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.19-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.2-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.20-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.21-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.22-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.23-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.24-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.25-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.26-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.27-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.3-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.4-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.5-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.6-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.7-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.8-rebase (bitcoin/bitcoin#15934) pr/ipc-connect.9-rebase (bitcoin/bitcoin#15934) pr/ipc-conv (bitcoin/bitcoin#15934) pr/ipc-conv.3-rebase (bitcoin/bitcoin#15934) pr/ipc-conv.5-rebase (bitcoin/bitcoin#15934) pr/ipc-conv.6-rebase (bitcoin/bitcoin#15934) pr/ipc-count (bitcoin/bitcoin#15934) pr/ipc-ctx (bitcoin/bitcoin#15934) pr/ipc-echo (bitcoin/bitcoin#15934) pr/ipc-echo.10-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.11-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.12-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.13-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.18-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.19-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.20-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.21-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.22-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.23-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.26-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.28-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.29-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.3-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.30-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.5-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.6-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.7-rebase (bitcoin/bitcoin#15934) pr/ipc-echo.9-rebase (bitcoin/bitcoin#15934) pr/ipc-fill (bitcoin/bitcoin#15934) pr/ipc-found (bitcoin/bitcoin#15934) pr/ipc-gui (bitcoin/bitcoin#19461, bitcoin/bitcoin#15934) pr/ipc-gui.1-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.10-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.11-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.12-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.13-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.14-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.15-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.16-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.17-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.2-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.4-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.5-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.6-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.7-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.8-rebase (bitcoin/bitcoin#15934) pr/ipc-gui.9-rebase (bitcoin/bitcoin#15934) pr/ipc-init (bitcoin/bitcoin#15934) pr/ipc-make (bitcoin/bitcoin#15934) pr/ipc-make.1-rebase (bitcoin/bitcoin#15934) pr/ipc-make.4-rebase (bitcoin/bitcoin#15934) pr/ipc-make.5-rebase (bitcoin/bitcoin#15934) pr/ipc-mv (bitcoin/bitcoin#15934) pr/ipc-rpath (bitcoin/bitcoin#15934) pr/ipc-sargs (bitcoin/bitcoin#15934) pr/ipc-signer (bitcoin/bitcoin#15934) pr/ipc-signer.1-rebase (bitcoin/bitcoin#15934) pr/ipc-tapc (bitcoin/bitcoin#15934) pr/ipc-txup (bitcoin/bitcoin#15934) pr/ipc-wset (bitcoin/bitcoin#15934) pr/ipc.100-rebase (bitcoin/bitcoin#15934) pr/ipc.102-rebase (bitcoin/bitcoin#15934) pr/ipc.103-rebase (bitcoin/bitcoin#15934) pr/ipc.104-rebase (bitcoin/bitcoin#15934) pr/ipc.106-rebase (bitcoin/bitcoin#15934) pr/ipc.108-rebase (bitcoin/bitcoin#15934) pr/ipc.109-rebase (bitcoin/bitcoin#15934) pr/ipc.110-rebase (bitcoin/bitcoin#15934) pr/ipc.112-rebase (bitcoin/bitcoin#15934) pr/ipc.113-rebase (bitcoin/bitcoin#15934) pr/ipc.115-rebase (bitcoin/bitcoin#15934) pr/ipc.116-rebase (bitcoin/bitcoin#15934) pr/ipc.118-rebase (bitcoin/bitcoin#15934) pr/ipc.119-rebase (bitcoin/bitcoin#15934) pr/ipc.120-rebase (bitcoin/bitcoin#15934) pr/ipc.121-rebase (bitcoin/bitcoin#15934) pr/ipc.123-rebase (bitcoin/bitcoin#15934) pr/ipc.124-rebase (bitcoin/bitcoin#15934) pr/ipc.125-rebase (bitcoin/bitcoin#15934) pr/ipc.129-rebase (bitcoin/bitcoin#15934) pr/ipc.130-rebase (bitcoin/bitcoin#15934) pr/ipc.131-rebase (bitcoin/bitcoin#15934) pr/ipc.133-rebase (bitcoin/bitcoin#15934) pr/ipc.134-rebase (bitcoin/bitcoin#15934) pr/ipc.137-rebase (bitcoin/bitcoin#15934) pr/ipc.138-rebase (bitcoin/bitcoin#15934) pr/ipc.139-rebase (bitcoin/bitcoin#15934) pr/ipc.140-rebase (bitcoin/bitcoin#15934) pr/ipc.141-rebase (bitcoin/bitcoin#15934) pr/ipc.142-rebase (bitcoin/bitcoin#15934) pr/ipc.143-rebase (bitcoin/bitcoin#15934) pr/ipc.144-rebase (bitcoin/bitcoin#15934) pr/ipc.145-rebase (bitcoin/bitcoin#15934) pr/ipc.146-rebase (bitcoin/bitcoin#15934) pr/ipc.147-rebase (bitcoin/bitcoin#15934) pr/ipc.148-rebase (bitcoin/bitcoin#15934) pr/ipc.149-rebase (bitcoin/bitcoin#15934) pr/ipc.150-rebase (bitcoin/bitcoin#15934) pr/ipc.152-rebase (bitcoin/bitcoin#15934) pr/ipc.153-rebase (bitcoin/bitcoin#15934) pr/ipc.154-rebase (bitcoin/bitcoin#15934) pr/ipc.155-rebase (bitcoin/bitcoin#15934) pr/ipc.156-rebase (bitcoin/bitcoin#15934) pr/ipc.157-rebase (bitcoin/bitcoin#15934) pr/ipc.158-rebase (bitcoin/bitcoin#15934) pr/ipc.159-rebase (bitcoin/bitcoin#15934) pr/ipc.160-rebase (bitcoin/bitcoin#15934) pr/ipc.161-rebase (bitcoin/bitcoin#15934) pr/ipc.162-rebase (bitcoin/bitcoin#15934) pr/ipc.164-rebase (bitcoin/bitcoin#15934) pr/ipc.165-rebase (bitcoin/bitcoin#15934) pr/ipc.167-rebase (bitcoin/bitcoin#15934) pr/ipc.169-rebase (bitcoin/bitcoin#15934) pr/ipc.170-rebase (bitcoin/bitcoin#15934) pr/ipc.171-rebase (bitcoin/bitcoin#15934) pr/ipc.172-rebase (bitcoin/bitcoin#15934) pr/libnode (bitcoin/bitcoin#15934) pr/loader (bitcoin/bitcoin#15934) pr/locka (bitcoin/bitcoin#15934) pr/locka.1-rebase (bitcoin/bitcoin#15934) pr/lockb (bitcoin/bitcoin#15934) pr/macs (bitcoin/bitcoin#15934) pr/mergeset (bitcoin/bitcoin#15934) pr/named (bitcoin/bitcoin#19762, bitcoin/bitcoin#15934) pr/names (bitcoin/bitcoin#15934) pr/names.10-rebase (bitcoin/bitcoin#15934) pr/names.11-rebase (bitcoin/bitcoin#15934) pr/names.13-rebase (bitcoin/bitcoin#15934) pr/names.15-rebase (bitcoin/bitcoin#15934) pr/names.2-rebase (bitcoin/bitcoin#15934) pr/names.3-rebase (bitcoin/bitcoin#15934) pr/names.4-rebase (bitcoin/bitcoin#15934) pr/names.5-rebase (bitcoin/bitcoin#15934) pr/names.6-rebase (bitcoin/bitcoin#15934) pr/names.7-rebase (bitcoin/bitcoin#15934) pr/names.8-rebase (bitcoin/bitcoin#15934) pr/names.9-rebase (bitcoin/bitcoin#15934) pr/next (bitcoin/bitcoin#15934) pr/next.4-rebase (bitcoin/bitcoin#15934) pr/next.5-rebase (bitcoin/bitcoin#15934) pr/next.6-rebase (bitcoin/bitcoin#15934) pr/nodest (bitcoin/bitcoin#15934) pr/nodest.10-rebase (bitcoin/bitcoin#15934) pr/nodest.11-rebase (bitcoin/bitcoin#15934) pr/nodest.12-rebase (bitcoin/bitcoin#15934) pr/nodest.13-rebase (bitcoin/bitcoin#15934) pr/nodest.2-rebase (bitcoin/bitcoin#15934) pr/nodest.3-rebase (bitcoin/bitcoin#15934) pr/nodest.4-rebase (bitcoin/bitcoin#15934) pr/nodest.5-rebase (bitcoin/bitcoin#15934) pr/nodest.6-rebase (bitcoin/bitcoin#15934) pr/nodest.7-rebase (bitcoin/bitcoin#15934) pr/nodest.9-rebase (bitcoin/bitcoin#15934) pr/nodestg (bitcoin/bitcoin#15934) pr/nonot (bitcoin/bitcoin#15934) pr/nosig (bitcoin/bitcoin#15934) pr/notify-shared (bitcoin/bitcoin#15934) pr/novp (bitcoin/bitcoin#15934) pr/novp.1-rebase (bitcoin/bitcoin#15934) pr/novp.10-rebase (bitcoin/bitcoin#15934) pr/novp.11-rebase (bitcoin/bitcoin#15934) pr/novp.12-rebase (bitcoin/bitcoin#15934) pr/novp.13-rebase (bitcoin/bitcoin#15934) pr/novp.14-rebase (bitcoin/bitcoin#15934) pr/novp.15-rebase (bitcoin/bitcoin#15934) pr/novp.16-rebase (bitcoin/bitcoin#15934) pr/novp.17-rebase (bitcoin/bitcoin#15934) pr/novp.19-rebase (bitcoin/bitcoin#15934) pr/novp.2-rebase (bitcoin/bitcoin#15934) pr/novp.20-rebase (bitcoin/bitcoin#15934) pr/novp.21-rebase (bitcoin/bitcoin#15934) pr/novp.22-rebase (bitcoin/bitcoin#15934) pr/novp.23-rebase (bitcoin/bitcoin#15934) pr/novp.25-rebase (bitcoin/bitcoin#15934) pr/novp.26-rebase (bitcoin/bitcoin#15934) pr/novp.27-rebase (bitcoin/bitcoin#15934) pr/novp.28-rebase (bitcoin/bitcoin#15934) pr/novp.3-rebase (bitcoin/bitcoin#15934) pr/novp.4-rebase (bitcoin/bitcoin#15934) pr/novp.5-rebase (bitcoin/bitcoin#15934) pr/novp.6-rebase (bitcoin/bitcoin#15934) pr/novp.7-rebase (bitcoin/bitcoin#15934) pr/novp.8-rebase (bitcoin/bitcoin#15934) pr/novp.9-rebase (bitcoin/bitcoin#15934) pr/nowa (bitcoin/bitcoin#15934) pr/nowa.3-rebase (bitcoin/bitcoin#15934) pr/path (bitcoin/bitcoin#15934) pr/path.2-rebase (bitcoin/bitcoin#15934) pr/path.4-rebase (bitcoin/bitcoin#15934) pr/path.5-rebase (bitcoin/bitcoin#15934) pr/path.6-rebase (bitcoin/bitcoin#15934) pr/path.7-rebase (bitcoin/bitcoin#15934) pr/path.8-rebase (bitcoin/bitcoin#15934) pr/patharg (bitcoin/bitcoin#24306, bitcoin/bitcoin#15934) pr/pollbug (bitcoin/bitcoin#15934) pr/pool (bitcoin/bitcoin#15719, bitcoin/bitcoin#15934) pr/pool.10-rebase (bitcoin/bitcoin#15934) pr/pool.11-rebase (bitcoin/bitcoin#15934) pr/pool.12-rebase (bitcoin/bitcoin#15934) pr/pool.13-rebase (bitcoin/bitcoin#15934) pr/pool.14-rebase (bitcoin/bitcoin#15934) pr/pool.16-rebase (bitcoin/bitcoin#15934) pr/pool.19-rebase (bitcoin/bitcoin#15934) pr/pool.20-rebase (bitcoin/bitcoin#15934) pr/pool.21-rebase (bitcoin/bitcoin#15934) pr/pool.23-rebase (bitcoin/bitcoin#15934) pr/pool.26-rebase (bitcoin/bitcoin#15934) pr/pool.27-rebase (bitcoin/bitcoin#15934) pr/pool.28-rebase (bitcoin/bitcoin#15934) pr/pool.29-rebase (bitcoin/bitcoin#15934) pr/pool.30-rebase (bitcoin/bitcoin#15934) pr/pool.31-rebase (bitcoin/bitcoin#15934) pr/pool.32-rebase (bitcoin/bitcoin#15934) pr/pool.35-rebase (bitcoin/bitcoin#15934) pr/pool.36-rebase (bitcoin/bitcoin#15934) pr/pool.37-rebase (bitcoin/bitcoin#15934) pr/pool.38-rebase (bitcoin/bitcoin#15934) pr/pool.39-rebase (bitcoin/bitcoin#15934) pr/pool.40-rebase (bitcoin/bitcoin#15934) pr/pool.7-rebase (bitcoin/bitcoin#15934) pr/pool.8-rebase (bitcoin/bitcoin#15934) pr/pool.9-rebase (bitcoin/bitcoin#15934) pr/provide (bitcoin/bitcoin#15934) pr/provide.1-rebase (bitcoin/bitcoin#15934) pr/qtset (bitcoin/bitcoin#15936, bitcoin/bitcoin#15934) pr/qtset.10-rebase (bitcoin/bitcoin#15934) pr/qtset.11-rebase (bitcoin/bitcoin#15934) pr/qtset.12-rebase (bitcoin/bitcoin#15934) pr/qtset.15-rebase (bitcoin/bitcoin#15934) pr/qtset.16-rebase (bitcoin/bitcoin#15934) pr/qtset.17-rebase (bitcoin/bitcoin#15934) pr/qtset.19-rebase (bitcoin/bitcoin#15934) pr/qtset.20-rebase (bitcoin/bitcoin#15934) pr/qtset.21-rebase (bitcoin/bitcoin#15934) pr/qtset.22-rebase (bitcoin/bitcoin#15934) pr/qtset.23-rebase (bitcoin/bitcoin#15934) pr/qtset.25-rebase (bitcoin/bitcoin#15934) pr/qtset.26-rebase (bitcoin/bitcoin#15934) pr/qtset.27-rebase (bitcoin/bitcoin#15934) pr/qtset.5-rebase (bitcoin/bitcoin#15934) pr/qtset.7-rebase (bitcoin/bitcoin#15934) pr/qtset.8-rebase (bitcoin/bitcoin#15934) pr/qtset.9-rebase (bitcoin/bitcoin#15934) pr/qtwd (bitcoin/bitcoin#15934) pr/qtx (bitcoin/bitcoin#15934) pr/qtx.3-rebase (bitcoin/bitcoin#15934) pr/qtx.4-rebase (bitcoin/bitcoin#15934) pr/qtx.5-rebase (bitcoin/bitcoin#15934) pr/qtx.7-rebase (bitcoin/bitcoin#15934) pr/reconstruct (bitcoin/bitcoin#15934) pr/rev (bitcoin/bitcoin#15934) pr/rev.1-rebase (bitcoin/bitcoin#15934) pr/rwset (bitcoin/bitcoin#15934) pr/rwset.10-rebase (bitcoin/bitcoin#15934) pr/rwset.12-rebase (bitcoin/bitcoin#15934) pr/rwset.13-rebase (bitcoin/bitcoin#15934) pr/rwset.5-rebase (bitcoin/bitcoin#15934) pr/rwset.6-rebase (bitcoin/bitcoin#15934) pr/sfix (bitcoin/bitcoin#15934) pr/simpreq (bitcoin/bitcoin#15934) pr/simpreq.1-rebase (bitcoin/bitcoin#15934) pr/sql (bitcoin/bitcoin#15934) pr/sql-orig (bitcoin/bitcoin#15934) pr/sql.2-rebase (bitcoin/bitcoin#15934) pr/sql.3-rebase (bitcoin/bitcoin#15934) pr/sql.4-rebase (bitcoin/bitcoin#15934) pr/stdfs (bitcoin/bitcoin#15934) pr/subfee (bitcoin/bitcoin#15934) pr/subfee.3-rebase (bitcoin/bitcoin#15934) pr/subfee.5-rebase (bitcoin/bitcoin#15934) pr/sysroot (bitcoin/bitcoin#15934) pr/throt (bitcoin/bitcoin#15934) pr/txfun (bitcoin/bitcoin#15934) pr/txfun.1-rebase (bitcoin/bitcoin#15934) pr/txfun.2-rebase (bitcoin/bitcoin#15934) pr/txfun.3-rebase (bitcoin/bitcoin#15934) pr/txfun.4-rebase (bitcoin/bitcoin#15934) pr/txfun.5-rebase (bitcoin/bitcoin#15934) pr/txfun.6-rebase (bitcoin/bitcoin#15934) pr/txmove (bitcoin/bitcoin#15934) pr/txmove.1-rebase (bitcoin/bitcoin#15934) pr/txmove.2-rebase (bitcoin/bitcoin#15934) pr/txmove.3-rebase (bitcoin/bitcoin#15934) pr/txmove.4-rebase (bitcoin/bitcoin#15934) pr/txmove.5-rebase (bitcoin/bitcoin#15934) pr/txmove.6-rebase (bitcoin/bitcoin#15934) pr/txmove.7-rebase (bitcoin/bitcoin#15934) pr/txmove.8-rebase (bitcoin/bitcoin#15934) pr/txstate (bitcoin/bitcoin#15934) pr/txstate.10-rebase (bitcoin/bitcoin#15934) pr/txstate.11-rebase (bitcoin/bitcoin#15934) pr/txstate.12-rebase (bitcoin/bitcoin#15934) pr/txstate.13-rebase (bitcoin/bitcoin#15934) pr/txstate.14-rebase (bitcoin/bitcoin#15934) pr/txstate.16-rebase (bitcoin/bitcoin#15934) pr/txstate.17-rebase (bitcoin/bitcoin#15934) pr/txstate.18-rebase (bitcoin/bitcoin#15934) pr/txstate.19-rebase (bitcoin/bitcoin#15934) pr/txstate.2-rebase (bitcoin/bitcoin#15934) pr/txstate.20-rebase (bitcoin/bitcoin#15934) pr/txstate.21-rebase (bitcoin/bitcoin#15934) pr/txstate.22-rebase (bitcoin/bitcoin#15934) pr/txstate.23-rebase (bitcoin/bitcoin#15934) pr/txstate.24-rebase (bitcoin/bitcoin#15934) pr/txstate.3-rebase (bitcoin/bitcoin#15934) pr/txstate.4-rebase (bitcoin/bitcoin#15934) pr/txstate.5-rebase (bitcoin/bitcoin#15934) pr/txstate.6-rebase (bitcoin/bitcoin#15934) pr/txstate.7-rebase (bitcoin/bitcoin#15934) pr/txstate.8-rebase (bitcoin/bitcoin#15934) pr/txstate.9-rebase (bitcoin/bitcoin#15934) pr/txwait (bitcoin/bitcoin#15934) pr/u8path (bitcoin/bitcoin#15934) pr/u8path.1-rebase (bitcoin/bitcoin#15934) pr/u8path.11-rebase (bitcoin/bitcoin#15934) pr/u8path.15-rebase (bitcoin/bitcoin#15934) pr/u8path.16-rebase (bitcoin/bitcoin#15934) pr/unlock (bitcoin/bitcoin#15934) pr/unlock.12-rebase (bitcoin/bitcoin#15934) pr/unlock.13-rebase (bitcoin/bitcoin#15934) pr/unlock.15-rebase (bitcoin/bitcoin#15934) pr/valfix (bitcoin/bitcoin#15934) pr/walset (bitcoin/bitcoin#15934) pr/walset.10-rebase (bitcoin/bitcoin#15934) pr/walset.11-rebase (bitcoin/bitcoin#15934) pr/walset.12-rebase (bitcoin/bitcoin#15934) pr/walset.13-rebase (bitcoin/bitcoin#15934) pr/walset.15-rebase (bitcoin/bitcoin#15934) pr/walset.6-rebase (bitcoin/bitcoin#15934) pr/walset.8-rebase (bitcoin/bitcoin#15934) pr/walset.9-rebase (bitcoin/bitcoin#15934) pr/wargs (bitcoin/bitcoin#15934) pr/wc (bitcoin/bitcoin#15934) pr/wclient (bitcoin/bitcoin#15934) pr/wclient.1-rebase (bitcoin/bitcoin#15934) pr/wclient.10-rebase (bitcoin/bitcoin#15934) pr/wclient.11-rebase (bitcoin/bitcoin#15934) pr/wclient.2-rebase (bitcoin/bitcoin#15934) pr/wclient.3-rebase (bitcoin/bitcoin#15934) pr/wclient.4-rebase (bitcoin/bitcoin#15934) pr/wclient.5-rebase (bitcoin/bitcoin#15934) pr/wclient.6-rebase (bitcoin/bitcoin#15934) pr/wclient.7-rebase (bitcoin/bitcoin#15934) pr/wclient.8-rebase (bitcoin/bitcoin#15934) pr/wclient.9-rebase (bitcoin/bitcoin#15934) pr/wdlist (bitcoin/bitcoin#17580, bitcoin/bitcoin#15934) pr/wdlist.10-rebase (bitcoin/bitcoin#15934) pr/wdlist.11-rebase (bitcoin/bitcoin#15934) pr/wdlist.3-rebase (bitcoin/bitcoin#15934) pr/wdlist.4-rebase (bitcoin/bitcoin#15934) pr/wdlist.6-rebase (bitcoin/bitcoin#15934) pr/wdlist.7-rebase (bitcoin/bitcoin#15934) pr/wdlist.9-rebase (bitcoin/bitcoin#15934) pr/wdmult (bitcoin/bitcoin#17493, bitcoin/bitcoin#15934) pr/wdmult.4-rebase (bitcoin/bitcoin#15934) pr/wdmult.5-rebase (bitcoin/bitcoin#15934) pr/wdmult.6-rebase (bitcoin/bitcoin#15934) pr/wdmult.7-rebase (bitcoin/bitcoin#15934) pr/wdnolist (bitcoin/bitcoin#17783, bitcoin/bitcoin#15934) pr/wdnolist.1-rebase (bitcoin/bitcoin#15934) pr/wdnolist.2-rebase (bitcoin/bitcoin#15934) pr/wdnolist.3-rebase (bitcoin/bitcoin#15934) pr/wdnolist.6-rebase (bitcoin/bitcoin#15934) pr/wdnolist.7-rebase (bitcoin/bitcoin#15934) pr/wdpy (bitcoin/bitcoin#15934) pr/wdpy.2-rebase (bitcoin/bitcoin#15934) pr/wdpy.4-rebase (bitcoin/bitcoin#15934) pr/wdqual (bitcoin/bitcoin#15934) pr/wdrev (bitcoin/bitcoin#17581, bitcoin/bitcoin#15934) pr/wdrev.2-rebase (bitcoin/bitcoin#15934) pr/wdrev.3-rebase (bitcoin/bitcoin#15934) pr/wdrev.4-rebase (bitcoin/bitcoin#15934) pr/wdrev.5-rebase (bitcoin/bitcoin#15934) pr/wdrev.6-rebase (bitcoin/bitcoin#15934) pr/wp (bitcoin/bitcoin#15934) review.13339.5-edit (bitcoin/bitcoin#15934) review.15454.2-edit (bitcoin/bitcoin#15934) review.15454.8-edit (bitcoin/bitcoin#15934) review.16426.4-edit (bitcoin/bitcoin#15934) review.16426.5-edit (bitcoin/bitcoin#15934) review.17373.6-fix (bitcoin/bitcoin#15934) review.17681.2-edit (bitcoin/bitcoin#15934) review.18112.2-edit (bitcoin/bitcoin#15934) review.18338.1-edit (bitcoin/bitcoin#15934) review.18551.1-edit (bitcoin/bitcoin#15934) review.18907.1-edit (bitcoin/bitcoin#15934) review.18926.1-edit (bitcoin/bitcoin#15934) review.19503.2-edit (bitcoin/bitcoin#15934) review.20459.1-edit (bitcoin/bitcoin#15934) review.20744.7-edit (bitcoin/bitcoin#15934) review.22928.1-edit (bitcoin/bitcoin#15934) review.23280.3-edit (bitcoin/bitcoin#15934) review.23732.2-edit (bitcoin/bitcoin#15934)
@maflcko
Copy link
Member

maflcko commented Feb 22, 2022

fuzz: test/fuzz/coins_view.cpp:140: auto coins_view_fuzz_target(FuzzBufferType)::(anonymous class)::operator()() const: Assertion `expected_code_path' failed.

@DrahtBot
Copy link
Contributor

🐙 This pull request conflicts with the target branch and needs rebase.

@jonatack
Copy link
Contributor

Concept ACK, please ping me to review when you rebase.

@achow101 achow101 closed this Apr 25, 2023
@bitcoin bitcoin locked and limited conversation to collaborators Apr 24, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants