You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
log.Warnf("unable to stop ChannelArbitrator(%v): %v",
chanPoint, err)
}
This will close the quit channel and wait for the waitgroup counter to go to zero. However, because this can be called from channelAttendant, the goroutine is waiting for itself to be cleaned up and will just hang. This doesn't cause the node to be unresponsive, but the ChannelArbitrator will sit there and not properly stop.
When a
ChannelArbitrator
is finished with its duties, it attempts to stop itself but can't:The
channelAttendant
goroutine callsadvanceState
which callsstateStep
which hits this line if the state isStateFullyResolved
:lnd/contractcourt/channel_arbitrator.go
Lines 1280 to 1283 in e6fbaaf
MarkChannelResolved
callsResolveContract
:lnd/contractcourt/chain_arbitrator.go
Lines 399 to 404 in e6fbaaf
ResolveContract
callsStop
on theChannelArbitrator
:lnd/contractcourt/chain_arbitrator.go
Lines 465 to 471 in e6fbaaf
This will close the
quit
channel and wait for the waitgroup counter to go to zero. However, because this can be called fromchannelAttendant
, the goroutine is waiting for itself to be cleaned up and will just hang. This doesn't cause the node to be unresponsive, but theChannelArbitrator
will sit there and not properly stop.h/t @bitromortac
The text was updated successfully, but these errors were encountered: