# merge-ort assertion failure

3 messages from 2022-01-14 to 2022-01-14. Participants: Taylor Blau, Elijah Newren.
Thread: https://gitlist.dev/t/57248

## Taylor Blau, 2022-01-14 19:46

Subject: merge-ort assertion failure
Message-ID: <YeHTIfEutLYM4TIU@nand.local>
URL: https://gitlist.dev/e/YeHTIfEutLYM4TIU%40nand.local

```
Elijah,

A colleague reported that they were able to hit an assertion failure in
merge-ort when rebasing a topic of their back onto upstream.

The scenario (which I have been able to reproduce on a private
repository, but haven't had time to reduce further) is:

    $ git --version
    git version 2.34.1

    $ git rebase origin/master
    warning: skipped previously applied commit 9cda243afc2a
    warning: skipped previously applied commit 882bb87a3a7c
    hint: use --reapply-cherry-picks to include skipped commits
    hint: Disable this message with "git config advice.skippedCherryPicks false"
    [some "Auto-merging" messages ...]
    CONFLICT (content): Merge conflict in
    [some file]
    warning: exhaustive rename detection was skipped due to too many files.
    warning: you may want to set your merge.renamelimit variable to at least 165 and retry the command.
    Assertion failed: (renames->cached_pairs_valid_side == 0), function
    clear_or_reinit_internal_opts, file merge-ort.c, line 546.
    Abort trap: 6

Their merge.renameLimit is set pretty low at just "1", and this
assertion goes away so long as `merge.renameLimit` is set sufficiently
high.

I haven't had a chance to look into it very deeply yet. Elijah: I figure
that this is the sort of thing that may be totally obvious to you, so
I'm sharing it here in case it is.

Otherwise, I'll continue to poke at it locally and see if I can learn
anything else.

Thanks,
Taylor

```

## Elijah Newren, 2022-01-14 22:15

Subject: Re: merge-ort assertion failure
Message-ID: <CABPp-BFM+fU+jVJwrU4ooPGvHbw859M+RNb+MvJe12MPV_=q7g@mail.gmail.com>
URL: https://gitlist.dev/e/CABPp-BFM%2BfU%2BjVJwrU4ooPGvHbw859M%2BRNb%2BMvJe12MPV_%3Dq7g%40mail.gmail.com
In-Reply-To: <YeHTIfEutLYM4TIU@nand.local>

```
On Fri, Jan 14, 2022 at 11:46 AM Taylor Blau <me@ttaylorr.com> wrote:
>
> Elijah,
>
> A colleague reported that they were able to hit an assertion failure in
> merge-ort when rebasing a topic of their back onto upstream.
>
> The scenario (which I have been able to reproduce on a private
> repository, but haven't had time to reduce further) is:
>
>     $ git --version
>     git version 2.34.1
>
>     $ git rebase origin/master
>     warning: skipped previously applied commit 9cda243afc2a
>     warning: skipped previously applied commit 882bb87a3a7c
>     hint: use --reapply-cherry-picks to include skipped commits
>     hint: Disable this message with "git config advice.skippedCherryPicks false"
>     [some "Auto-merging" messages ...]
>     CONFLICT (content): Merge conflict in
>     [some file]
>     warning: exhaustive rename detection was skipped due to too many files.
>     warning: you may want to set your merge.renamelimit variable to at least 165 and retry the command.
>     Assertion failed: (renames->cached_pairs_valid_side == 0), function
>     clear_or_reinit_internal_opts, file merge-ort.c, line 546.
>     Abort trap: 6
>
> Their merge.renameLimit is set pretty low at just "1", and this
> assertion goes away so long as `merge.renameLimit` is set sufficiently
> high.
>
> I haven't had a chance to look into it very deeply yet. Elijah: I figure
> that this is the sort of thing that may be totally obvious to you, so
> I'm sharing it here in case it is.

I don't have a testcase (though I think there is probably enough
information here for me to create one), but I think I know the
problem.  Does this fix it for you? :
https://github.com/git/git/pull/1193

```

## Taylor Blau, 2022-01-14 22:29

Subject: Re: merge-ort assertion failure
Message-ID: <YeH5OSG0RW29REhn@nand.local>
URL: https://gitlist.dev/e/YeH5OSG0RW29REhn%40nand.local
In-Reply-To: <CABPp-BFM+fU+jVJwrU4ooPGvHbw859M+RNb+MvJe12MPV_=q7g@mail.gmail.com>

```
On Fri, Jan 14, 2022 at 02:15:31PM -0800, Elijah Newren wrote:
> On Fri, Jan 14, 2022 at 11:46 AM Taylor Blau <me@ttaylorr.com> wrote:
>
> > I haven't had a chance to look into it very deeply yet. Elijah: I figure
> > that this is the sort of thing that may be totally obvious to you, so
> > I'm sharing it here in case it is.
>
> I don't have a testcase (though I think there is probably enough
> information here for me to create one), but I think I know the
> problem.  Does this fix it for you? :
> https://github.com/git/git/pull/1193

Unfortunately not. With a sufficiently small value of merge.renameLimit
(in my case, just 1) I can trigger the same assertion failure:

    $ GIT_DEBUGGER=1 git.compile -c merge.renameLimit=1 rebase $onto
    [...]
    Thread 1 "git" hit Breakpoint 1, clear_or_reinit_internal_opts (opti=0x55555b0cf3f0, reinitialize=0) at merge-ort.c:546
    546				assert(renames->cached_pairs_valid_side == 0);
    (gdb) p renames->cached_pairs_valid_side
    $1 = -1

Short of providing a small, reproducible test-case, I'm happy to share
any information I can about the repository that might be useful to you.

Thanks,
Taylor

```
