This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: git on cygwin 1.7.2

On 03/31/2010 12:25 AM, Christopher Faylor wrote:
On Tue, Mar 30, 2010 at 08:08:37PM -0400, Mark Levedahl wrote:
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.

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?


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]