I was investigating why seen's CI runs fail, and came up with this fix. Changes since v1: * Rebased onto en/merge-ort-perf. * Now we're not only cleaning up the merge data structure, but also leaving the Trace2 region when returning early from merge_switch_to_result(). Johannes Schindelin (2): merge-ort: clean up after failed merge merge-ort: do leave Trace2 region even if checkout fails merge-ort.c | 5 +++++ 1 file changed, 5 insertions(+) base-commit: 557ac0350d9efa1f59c708779ca3fb3aee121131 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1307%2Fdscho%2Fmerge-ort-impl-leakfix-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1307/dscho/merge-ort-impl-leakfix-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/1307 Range-diff vs v1: 1: 128f77f7f34 ! 1: 082c7ffa41f merge-ort: clean up after failed merge @@ merge-ort.c: void merge_switch_to_result(struct merge_options *opt, + merge_finalize(opt, result); return; } - + trace2_region_leave("merge", "checkout", opt->repo); @@ merge-ort.c: void merge_switch_to_result(struct merge_options *opt, &opti->conflicted)) { /* failure to function */ @@ merge-ort.c: void merge_switch_to_result(struct merge_options *opt, + merge_finalize(opt, result); return; } - } + trace2_region_leave("merge", "record_conflicted", opt->repo); -: ----------- > 2: d2e1af0f922 merge-ort: do leave Trace2 region even if checkout fails -- gitgitgadget