From 6054797dc747ba2f73e1e949a3f69f6d88c3a7c5 Mon Sep 17 00:00:00 2001 From: Valentin Balaschenko <13349202+vlntb@users.noreply.github.com> Date: Tue, 7 Jul 2026 17:06:11 +0100 Subject: [PATCH] added XRPL_ASSERTs to enable fuzzing/chaos testing --- include/xrpl/basics/TaggedCache.ipp | 5 +++++ src/xrpld/app/ledger/LedgerHistory.cpp | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/include/xrpl/basics/TaggedCache.ipp b/include/xrpl/basics/TaggedCache.ipp index 9dc495218e..9b7a72d255 100644 --- a/include/xrpl/basics/TaggedCache.ipp +++ b/include/xrpl/basics/TaggedCache.ipp @@ -3,6 +3,7 @@ #include #include // IWYU pragma: keep #include +#include namespace xrpl { @@ -673,6 +674,10 @@ TaggedCache(); canonicalize(key, entry, [](SharedPointerType const&) { return false; }); + XRPL_ASSERT( + entry != nullptr, + "xrpl::TaggedCache::fetchAndModify : entry present after canonicalize"); + callback(*entry); } diff --git a/src/xrpld/app/ledger/LedgerHistory.cpp b/src/xrpld/app/ledger/LedgerHistory.cpp index 731d1295f5..27b9e7a507 100644 --- a/src/xrpld/app/ledger/LedgerHistory.cpp +++ b/src/xrpld/app/ledger/LedgerHistory.cpp @@ -504,6 +504,9 @@ LedgerHistory::validatedLedger( consensusValidated_.fetchAndModify(index, [&](CvEntry& entry) { if (entry.built && !entry.validated) { + XRPL_ASSERT( + entry.consensus.has_value(), + "xrpl::LedgerHistory::validatedLedger : consensus set when built set"); if (entry.built.value() != hash) { JLOG(j_.error()) << "MISMATCH: seq=" << index << " built:" << entry.built.value() @@ -597,6 +600,10 @@ LedgerHistory::clearLedgerCachePrior(LedgerIndex seq) } } indexSize = lock->byIndex.size(); + + XRPL_ASSERT( + lock->byIndex.empty() || lock->byIndex.begin()->first >= seq, + "xrpl::LedgerHistory::clearLedgerCachePrior : byIndex pruned to seq"); } JLOG(j_.debug()) << "LedgersByHash: cleared " << hashesCleared << " entries before seq " << seq