From: Alex Riesen Date: Thu, 29 Mar 2007 20:44:58 GMT Subject: Re: SEGV in git-merge recursive: Message-ID: <20070329204458.GD2809@steel.home> In-Reply-To: Linus Torvalds, Thu, Mar 29, 2007 21:40:53 +0200: > > > On Thu, 29 Mar 2007, Linus Torvalds wrote: > > > > It's not the initial commit. It's a criss-cross merge, and it's a virtual > > commit created by a previous level of merging. > > > > Apply this patch to see it blow up much earlier, when that bogus commit > > with a NULL tree is created. > > > > (I didn't debug *why* that happens, but maybe this gets somebody further) > > Well, it happens because "git_write_tree()" returns NULL. Which in turn is > because "unmerged_index()" returns true. which in turn is because the inner merge has a rename/rename conflict. See the repo in the tarball from <20070329185501.GC2809@steel.home> > merge_trees() tries to clean up the unmerged index, but apparently doesn't > do good enough of a job, so git_write_tree() is called with entries still > unmerged.. I see no "job" at all: no index cleanup there (merge_trees).