fuzz: add coins_view_stacked fuzz harness to test concurrent leveldb reads

This commit is contained in:
Andrew Toth
2026-03-13 13:32:12 -04:00
parent ce610a6ff4
commit 0e10937184

View File

@@ -449,3 +449,25 @@ FUZZ_TARGET(coins_view_overlay, .init = initialize_coins_view) EXCLUSIVE_LOCKS_R
const auto reset_guard{coins_view_cache.StartFetching(block)};
TestCoinsView(fuzzed_data_provider, coins_view_cache, &backend_cache);
}
FUZZ_TARGET(coins_view_stacked, .init = initialize_coins_view) EXCLUSIVE_LOCKS_REQUIRED(!g_thread_pool_mutex)
{
SeedRandomStateForTest(SeedRand::ZEROS); // for SaltedTxidHasher
StartPoolIfNeeded();
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
auto db_params = DBParams{
.path = "",
.cache_bytes = 1_MiB,
.memory_only = true,
};
CCoinsViewDB backend_base_coins_view{std::move(db_params), CoinsViewOptions{}};
CCoinsViewCache backend_cache{&backend_base_coins_view, /*deterministic=*/true};
TestCoinsView(fuzzed_data_provider, backend_cache, &backend_base_coins_view);
CoinsViewOverlay coins_view_cache{&backend_cache, g_thread_pool, /*deterministic=*/true};
CBlock block{BuildRandomBlock(fuzzed_data_provider, backend_base_coins_view)};
{
const auto reset_guard{coins_view_cache.StartFetching(block)};
TestCoinsView(fuzzed_data_provider, coins_view_cache, &backend_cache);
}
TestCoinsView(fuzzed_data_provider, backend_cache, &backend_base_coins_view);
}