Am 28.11.2022 um 11:03 schrieb Junio C Hamano: > René Scharfe <l.s.r@xxxxxx> writes: > >> This reverts commit 5cb28270a1ff94a0a23e67b479bbbec3bc993518. >> >> 5cb28270a1 (pack-objects: lazily set up "struct rev_info", don't leak, >> 2022-03-28) avoided leaking rev_info allocations in many cases by >> calling repo_init_revisions() only when the .filter member was actually >> needed, but then still leaking it. That was fixed later by 2108fe4a19 >> (revisions API users: add straightforward release_revisions(), >> 2022-04-13), making the reverted commit unnecessary. > > Hmph, with this merged, 'seen' breaks linux-leaks job in a strange > way. > > https://github.com/git/git/actions/runs/3563546608/jobs/5986458300#step:5:3917 > > Does anybody want to help looking into it? The patch exposes that release_revisions() leaks the diffopt allocations as we're yet to address the TODO added by 54c8a7c379 (revisions API: add a TODO for diff_free(&revs->diffopt), 2022-04-14). The patch below plugs it locally. --- >8 --- Subject: [PATCH 4/3] fixup! revision: free diffopt in release_revisions() Signed-off-by: René Scharfe <l.s.r@xxxxxx> --- builtin/pack-objects.c | 1 + 1 file changed, 1 insertion(+) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 3e74fbb0cd..a47a3f0fba 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -4462,6 +4462,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) } else { get_object_list(&revs, rp.nr, rp.v); } + diff_free(&revs.diffopt); release_revisions(&revs); cleanup_preferred_base(); if (include_tag && nr_result) -- 2.30.2