summaryrefslogtreecommitdiff
path: root/Annex/LockFile.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-04-18 14:04:20 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-04-18 14:04:50 -0400
commit71f7e6a178b9b5e694975729f276548fc5461c21 (patch)
tree6645ff0c45230878ed227f40fad5660ea87ed608 /Annex/LockFile.hs
parentc6d028f5e85e8cf3dcc2c15cf2e9d40a6ad16b81 (diff)
fix drop hang reported by musicmatze
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.
Diffstat (limited to 'Annex/LockFile.hs')
0 files changed, 0 insertions, 0 deletions