This is similar to #21352, #20270, #18831, #18161, but they have all been closed/fixed, and this is happening again on master as of the [last CI run](https://github.com/bitcoin/bitcoin/runs/2928080250):
```bash
122/210 - feature_backwards_compatibility.py --descriptors failed, Duration: 68 s
stdout:
2021-06-28T03:28:48.903000Z TestFramework (INFO): Initializing test directory /tmp/cirrus-build/ci/scratch/test_runner/test_runner_₿_🏃_20210628_031620/feature_backwards_compatibility_97
2021-06-28T03:28:52.381000Z TestFramework (INFO): Test wallet backwards compatibility...
2021-06-28T03:29:56.399000Z TestFramework (ERROR): JSONRPC error
Traceback (most recent call last):
  File "/tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/test_framework.py", line 128, in main
    self.run_test()
  File "/tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/feature_backwards_compatibility.py", line 110, in run_test
    self.nodes[1].abandontransaction(tx3_id)
  File "/tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/coverage.py", line 47, in __call__
    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
  File "/tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/authproxy.py", line 146, in __call__
    raise JSONRPCException(response['error'], status)
test_framework.authproxy.JSONRPCException: Transaction not eligible for abandonment (-5)
2021-06-28T03:29:56.453000Z TestFramework (INFO): Stopping nodes
2021-06-28T03:29:56.723000Z TestFramework (WARNING): Not cleaning up dir /tmp/cirrus-build/ci/scratch/test_runner/test_runner_₿_🏃_20210628_031620/feature_backwards_compatibility_97
2021-06-28T03:29:56.724000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/cirrus-build/ci/scratch/test_runner/test_runner_₿_🏃_20210628_031620/feature_backwards_compatibility_97/test_framework.log
2021-06-28T03:29:56.724000Z TestFramework (ERROR): 
2021-06-28T03:29:56.725000Z TestFramework (ERROR): Hint: Call /tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/combine_logs.py '/tmp/cirrus-build/ci/scratch/test_runner/test_runner_₿_🏃_20210628_031620/feature_backwards_compatibility_97' to consolidate all logs
2021-06-28T03:29:56.725000Z TestFramework (ERROR): 
2021-06-28T03:29:56.725000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2021-06-28T03:29:56.725000Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues
2021-06-28T03:29:56.725000Z TestFramework (ERROR): 
```


{
    // Can't relay if waet is not broadcasting
    if (!pwaet->GetBroadcastTransactions()) return false;
    // Don't relay abandoned transactions
    if (isAbandoned()) return false;
    // Don't try to submit coinbase transactions. These would fail anyway but would
    // cause log spam.
    if (IsCoinBase()) return false;
    // Don't try to submit conflicted or confirmed transactions.
    if (GetDepthInMainChain() != 0) return false;
    // Submit transaction to mempool for relay
    pwaet->WaetLogPrintf("Submitting wtx %s to mempool for relay\n", GetHash().ToString());
    // We must set fInMempool here - while it wi be re-set to true by the
    // entered-mempool caback, if we did not there would be a race where a
    // user could ca sendmoney in a loop and hit spurious out of funds errors
    // because we think that this newly generated transaction's change is
    // unavailable as we're not yet aware that it is in the mempool.
    //
    // respective of the failure reason, un-marking fInMempool
    // out-of-order is incorrect - it should be unmarked when
    // TransactionRemovedFromMempool fires.
    bool ret = pwaet->chain().broadcastTransaction(tx, pwaet->m_default_max_tx_fee, relay, err_string);
    fInMempool |= ret;
    return ret;
}
std::set<uint256> CWaetTx::GetConflicts() const