Re: git-send-pack segfaulting on DebianPPC (was: Re: cg-clone, tag objects and cg-push/git-push don't play nice)
- From
Martin Langhoff <martin.langhoff@gmail.com>
- Date
- Oct 19, 2005, 20:56 UTC
- Message-ID
- <46a038f90510191356w56b78413p6b9fe5b67fc9ee74@mail.gmail.com>
- In-Reply-To
- <Pine.LNX.4.64.0510190724000.3369@g5.osdl.org>
On 10/20/05, Linus Torvalds <torvalds@osdl.org> wrote:
Show 9 quoted lines
> Interesting. > > As you say, I'm obviously testing on ppc all the time, and if > git-fetch-pack has problems on ppc, I haven't seen them. And I fetch a > lot. > > It might be just the repo you're using. I can't test, since I obviously > cannot ssh into the repo you pointed at (I tried to see if you had a > git-daemon running, but no such luck).
Ok -- I seem to be wrong in blaming PPC, so it's back to cg-fetch, and I think I have a patch that does the right thing.
To recap: repo is slightly broken because cg-fetch has fetched tag objects, but hasn't followed them through to the commit objects they refer to.
Internally cg-fetch is actually using git-ssh-fetch (I misreported it using git-fetch-pack), which is working correctly. However, cg-fetch attempts to optimize the fetch process, by not calling git-ssh-fetch if it has the tagobj that the ref points to. How those tag objects get there without commits in the first place I don't know. So I've removed the optimization and life is much better.
There is a second bug during the tag fetch. Some of the references (created by git-cvsimport) are multiline, and break cg-fetch. It's probably a bug in git-cvsimport, but I'm fixing cg-fetch to use head -n1 instead of cat. I'll deal with git-cvsimport later.
On this broken-ish repo, git-fetch-pack segfaults as I've reported. Running it under strace shows that it dies walking the local repo, trying to find a missing commit. Unlikely that this is PPC only ;-)
cheers,
martin