@TheBlueMatt pointed out in #4336 a case where we end up with a force close when canceling a splice:
tx_complete is exchanged
- Node 1 handles
Event::FundingTransactionReadyForSigning, calls funding_transaction_signed, and sends its commitment_signed
- Node 2 processes it, and sends its own
commitment_signed and tx_signatures
- Node 1 crashes without persisting the latest
ChannelManager, and needs to handle Event::FundingTransactionReadyForSigning again
- Node 1 chooses to cancel the splice this time around and sends
tx_abort
- Node 2 has already committed to the funding transaction via their
tx_signatures, so they can't tx_abort back and force closes instead
Note that that is only worth fixing once we no longer force close due to a desync between the ChannelManager and ChannelMonitor persisted state.