Mail Archives: cygwin/2010/03/31/20:36:39
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.
>
> cgf
>
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?
Mark
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
- Raw text -