From 71f7e6a178b9b5e694975729f276548fc5461c21 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Apr 2016 14:04:20 -0400 Subject: 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. --- debian/changelog | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index 588c34542..9c008669d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,10 @@ git-annex (6.20160413) UNRELEASED; urgency=medium * fsck: Warn when core.sharedRepository is set and an annex object file's write bit is not set and cannot be set due to the file being owned by a different user. + * 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. (The bug was in the client side; the remote + git-annex-shell does not need to be upgraded.) -- Joey Hess Wed, 13 Apr 2016 13:30:32 -0400 -- cgit v1.2.3