Subject: Re: [PATCH] CYGWIN: Use a TCP socket for pipe()

From: Torsten Bögershausen <[email-masked]>
Date: Tue, 02 Jul 2013 16:57:21 +0200

On 2013-07-01 00.56, Junio C Hamano wrote:
> Torsten Bögershausen <[email-masked]> writes:
> 
>> I testet "rj/cygwin-remove-cheating-lstat" with the "socket pipe" on top:
>> no hanging.
>>
>> Then I run "rj/cygwin-remove-cheating-lstat" without "socket pipe",
>> (or in other words git.git/pu):
>> No hanging.
> 
> So an immediate conclusion is that we can forget about this patch?
Yes
> 
>> So at the moment I don't have any problems to report for cygwin, which is good.
>>
>> And it looks as if "rj/cygwin-remove-cheating-lstat" prevents the "hanging",
>> so there is another +1 to keep it and move it into next.
> 
> Ramsay started a "mark places we call lstat() when we do not really
> need fully correct lstat" topic, and I think it may be a sane
> direction to go, as long as the helper function's semantic is
> clearly defined.
> 
> It would be worth seeing where it leads us, before ripping that
> "cheating and incomplete lstat out, I think.
I currently run the test suite on it, based on next.
Got one hanging, but of a different kind:
git was running fetch, but the corresponding git-upload-pack.exe was not in the
task list of the windows explorer, but it was in ps under cygwin.

diff --git a/run-command.c b/run-command.c
index aece872..ee588eb 100644
--- a/run-command.c
+++ b/run-command.c
@@ -226,6 +226,9 @@ static inline void set_cloexec(int fd)
                fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
 }
 
+#if defined(__CYGWIN__)
+#define wait_or_whine(p, a) (p)
+#else
 static int wait_or_whine(pid_t pid, const char *argv0)
 {
        int status, code = -1;
@@ -268,6 +271,7 @@ static int wait_or_whine(pid_t pid, const char *argv0)
        errno = failed_errno;
        return code;
 }
+#endif

(And I needed to remove the credential helper tests)

More info later
/Torsten