Closed hsanjuan closed 4 years ago
Happened to us, also, using
github.com/libp2p/go-libp2p v0.9.2
github.com/libp2p/go-libp2p-core v0.5.6
github.com/libp2p/go-libp2p-kad-dht v0.8.0
Trying to mitigate this, I have switch the instructions between themselves, calling host.Close()
first (afterwards cancelling contexts on kad dht and other clean-ups). It didn't solve the problem as the process hanged (not deadlocked) on host.Close().
This looks like a deadlock in goprocess.
Hm. Looks like we're trying to add a subprocess from a process teardown. We're not supposed to do that.
It really looks like we can't use goprocess for this use-case.
Cluster has suffered a deadlock on
host.Close()
which looks a libp2p issue. I can't reproduce this consistently :/The deadlock happens on https://github.com/ipfs/ipfs-cluster/blob/583270729017205d48dd0a0af5f1266016a77871/cmdutils/cmdutils.go#L131 . The the dht is Closed. But the host.Close() call hangs. The datastore should still be open.
I am on libp2p v0.8.3 (all should be very recent versions).
Stack trace (the first one is very relevant).. as you see it is relatively short because there is not much left to shutdown at this point:
Version Information