Mutant created against commit 37912ec.
+1 -1 · c
This description is AI generated, mistakes can be made.
Intent: Recon slots are not reserved: semOutbound is sized 4 too small and m_max_inbound 4 too large, so total connections can exceed -maxconnections (file-descriptor budget) and recon peers compete with full-relay/block-relay/feelers for outbound grants.
Behaviour change: With -txreconciliation and default -maxconnections=125: original reserves 15 outbound grants and 110 inbound; mutant reserves 11 outbound grants and 114 inbound, so with 8 full-relay+2 block-relay+1 feeler outstanding no recon connection can acquire a grant, and fully saturated inbound plus recon peers exceed maxconnections by 4.
Trigger: Start bitcoind with -txreconciliation on mainnet; ThreadOpenConnections fills 8 full-relay and 2 block-relay slots, then a feeler grant is held while trying to open recon peers; also an inbound flood to the inbound limit.
Spec violation: PR comment in Init: 'reconciliation slots are subtracted here like any other outbound, shrinking our inbound budget.'
Severity if undetected: medium
Why tests miss it: p2p_connection_limits.py (runs without -txreconciliation, so recon budget is 0 and identical), p2p_reqtxrcncl.py / p2p_txrecon_initiator.py open at most a handful of addconnection peers (well under 11 grants), denialofservice_tests uses AddTestNode which bypasses semOutbound
Plausibility: It is the pre-PR line verbatim; forgetting to add the new budget to the sum is a classic omission when adding a new connection type.
Equivalence risk: When -txreconciliation is off m_max_outbound_full_recon is 0 and the mutant is equivalent; it differs only with reconciliation enabled.
Commands and environment reported by the submitter
cmake -B build -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DENABLE_IPC=OFF && cmake --build build -j$(nproc)ctest --test-dir build -j$(nproc) && build/test/functional/test_runner.py -j$(nproc) --failfastmutant-harness operator: deletion; location: CConnman::Init lines 1140
Imported from mutant-harness 474b4f7.
Commands are shown as text and never executed by MutantHub.
0 comments
No comments yet
Discuss equivalence, reproduction difficulties, or a test that kills this mutant.