From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Taylor Blau <me@ttaylorr.com>,
Elijah Newren <newren@gmail.com>
Subject: Re: [PATCH v2 6/9] t4058: explore duplicate tree entry handling in a bit more detail
Date: Wed, 21 Apr 2021 14:29:53 +0200 [thread overview]
Message-ID: <87fszj3jni.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <8db27892c598a3976c0742e23563f1d360b8dee1.1607677728.git.gitgitgadget@gmail.com>
On Fri, Dec 11 2020, Elijah Newren via GitGitGadget wrote:
> While creating the last commit, I found a number of other cases where
> git would segfault when faced with trees that have duplicate entries.
> None of these segfaults are in the diffcore-rename code (they all occur
> in cache-tree and unpack-trees). Further, to my knowledge, no one has
> ever been adversely affected by these bugs, and given that it has been
> 15 years and folks have fixed a few other issues with historical
> duplicate entries (as noted in the last commit), I am not sure we will
> ever run into anyone having problems with these. So I am not sure these
> are worth fixing, but it doesn't hurt to at least document these
> failures in the same test file that is concerned with duplicate tree
> entries.
> [...]
> +test_expect_failure 'fast-forward from duplicate entries to non-duplicate' '
> + git merge update
> +'
> +
> test_done
Per https://lore.kernel.org/git/87lf9b3mth.fsf@evledraar.gmail.com/
isn't the noise of having a segfault from "git" worth fixing in itself
though? I.e. something like this, so we at least se why it fails:
diff --git a/t/t4058-diff-duplicates.sh b/t/t4058-diff-duplicates.sh
index 54614b814db..ed91d9f7fe9 100755
--- a/t/t4058-diff-duplicates.sh
+++ b/t/t4058-diff-duplicates.sh
@@ -182,8 +182,10 @@ test_expect_success 'switch to base branch and force status to be clean' '
test_must_be_empty actual
'
-test_expect_failure 'fast-forward from duplicate entries to non-duplicate' '
- git merge update
+test_expect_success 'fast-forward from duplicate entries to non-duplicate' '
+ ! git merge update 2>err &&
+ grep "^BUG: " err &&
+ grep -F "should have entry at o->src_index->cache[1]" err
'
test_done
diff --git a/unpack-trees.c b/unpack-trees.c
index 8a1afbc1e49..230cb073fe1 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -789,8 +789,11 @@ static int traverse_by_cache_tree(int pos, int nr_entries, int nr_names,
*/
for (i = 0; i < nr_entries; i++) {
int new_ce_len, len, rc;
+ int j = pos + i;
- src[0] = o->src_index->cache[pos + i];
+ src[0] = o->src_index->cache[j];
+ if (!src[0])
+ BUG("should have entry at o->src_index->cache[%d]", j);
len = ce_namelen(src[0]);
new_ce_len = cache_entry_size(len);
next prev parent reply other threads:[~2021-04-21 12:30 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-06 2:54 [PATCH 0/7] diffcore-rename improvements Elijah Newren via GitGitGadget
2020-12-06 2:54 ` [PATCH 1/7] diffcore-rename: avoid usage of global in too_many_rename_candidates() Elijah Newren via GitGitGadget
2020-12-09 22:06 ` Taylor Blau
2020-12-06 2:54 ` [PATCH 2/7] diffcore-rename: remove unnecessary if-clause Elijah Newren via GitGitGadget
2020-12-09 22:10 ` Taylor Blau
2020-12-10 0:32 ` Elijah Newren
2020-12-10 2:03 ` Junio C Hamano
2020-12-10 2:17 ` Elijah Newren
2020-12-10 6:56 ` Junio C Hamano
2020-12-06 2:54 ` [PATCH 3/7] diffcore-rename: rename num_create to num_targets Elijah Newren via GitGitGadget
2020-12-10 2:20 ` Junio C Hamano
2020-12-10 2:25 ` Elijah Newren
2020-12-06 2:54 ` [PATCH 4/7] diffcore-rename: change a few comments to use 'add' instead of 'create' Elijah Newren via GitGitGadget
2020-12-10 2:29 ` Junio C Hamano
2020-12-06 2:54 ` [PATCH 5/7] diffcore-rename: reduce jumpiness in progress counters Elijah Newren via GitGitGadget
2020-12-09 22:24 ` Taylor Blau
2020-12-10 2:36 ` Junio C Hamano
2020-12-06 2:54 ` [PATCH 6/7] diffcore-rename: simplify and accelerate register_rename_src() Elijah Newren via GitGitGadget
2020-12-09 22:40 ` Taylor Blau
2020-12-10 0:25 ` Elijah Newren
2020-12-10 0:41 ` Taylor Blau
2020-12-10 2:51 ` Junio C Hamano
2020-12-06 2:54 ` [PATCH 7/7] Accelerate rename_dst setup Elijah Newren via GitGitGadget
2020-12-09 23:01 ` Taylor Blau
2020-12-10 0:57 ` Elijah Newren
2020-12-10 1:43 ` Junio C Hamano
2020-12-06 3:01 ` [PATCH 0/7] diffcore-rename improvements Elijah Newren
2020-12-11 9:08 ` [PATCH v2 0/9] " Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 1/9] diffcore-rename: rename num_create to num_destinations Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 2/9] diffcore-rename: avoid usage of global in too_many_rename_candidates() Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 3/9] diffcore-rename: simplify limit check Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 4/9] diffcore-rename: reduce jumpiness in progress counters Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 5/9] t4058: add more tests and documentation for duplicate tree entry handling Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 6/9] t4058: explore duplicate tree entry handling in a bit more detail Elijah Newren via GitGitGadget
2021-04-21 12:29 ` Ævar Arnfjörð Bjarmason [this message]
2021-04-21 17:38 ` Elijah Newren
2020-12-11 9:08 ` [PATCH v2 7/9] diffcore-rename: simplify and accelerate register_rename_src() Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 8/9] diffcore-rename: accelerate rename_dst setup Elijah Newren via GitGitGadget
2020-12-11 9:08 ` [PATCH v2 9/9] diffcore-rename: remove unneccessary duplicate entry checks Elijah Newren via GitGitGadget
2020-12-29 8:31 ` Christian Couder
2020-12-29 18:09 ` Elijah Newren
2020-12-29 20:05 ` [PATCH v3 0/9] diffcore-rename improvements Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 1/9] diffcore-rename: rename num_create to num_destinations Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 2/9] diffcore-rename: avoid usage of global in too_many_rename_candidates() Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 3/9] diffcore-rename: simplify limit check Elijah Newren via GitGitGadget
2021-11-09 21:14 ` Başar Uğur
2021-11-10 20:06 ` Elijah Newren
2021-11-11 9:02 ` Başar Uğur
2021-11-11 16:19 ` Elijah Newren
2020-12-29 20:05 ` [PATCH v3 4/9] diffcore-rename: reduce jumpiness in progress counters Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 5/9] t4058: add more tests and documentation for duplicate tree entry handling Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 6/9] t4058: explore duplicate tree entry handling in a bit more detail Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 7/9] diffcore-rename: simplify and accelerate register_rename_src() Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 8/9] diffcore-rename: accelerate rename_dst setup Elijah Newren via GitGitGadget
2020-12-29 20:05 ` [PATCH v3 9/9] diffcore-rename: remove unnecessary duplicate entry checks Elijah Newren via GitGitGadget
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fszj3jni.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=me@ttaylorr.com \
--cc=newren@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.