git/list[1] front-page[2] threads[3] people[4] search[5] about
 

upload-pack timing issue on windows?

From
Erik Faye-Lund <kusmabite@googlemail.com>
Date
Feb 5, 2010, 23:51 UTC
Message-ID
<40aa078e1002051551o6d116a50uee3f6a32b16adb46@mail.gmail.com>

As some of you might know, I've been working on porting git-daemon to Windows for quite some time now. As it stands now, there's really only one known issue that is blocking on my end here:

Something weird happens *sometimes* when upload-pack is exiting, leading to a client dying with a "fatal: read error: Invalid argument\nfatal: early EOF"-error. If I place a sleep(1) at some place after exiting the while(1)-loop in create_pack() in upload-pack.c, the symptom goes away. create_pack() contains some async-code, but this doesn't seem to be triggered in my minimal case at all. I've tried flushing stdout and stderr explicitly, no luck.

How often the issue triggers seems to depend on two things, the size of the repo and the connection speed. If I clone from localhost, I can't get it to trigger at all. If the repo is of some size, it triggers rarely. However if I have a repo with only one commit, it seems to trigger every single time for me.

I've noticed that one of the last things that happens is a call to poll with nfds=1. This triggers a special case in our poll-emulation on Windows; but removing that special case hasn't given me any positive results.

Does anyone have a hunch about what might trigger this issue?
-- 
Erik "kusma" Faye-Lund
Next: Johannes Sixt
Message 1 of 11 in “upload-pack timing issue on windows?”
  1. Erik Faye-LundFeb 5, 2010
  2. Johannes SixtFeb 6, 2010
  3. Erik Faye-LundFeb 6, 2010
  4. Johannes SixtFeb 6, 2010
  5. Erik Faye-LundFeb 8, 2010
  6. Jay SoffianFeb 10, 2010
  7. Erik Faye-LundAug 22, 2010
  8. Johannes SixtAug 24, 2010
  9. Erik Faye-LundAug 25, 2010
  10. Johannes SixtAug 25, 2010
  11. Erik Faye-LundAug 25, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.