Subject: Re: [PATCH] line-log: fix crash when --first-parent is used

From: Michael J Gruber <[email-masked]>
Date: Tue, 04 Nov 2014 10:34:51 +0100

Tzvetan Mikov schrieb am 03.11.2014 um 23:09:
> On Mon, Nov 3, 2014 at 12:58 PM, Junio C Hamano <[email-masked]> wrote:
> 
>>> line-log tries to access all parents of a commit, but only the first
>>> parent has been loaded if "--first-parent" is specified, resulting
>>> in a crash.
>>>
>>> Limit the number of parents to one if "--first-parent" is specified.
>>>
> 
>> [...]
>> Tzvetan, can we have a test for this one?
> 
> Here is a sequence of commands to reproduce the crash:
> 
> git init
> echo "1" > a.txt && git add a.txt && git commit -m "a"
> git checkout -b branch
> echo "2" > b.txt && git add b.txt && git commit -m "b"
> git checkout master
> git merge branch --no-ff -m "merge"
> git log --first-parent -L 1,1:a.txt
> 
> I am not sure whether you have a requirement for a formal test
> included with the patch, but if there is one, I am happy to
> rework it.
> 
> This is a very simple fix for the crash, though possibly
> a "real" comprehensive fix may be needed. I am not sure.
> The real cause is that with "--first-parent" some commit
> objects are never loaded from disk but may still be accessed.
> 
> (sorry about my formatting - have to use GMail)
> 
> regards,
> Tzvetan
> 

A test would be nice, yes. Look in t/t4211-line-log.sh - you should be
OK if you add a test at the end which does the following:

"git checkout parallel-change" so that you have commits with more than 1
parent in the history

test "git log -L1,1 b.c" (it core dumps with current git)

That is, you don't have to set up merges and history, you can use the
existing one.

Cheers,
Michael