Skip to content

[bug]: Force close triggered on restart during incomplete commit dance #10618

@NishantBansal2003

Description

@NishantBansal2003

Pre-Submission Checklist

  • I have searched the existing issues and believe this is a new bug.
  • I am not asking a question about how to use lnd, but reporting a bug (otherwise open a discussion).

LND Version

master

LND Configuration

Default

Backend Version

Any

Backend Configuration

Default

OS/Distribution

MacOS M1

Bug Details & Steps to Reproduce

When a peer restarts during an incomplete commit dance (after update_fee and commit_sig but before receiving the remote commit_sig), LND force closes the channel after ChannelReestablish (Alice is unable to validate it, and because of this Alice triggers LinkFailureForceClose. This suggests incorrect handling of commit re-synchronization during channel reestablishment for update_fee).

Scenario:

Alice -> update_fee
Alice -> commit_sig
Bob   -> revoke_and_ack
Bob signs next commitment (commit_sig not delivered)
--- restart both peers ---
Bob re-sends commit_sig during reestablish
Alice force closes

This is a subtle edge case that can rarely occur in production. It was discovered while working on: NishantBansal2003#7

Expected Behavior

Bob is expected to re-send the pending commit_sig after channel_reestablish. When validating the commit_sig, Alice should accept the re-sent commit_sig and continue normal operation.

Debug Information

0001-htlcswitch-test-reestablish-after-partial-commit-exc.patch

Environment

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions