Fix hang when dropping content needs to lock the content on a ssh remote, which occurred when the remote has git-annex version 5.20151019 or newer. Analysis: `race` runs 2 threads at once, and the hGetLine finishes first. So, it tries to cancel the waitForProcess, but unfortunately that is making a foreign call and so cannot be canceled. The remote git-annex-shell is waiting for a line on stdin before it will exit. Deadlock. This only occurred sometimes; I reproduced it going from darkstar to elephant, but not from darkstar to darkstar. Not sure how that fits into the above analysis -- perhaps a race condition is also involved? Fixed by not using `race`; now the hGetLine will fail with an exception if the remote git-annex-shell exits without any output. |
||
|---|---|---|
| .. | ||
| Directory | ||
| External | ||
| Helper | ||
| Rsync | ||
| WebDAV | ||
| BitTorrent.hs | ||
| Bup.hs | ||
| Ddar.hs | ||
| Directory.hs | ||
| External.hs | ||
| GCrypt.hs | ||
| Git.hs | ||
| Glacier.hs | ||
| Hook.hs | ||
| List.hs | ||
| Rsync.hs | ||
| S3.hs | ||
| Tahoe.hs | ||
| Web.hs | ||
| WebDAV.hs | ||