Rusty Russell
c98711ad28
lightningd: don't crash if peer manages to spend onchain HTLC after we've abandoned upstream.
Since we now abandon HTLCs to avoid breaking a channel (in limited circumstances), the
peer can take the funds if they beat us to spend the HTLC before we timeout. This is extremely
unusual, but finally happend in CI.
First it fails our internal sanity checks, but then it would fail when we tried to fulfill
an already-failed HTLC:
```
**BROKEN** lightningd: fulfill_our_htlc_out:Output preimage, input failonion?
**BROKEN** lightningd: FATAL SIGNAL 6 (version f82fedb-modded)
**BROKEN** lightningd: backtrace: common/daemon.c:38 (send_backtrace) 0x55c09b04f0b5
**BROKEN** lightningd: backtrace: common/daemon.c:75 (crashdump) 0x55c09b04f247
**BROKEN** lightningd: backtrace: ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0 ((null)) 0x7f607463551f
**BROKEN** lightningd: backtrace: ./nptl/pthread_kill.c:44 (__pthread_kill_implementation) 0x7f6074689a7c
**BROKEN** lightningd: backtrace: ./nptl/pthread_kill.c:78 (__pthread_kill_internal) 0x7f6074689a7c
**BROKEN** lightningd: backtrace: ./nptl/pthread_kill.c:89 (__GI___pthread_kill) 0x7f6074689a7c
**BROKEN** lightningd: backtrace: ../sysdeps/posix/raise.c:26 (__GI_raise) 0x7f6074635475
**BROKEN** lightningd: backtrace: ./stdlib/abort.c:79 (__GI_abort) 0x7f607461b7f2
**BROKEN** lightningd: backtrace: lightningd/log.c:1016 (fatal_vfmt) 0x55c09afdb7cb
**BROKEN** lightningd: backtrace: lightningd/log.c:1026 (fatal) 0x55c09afdb880
**BROKEN** lightningd: backtrace: lightningd/htlc_end.c:87 (corrupt) 0x55c09afc9472
**BROKEN** lightningd: backtrace: lightningd/htlc_end.c:207 (htlc_out_check) 0x55c09afc9c6b
**BROKEN** lightningd: backtrace: lightningd/peer_htlcs.c:1451 (fulfill_our_htlc_out) 0x55c09b004dd7
**BROKEN** lightningd: backtrace: lightningd/peer_htlcs.c:1526 (onchain_fulfilled_htlc) 0x55c09b0050fe
**BROKEN** lightningd: backtrace: lightningd/onchain_control.c:313 (handle_extracted_preimage) 0x55c09afdf9f8
**BROKEN** lightningd: backtrace: lightningd/onchain_control.c:1423 (onchain_msg) 0x55c09afe2da9
**BROKEN** lightningd: backtrace: lightningd/subd.c:557 (sd_msg_read) 0x55c09b019ac8
```
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-07-28 10:18:32 +09:30
..
2023-07-28 09:21:42 +09:30
2021-10-28 15:51:38 +02:00
2023-07-11 11:41:15 +09:30
2023-06-29 11:28:47 -04:00
2023-07-28 09:21:42 +09:30
2023-07-19 19:13:57 +09:30
2023-07-28 09:21:42 +09:30
2023-07-19 19:13:57 +09:30
2023-07-25 10:49:34 +09:30
2023-07-22 13:11:08 +09:30
2023-03-25 15:28:02 +10:30
2023-07-22 13:11:08 +09:30
2023-07-25 14:47:12 +09:30
2023-03-25 15:28:02 +10:30
2023-03-25 15:28:02 +10:30
2023-07-22 13:11:08 +09:30
2022-09-16 12:31:45 +09:30
2023-01-21 08:05:31 -06:00
2022-02-07 13:02:09 +10:30
2023-07-09 16:49:48 +09:30
2023-07-09 16:49:48 +09:30
2023-02-05 20:40:47 +01:00
2023-07-25 14:47:12 +09:30
2023-07-11 11:41:15 +09:30
2023-01-13 10:42:42 +10:30
2023-07-09 16:49:48 +09:30
2023-04-10 07:31:12 +09:30
2023-03-18 15:55:49 +10:30
2022-09-24 15:22:27 +09:30
2023-06-29 11:28:47 -04:00
2023-04-10 17:26:47 +09:30
2023-07-28 10:18:32 +09:30
2022-10-26 11:29:06 +10:30
2023-07-26 06:55:48 +09:30
2020-09-08 09:42:00 +09:30
2023-07-26 06:55:48 +09:30
2023-07-26 06:55:48 +09:30
2022-03-05 15:03:34 +10:30
2019-05-31 17:57:10 +02:00
2023-07-28 09:21:42 +09:30
2023-07-19 19:13:57 +09:30
2023-07-28 09:21:42 +09:30
2023-07-23 13:48:37 +09:30
2023-07-19 19:13:57 +09:30
2023-07-19 19:13:57 +09:30
2023-07-19 19:13:57 +09:30
2023-07-19 19:13:57 +09:30
2023-07-28 09:21:42 +09:30
2023-04-10 17:26:47 +09:30
2022-03-10 09:40:09 +10:30
2023-07-13 18:59:37 +09:30
2022-09-19 10:18:55 +09:30
2023-04-10 17:26:47 +09:30
2023-07-11 11:41:15 +09:30
2021-12-28 04:42:42 +10:30
2023-01-30 13:24:29 +10:30
2021-12-01 05:44:28 +10:30
2023-07-19 19:13:57 +09:30
2023-07-19 19:13:57 +09:30
2023-07-22 13:11:08 +09:30
2023-01-13 10:42:42 +10:30
2023-07-19 19:13:57 +09:30
2023-06-20 20:08:25 +09:30
2023-07-26 13:50:03 +02:00
2023-07-26 06:55:48 +09:30
2023-07-22 13:11:08 +09:30
2023-07-22 08:52:55 +09:30
2022-02-08 11:15:52 +10:30
2022-02-08 11:15:52 +10:30
2023-07-28 10:18:32 +09:30
2023-01-17 14:13:45 +10:30
2022-07-15 12:24:00 -05:00
2022-09-16 12:31:45 +09:30
2021-06-25 09:49:33 +09:30
2023-07-26 06:55:48 +09:30
2022-09-16 12:31:45 +09:30
2023-07-25 19:20:16 +09:30
2023-07-19 19:13:57 +09:30
2022-08-09 16:31:36 -05:00
2021-06-16 10:29:17 +09:30
2023-07-25 14:47:12 +09:30
2023-07-25 14:47:12 +09:30
2023-04-10 17:26:47 +09:30
2023-07-24 16:30:31 +02:00
2023-07-19 19:13:57 +09:30
2023-07-23 13:48:37 +09:30
2023-07-23 13:48:37 +09:30
2023-07-19 19:13:57 +09:30
2022-08-31 12:18:28 +03:00