git on cygwin 1.7.2

Mark Levedahl mlevedahl@gmail.com
Thu Apr 1 01:36:00 GMT 2010


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



More information about the Cygwin mailing list