All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Subject: [PATCH 00/22] Memory leak fixes (pt.6)
Date: Mon, 26 Aug 2024 09:21:31 +0200	[thread overview]
Message-ID: <cover.1724656120.git.ps@pks.im> (raw)

Hi,

here's another round of memory leak fixes. This is the second-last round
of "general" leak fixes -- so once this and the next series are merged,
I have made a full pass over all failing test suites. There will still
be a bunch of memory leaks, namely ~86 failing test suites.

I have documented a bunch of remaining leaks at [1]. Most of them are a
bit more involved to fix, so they will likely require separate series.
These issues relate to:

  - Simplifying commit history causes us to rewrite their parents, but
    we don't free the old parents in some cases. Hit e.g. by t6012.

  - The describe atom infrastructure as used by git-for-each-ref(1) is
    leaky. Hit e.g. by t6300, t6302.

  - Breaking rewrites causes memory leaks. Hit e.g. by t7524.

  - Cloning repositories causes us to re-initialize `the_repository`.
    This surfaces lifetime management issues with the `struct remote`
    that we use, which reuses storage held by `the_repository`. Hit e.g.
    by t5558.

  - The GPG interface is leaky. Hit e.g. by t7510, t7528.

If you want to do some puzzling, please feel free to pick up any of
these leaks :) I won't start working on them before I have the final
part of memory leak fixes merged.

This patch series builds on top of 6a09c36371 (The eighth batch,
2024-08-23) with Junio's ps/leakfixes-part-5 at 13b23d2da5 (transport:
fix leaking negotiation tips, 2024-08-22) merged into it.

Patrick

[1]: https://gitlab.com/groups/gitlab-org/-/epics/14943

Patrick Steinhardt (22):
  t/test-lib: allow skipping leak checks for passing tests
  fetch-pack: fix memory leaks on fetch negotiation
  send-pack: fix leaking common object IDs
  builtin/push: fix leaking refspec query result
  upload-pack: fix leaking child process data on reachability checks
  submodule: fix leaking fetch task data
  builtin/submodule--helper: fix leaking refs on push-check
  remote: fix leaking tracking refs
  remote: fix leak in reachability check of a remote-tracking ref
  send-pack: fix leaking push cert nonce
  gpg-interface: fix misdesigned signing key interfaces
  object: clear grafts when clearing parsed object pool
  shallow: free grafts when unregistering them
  shallow: fix leaking members of `struct shallow_info`
  negotiator/skipping: fix leaking commit entries
  builtin/repack: fix leaking line buffer when packing promisors
  builtin/pack-objects: plug leaking list of keep-packs
  builtin/grep: fix leaking object context
  builtin/fmt-merge-msg: fix leaking buffers
  match-trees: fix leaking prefixes in `shift_tree()`
  merge-ort: fix two leaks when handling directory rename modifications
  builtin/repack: fix leaking keep-pack list

 builtin/fmt-merge-msg.c              |  2 ++
 builtin/grep.c                       |  1 +
 builtin/pack-objects.c               |  1 +
 builtin/push.c                       |  8 +++--
 builtin/repack.c                     |  3 ++
 builtin/submodule--helper.c          |  2 ++
 builtin/tag.c                        |  3 +-
 commit.c                             | 23 ++++--------
 commit.h                             |  3 +-
 fetch-pack.c                         |  3 ++
 gpg-interface.c                      | 26 ++++++++------
 gpg-interface.h                      |  4 +--
 match-trees.c                        | 10 ++++--
 merge-ort.c                          |  4 ++-
 negotiator/skipping.c                |  7 ++--
 object.c                             | 14 +++++++-
 object.h                             |  4 ++-
 remote.c                             |  6 +++-
 repository.c                         |  2 +-
 send-pack.c                          | 52 ++++++++++++++++++----------
 shallow.c                            | 15 ++++++--
 submodule.c                          |  2 ++
 t/t5516-fetch-push.sh                |  1 +
 t/t5526-fetch-submodules.sh          |  1 +
 t/t5531-deep-submodule-push.sh       |  1 +
 t/t5533-push-cas.sh                  |  1 +
 t/t5534-push-signed.sh               |  1 +
 t/t5537-fetch-shallow.sh             |  1 +
 t/t5538-push-shallow.sh              |  1 +
 t/t5549-fetch-push-http.sh           |  1 +
 t/t5552-skipping-fetch-negotiator.sh |  2 ++
 t/t5616-partial-clone.sh             |  1 +
 t/t6132-pathspec-exclude.sh          |  1 +
 t/t6135-pathspec-with-attrs.sh       |  2 ++
 t/t6200-fmt-merge-msg.sh             |  1 +
 t/t6409-merge-subtree.sh             |  1 +
 t/t6423-merge-rename-directories.sh  |  1 +
 t/t6500-gc.sh                        |  1 +
 t/t7703-repack-geometric.sh          |  1 +
 t/test-lib.sh                        | 11 +++++-
 upload-pack.c                        | 22 ++++++++----
 41 files changed, 175 insertions(+), 72 deletions(-)

-- 
2.46.0.164.g477ce5ccd6.dirty


             reply	other threads:[~2024-08-26  7:21 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-26  7:21 Patrick Steinhardt [this message]
2024-08-26  7:21 ` [PATCH 01/22] t/test-lib: allow skipping leak checks for passing tests Patrick Steinhardt
2024-08-27 22:38   ` Junio C Hamano
2024-08-29 14:15   ` Toon claes
2024-08-30  9:00     ` Patrick Steinhardt
2024-08-26  7:21 ` [PATCH 02/22] fetch-pack: fix memory leaks on fetch negotiation Patrick Steinhardt
2024-08-26  7:21 ` [PATCH 03/22] send-pack: fix leaking common object IDs Patrick Steinhardt
2024-08-26  7:21 ` [PATCH 04/22] builtin/push: fix leaking refspec query result Patrick Steinhardt
2024-08-30 21:59   ` Junio C Hamano
2024-09-02  9:27     ` Patrick Steinhardt
2024-08-26  7:21 ` [PATCH 05/22] upload-pack: fix leaking child process data on reachability checks Patrick Steinhardt
2024-08-30 22:30   ` Junio C Hamano
2024-08-26  7:21 ` [PATCH 06/22] submodule: fix leaking fetch task data Patrick Steinhardt
2024-08-26  7:21 ` [PATCH 07/22] builtin/submodule--helper: fix leaking refs on push-check Patrick Steinhardt
2024-08-26  7:21 ` [PATCH 08/22] remote: fix leaking tracking refs Patrick Steinhardt
2024-09-04 21:50   ` Junio C Hamano
2024-08-26  7:21 ` [PATCH 09/22] remote: fix leak in reachability check of a remote-tracking ref Patrick Steinhardt
2024-08-26  7:22 ` [PATCH 10/22] send-pack: fix leaking push cert nonce Patrick Steinhardt
2024-09-04 22:08   ` Junio C Hamano
2024-08-26  7:22 ` [PATCH 11/22] gpg-interface: fix misdesigned signing key interfaces Patrick Steinhardt
2024-09-04 22:09   ` Junio C Hamano
2024-08-26  7:22 ` [PATCH 12/22] object: clear grafts when clearing parsed object pool Patrick Steinhardt
2024-08-26  7:22 ` [PATCH 13/22] shallow: free grafts when unregistering them Patrick Steinhardt
2024-08-26  7:22 ` [PATCH 14/22] shallow: fix leaking members of `struct shallow_info` Patrick Steinhardt
2024-08-29 14:16   ` Toon claes
2024-08-29 16:07     ` Junio C Hamano
2024-08-30  9:00       ` Patrick Steinhardt
2024-08-26  7:22 ` [PATCH 15/22] negotiator/skipping: fix leaking commit entries Patrick Steinhardt
2024-08-28 20:29   ` Calvin Wan
2024-08-28 22:19     ` Josh Steadmon
2024-08-29  8:41       ` Patrick Steinhardt
2024-08-29 17:29         ` Calvin Wan
2024-08-26  7:22 ` [PATCH 16/22] builtin/repack: fix leaking line buffer when packing promisors Patrick Steinhardt
2024-09-04 22:27   ` Junio C Hamano
2024-08-26  7:22 ` [PATCH 17/22] builtin/pack-objects: plug leaking list of keep-packs Patrick Steinhardt
2024-08-26  7:22 ` [PATCH 18/22] builtin/grep: fix leaking object context Patrick Steinhardt
2024-09-04 22:36   ` Junio C Hamano
2024-08-26  7:22 ` [PATCH 19/22] builtin/fmt-merge-msg: fix leaking buffers Patrick Steinhardt
2024-08-26  7:22 ` [PATCH 20/22] match-trees: fix leaking prefixes in `shift_tree()` Patrick Steinhardt
2024-09-04 22:42   ` Junio C Hamano
2024-08-26  7:22 ` [PATCH 21/22] merge-ort: fix two leaks when handling directory rename modifications Patrick Steinhardt
2024-09-04 22:56   ` Junio C Hamano
2024-09-05  2:01     ` Elijah Newren
2024-08-26  7:22 ` [PATCH 22/22] builtin/repack: fix leaking keep-pack list Patrick Steinhardt
2024-09-04 23:01 ` [PATCH 00/22] Memory leak fixes (pt.6) Junio C Hamano
2024-09-05 10:08 ` [PATCH v2 " Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 01/22] t/test-lib: allow skipping leak checks for passing tests Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 02/22] fetch-pack: fix memory leaks on fetch negotiation Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 03/22] send-pack: fix leaking common object IDs Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 04/22] builtin/push: fix leaking refspec query result Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 05/22] upload-pack: fix leaking child process data on reachability checks Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 06/22] submodule: fix leaking fetch task data Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 07/22] builtin/submodule--helper: fix leaking refs on push-check Patrick Steinhardt
2024-09-05 10:08   ` [PATCH v2 08/22] remote: fix leaking tracking refs Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 09/22] remote: fix leak in reachability check of a remote-tracking ref Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 10/22] send-pack: fix leaking push cert nonce Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 11/22] gpg-interface: fix misdesigned signing key interfaces Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 12/22] object: clear grafts when clearing parsed object pool Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 13/22] shallow: free grafts when unregistering them Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 14/22] shallow: fix leaking members of `struct shallow_info` Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 15/22] negotiator/skipping: fix leaking commit entries Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 16/22] builtin/repack: fix leaking line buffer when packing promisors Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 17/22] builtin/pack-objects: plug leaking list of keep-packs Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 18/22] builtin/grep: fix leaking object context Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 19/22] builtin/fmt-merge-msg: fix leaking buffers Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 20/22] match-trees: fix leaking prefixes in `shift_tree()` Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 21/22] merge-ort: fix two leaks when handling directory rename modifications Patrick Steinhardt
2024-09-05 10:09   ` [PATCH v2 22/22] builtin/repack: fix leaking keep-pack list Patrick Steinhardt
2024-09-08 21:39   ` [PATCH v2 00/22] Memory leak fixes (pt.6) Junio C Hamano
2024-09-12 20:29   ` Junio C Hamano

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=cover.1724656120.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 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.