This is the mail archive of the
mailing list for the Cygwin project.
Re: git on cygwin 1.7.2
- From: Mark Levedahl <mlevedahl at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Wed, 31 Mar 2010 21:36:23 -0400
- Subject: Re: git on cygwin 1.7.2
- References: <4BB29285.email@example.com> <20100331042545.GA23824@ednor.casa.cgf.cx>
On 03/31/2010 12:25 AM, Christopher Faylor wrote:
On Tue, Mar 30, 2010 at 08:08:37PM -0400, Mark Levedahl wrote:You are correct, the read returns 0 bytes while more are still expected,
not an error. I put in a "sleep(10)" triggered when this happens
followed by another read(), the second read still returns 0 bytes but
all processes (including the git upload-pack on the server) are still
running: they die only when I let the demux process terminate after the
second time read returns 0 bytes. So, something has deadlocked. Are
there any debug flags or other tricks I can use to try to illuminate
what locked up in the dll?
All of the above connections and i/o processing are done using
bog-standard fork, pipe, open, read, write, and associated file
commands. Git has no trouble opening all of the processes and pipes
under Cygwin 1.7.2. However, in general before the data transfer is
complete the demux process issues an error upon getting an incomplete
packet (fewer bytes transmitted than declared in the header), and
debugging shows the error code of the read() is ENOENT, indicating the
pipe or socket has been terminated early. The index-pack process also
issues an error due to receipt of an incomplete pack.
ENOENT does not mean that the pipe or socket has been terminated early.
It sounds like read is not returning an error in this case so the errno
would be meaningless.
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple