From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Subject: [PATCH 19/23] revision: fix leaking saved parents
Date: Mon, 30 Sep 2024 11:14:06 +0200 [thread overview]
Message-ID: <89892e49e5d1cd0aa72364b686950d1bcbbfd92f.1727687410.git.ps@pks.im> (raw)
In-Reply-To: <cover.1727687410.git.ps@pks.im>
The `saved_parents` slab is used by `--full-diff` to save parents of a
commit which we are about to rewrite. We do not release its contents
once it's not used anymore, causing a memory leak. Plug it.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
revision.c | 12 ++++++++++--
t/t6012-rev-list-simplify.sh | 1 +
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/revision.c b/revision.c
index 6b452ea182..f5f5b84f2b 100644
--- a/revision.c
+++ b/revision.c
@@ -4207,10 +4207,18 @@ static void save_parents(struct rev_info *revs, struct commit *commit)
*pp = EMPTY_PARENT_LIST;
}
+static void free_saved_parent(struct commit_list **parents)
+{
+ if (*parents != EMPTY_PARENT_LIST)
+ free_commit_list(*parents);
+}
+
static void free_saved_parents(struct rev_info *revs)
{
- if (revs->saved_parents_slab)
- clear_saved_parents(revs->saved_parents_slab);
+ if (!revs->saved_parents_slab)
+ return;
+ deep_clear_saved_parents(revs->saved_parents_slab, free_saved_parent);
+ FREE_AND_NULL(revs->saved_parents_slab);
}
struct commit_list *get_saved_parents(struct rev_info *revs, const struct commit *commit)
diff --git a/t/t6012-rev-list-simplify.sh b/t/t6012-rev-list-simplify.sh
index de1e87f162..8ed1a215da 100755
--- a/t/t6012-rev-list-simplify.sh
+++ b/t/t6012-rev-list-simplify.sh
@@ -5,6 +5,7 @@ test_description='merge simplification'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
note () {
--
2.46.2.852.g229c0bf0e5.dirty
next prev parent reply other threads:[~2024-09-30 9:14 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-30 9:13 [PATCH 00/23] Memory leak fixes (pt.8) Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 01/23] builtin/annotate: fix leaking args vector Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 02/23] read-cache: fix leaking hash context in `do_write_index()` Patrick Steinhardt
2024-09-30 14:05 ` Derrick Stolee
2024-09-30 9:13 ` [PATCH 03/23] scalar: fix leaking repositories Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 04/23] shell: fix leaking strings Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 05/23] wt-status: fix leaking buffer with sparse directories Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 06/23] submodule: fix leaking submodule entry list Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 07/23] builtin/stash: fix leaking `pathspec_from_file` Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 08/23] builtin/pack-redundant: fix various memory leaks Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 09/23] builtin/clone: fix leaking repo state when cloning with bundle URIs Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 10/23] t/helper: fix leaking repository in partial-clone helper Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 11/23] builtin/revert: fix leaking `gpg_sign` and `strategy` config Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 12/23] diff: improve lifecycle management of diff queues Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 13/23] line-log: fix several memory leaks Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 14/23] pseudo-merge: fix various " Patrick Steinhardt
2024-09-30 16:21 ` Taylor Blau
2024-09-30 9:13 ` [PATCH 15/23] pseudo-merge: fix leaking strmap keys Patrick Steinhardt
2024-09-30 21:22 ` Taylor Blau
2024-10-07 9:41 ` Patrick Steinhardt
2024-10-08 8:54 ` Jeff King
2024-10-09 7:06 ` Patrick Steinhardt
2024-09-30 9:13 ` [PATCH 16/23] pack-bitmap-write: fix leaking OID array Patrick Steinhardt
2024-09-30 21:22 ` Taylor Blau
2024-09-30 9:14 ` [PATCH 17/23] midx-write: fix leaking buffer Patrick Steinhardt
2024-09-30 21:27 ` Taylor Blau
2024-10-07 9:41 ` Patrick Steinhardt
2024-09-30 9:14 ` [PATCH 18/23] revision: fix memory leaks when rewriting parents Patrick Steinhardt
2024-09-30 9:14 ` Patrick Steinhardt [this message]
2024-09-30 9:14 ` [PATCH 20/23] pack-write: fix return parameter of `write_rev_file_order()` Patrick Steinhardt
2024-09-30 9:14 ` [PATCH 21/23] t/helper: fix leaks in proc-receive helper Patrick Steinhardt
2024-09-30 9:14 ` [PATCH 22/23] remote: fix leaking push reports Patrick Steinhardt
2024-09-30 9:14 ` [PATCH 23/23] builtin/send-pack: fix leaking list of push options Patrick Steinhardt
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=89892e49e5d1cd0aa72364b686950d1bcbbfd92f.1727687410.git.ps@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).