On Wed, Jan 20, 2010 at 04:57:19PM -0500, Tim Olsen [off-list ref] wrote:
It appears that a segfault still happens with your patch applied, but
this time it is caught:
tolsen@neurofunk:~/git/site-build-dav-sync-05 [git:build-dav-sync-05]$
git merge origin/deployed
error: merge-recursive died of signal 11
Merge with strategy recursive failed.
tolsen@neurofunk:~/git/site-build-dav-sync-05 [git:build-dav-sync-05]$
quoted
"common = NULL" means merged_common_ancestors->tree is NULL in the caller.
Somebody is passing a bogus commit in "ca" (aka common ancestors) list
when calling merge_recursive(), or forgetting to parse them before calling
it. In your debugger could you find out where it comes from and what it
has before this call into merge_trees() is made? Specifically, what the
"ca" list at 0x7b3c00 contains, and how "merged_common_ancestors" at
0x121e360 looks like. in this trace we see below:
Here is the replay of the flow of execution from the first time we enter
merge_recursive(). The repository has been modified slightly so the
pointers are different this time but the segfault is still happening
(I'll stop modifying the repository now ;-) .
Two ideas to help debugging:
- Can you try if this happens in a new repo as well? (If not, is the
repo public?) If yes, can you write a script that shows your problem?
- Can you see if this happens with v1.6.0? If yes, can you bisect it?
Thanks.