Subject: Re: git-merge segfault in 1.6.6 and master

From: Tim Olsen <[email-masked]>
Date: Thu, 21 Jan 2010 16:56:33 -0500

Miklos Vajna wrote:
> 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?

The problem still happens in any clone of the repository, but I have not
attempted to reproduce the problem in a fresh repository.  I've put our
repository up at git://les.limebits.net/site (warning: the repo is about
 364MB).  The following 3 commands will reproduce the problem:

git clone git://les.limebits.net/site
cd site
git merge origin/deployed

The problem starts with commit 9079b71b6f.  I can merge its ancestors
with no problem into the default branch (build-dav-sync-05).  But commit
9079b71b6f and its descendents cause a segfault when merging into
build-dav-sync-05.

> - Can you see if this happens with v1.6.0? If yes, can you bisect it?

With 1.6.0, the merge still fails but it doesn't outright segfault.

$ git merge origin/deployed
Merge with strategy recursive failed.
$

The output appears to be from line 1098 of builtin-merge.c.  Bisecting
finds that the outright segfaulting starts with commit 18668f53:

tolsen@neurofunk:~/git/git [git:NO BRANCH*]$ git bisect good
18668f5319b079cce29e19817bc352b1413e0908 is first bad commit
commit 18668f5319b079cce29e19817bc352b1413e0908
Author: Miklos Vajna <[email-masked]>
Date:   Thu Aug 28 15:43:00 2008 +0200

    builtin-merge: avoid run_command_v_opt() for recursive and subtree

    The try_merge_strategy() function always ran the strategy in a separate
    process, though this is not always necessary. The recursive and subtree
    strategy can be called without a fork(). This patch adds a check, and
    calls recursive in the same process without wasting resources.

    Signed-off-by: Johannes Schindelin <[email-masked]>
    Signed-off-by: Miklos Vajna <[email-masked]>
    Signed-off-by: Junio C Hamano <[email-masked]>

:100644 100644 9ad9791068c9330f28413ac67315246989c8d96d
b857cf6246978846e0c19895fd6f66266cf6a6f4 M      builtin-merge.c
tolsen@neurofunk:~/git/git [git:NO BRANCH*]$

This leads me to believe the segfault may still be occurring in v1.6.0,
but in a separate process.

Tim

> Thanks.