Diff to reproduce (turns UB into a runtime exception):
 0diff --git a/src/test/fuzz/rbf.cpp b/src/test/fuzz/rbf.cpp
 1index 3e5b361186..74099f770d 100644
 2--- a/src/test/fuzz/rbf.cpp
 3+++ b/src/test/fuzz/rbf.cpp
 4@@ -118,7 +118,7 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
 5     }
 6     assert(iter <= g_outpoints.size());
 7     replacement_tx->vin.resize(1);
 8-    replacement_tx->vin[0].prevout = g_outpoints[iter++];
 9+    replacement_tx->vin[0].prevout = g_outpoints.at(iter++);
10     CTransaction replacement_tx_final{*replacement_tx};
11     auto replacement_entry = ConsumeTxMemPoolEntry(fuzzed_data_provider, replacement_tx_final);
12     int32_t replacement_vsize = replacement_entry.GetTxSize();
13@@ -132,7 +132,7 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
14         CMutableTransaction parent;
15         assert(iter <= g_outpoints.size());
16         parent.vin.resize(1);
17-        parent.vin[0].prevout = g_outpoints[iter++];
18+        parent.vin[0].prevout = g_outpoints.at(iter++);
19         parent.vout.emplace_back(0, CScript());
20 
21         mempool_txs.emplace_back(parent);
Input to reproduce:
Command to reproduce:
0$ FUZZ=package_rbf ./bld-cmake/bin/fuzz ./package_rbf.crash.not.txt 
1
2terminate called after throwing an instance of 'std::out_of_range'
3  what():  vector::_M_range_check: __n (which is 10000) >= this->size() (which is 10000)