Memory leak fixes (pt.7)
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest23 patches 0 repliesNew
- v123 patches 14 repliesSuperseded
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/23 | builtin/help: fix dangling reference to `html_path`builtin/ | +7 | 0 replies | |
| 2/23 | builtin/help: fix leaking `html_path` when reading config multiple timesbuiltin/ | +2 | 0 replies | |
| 3/23 | git: fix leaking argv when handling builtinsgit.c t/ | +20 | 0 replies | |
| 4/23 | submodule: fix leaking update strategybuiltin/ submodule-config.c submodule.c +2 more | +12 | 0 replies | |
| 5/23 | builtin/submodule--helper: clear child process when not running itbuiltin/ t/ | +8 | 0 replies | |
| 6/23 | builtin/submodule--helper: fix leaking error bufferbuiltin/ t/ | +4 | 0 replies | |
| 7/23 | t/helper: fix leaking subrepo in nested submodule config helpert/ t/ | +2 | 0 replies | |
| 8/23 | builtin/submodule--helper: fix leaking remote ref on errorsbuiltin/ t/ | +10 | 0 replies | |
| 9/23 | dir: fix off by one errors for ignored and untracked entriesdir.c t/ t/ +1 more | +5 | 0 replies | |
| 10/23 | builtin/pull: fix leaking "ff" optionbuiltin/ t/ | +8 | 0 replies | |
| 11/23 | diff: fix leaking orderfile optioncombine-diff.c diff.c diff.h | +7 | 0 replies | |
| 12/23 | parse-options: free previous value of `OPTION_FILENAME`parse-options.c | +14 | 0 replies | |
| 13/23 | diffcore-order: fix leaking buffer when parsing orderfilesdiffcore-order.c t/ t/ | +9 | 0 replies | |
| 14/23 | builtin/repack: fix leaking configurationbuiltin/ t/ t/ | +45 | 0 replies | |
| 15/23 | builtin/difftool: plug several trivial memory leaksbuiltin/ t/ | +7 | 0 replies | |
| 16/23 | trace2: destroy context stored in thread-local storagetrace2/ | +9 | 0 replies | |
| 17/23 | submodule: fix leaking submodule ODB pathssubmodule.c | +2 | 0 replies | |
| 18/23 | grep: fix leaking grep patterngrep.c | +1 | 0 replies | |
| 19/23 | promisor-remote: fix leaking partial clone filterpromisor-remote.c t/ | +3 | 0 replies | |
| 20/23 | builtin/maintenance: fix leaking config stringbuiltin/ | +2 | 0 replies | |
| 21/23 | builtin/maintenance: fix leak in `get_schedule_cmd()`builtin/ t/ | +81 | 0 replies | |
| 22/23 | revision: fix leaking parents when simplifying commitsrevision.c t/ t/ +4 more | +12 | 0 replies | |
| 23/23 | diffcore-break: fix leaking filespecs when merging broken pairsdiffcore-break.c t/ t/ +3 more | +9 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [PATCH v2 00/23] Memory leak fixes (pt.7)
Hi,
this is the second version of another round of memory leak fixes. There's only a single change compared to v1, namely a revised commit message.
Thanks!
Patrick
Patrick Steinhardt (23):
builtin/help: fix dangling reference to html_path builtin/help: fix leaking html_path when reading config multiple
times
git: fix leaking argv when handling builtins
submodule: fix leaking update strategy builtin/submodule--helper: clear child process when not running it builtin/submodule--helper: fix leaking error buffer t/helper: fix leaking subrepo in nested submodule config helper builtin/submodule--helper: fix leaking remote ref on errors
dir: fix off by one errors for ignored and untracked entries builtin/pull: fix leaking "ff" option
diff: fix leaking orderfile option
parse-options: free previous value of OPTION_FILENAME
diffcore-order: fix leaking buffer when parsing orderfiles builtin/repack: fix leaking configuration builtin/difftool: plug several trivial memory leaks
trace2: destroy context stored in thread-local storage
submodule: fix leaking submodule ODB paths
grep: fix leaking grep pattern
promisor-remote: fix leaking partial clone filter builtin/maintenance: fix leaking config string builtin/maintenance: fix leak in get_schedule_cmd()
revision: fix leaking parents when simplifying commits
diffcore-break: fix leaking filespecs when merging broken pairs
builtin/difftool.c | 6 + builtin/gc.c | 131 +++++++++++------- builtin/help.c | 16 ++- builtin/pull.c | 11 +- builtin/repack.c | 57 ++++++-- builtin/submodule--helper.c | 26 +++- combine-diff.c | 3 +- diff.c | 7 +- diff.h | 2 +- diffcore-break.c | 4 +- diffcore-order.c | 19 +-- dir.c | 6 +- git.c | 22 ++- grep.c | 2 +- parse-options.c | 22 +-- promisor-remote.c | 2 + revision.c | 5 + submodule-config.c | 2 +- submodule.c | 9 +- submodule.h | 6 +- t/helper/test-submodule-nested-repo-config.c | 2 +- t/t0012-help.sh | 1 + t/t1414-reflog-walk.sh | 1 + ...common-prefixes-and-directory-traversal.sh | 1 + t/t4008-diff-break-rewrite.sh | 2 + t/t4022-diff-rewrite.sh | 1 + t/t4023-diff-rename-typechange.sh | 1 + t/t4031-diff-rewrite-binary.sh | 1 + t/t4056-diff-order.sh | 1 + t/t4204-patch-id.sh | 1 + t/t5310-pack-bitmaps.sh | 1 + t/t5326-multi-pack-bitmaps.sh | 2 + t/t5329-pack-objects-cruft.sh | 2 + t/t6004-rev-list-path-optim.sh | 1 + t/t6019-rev-list-ancestry-path.sh | 1 + t/t6111-rev-list-treesame.sh | 1 + t/t7061-wtstatus-ignore.sh | 1 + t/t7406-submodule-update.sh | 1 + t/t7407-submodule-foreach.sh | 1 + t/t7408-submodule-reference.sh | 2 + t/t7411-submodule-config.sh | 1 + t/t7420-submodule-set-url.sh | 1 + t/t7521-ignored-mode.sh | 1 + t/t7524-commit-summary.sh | 2 + t/t7601-merge-pull-config.sh | 1 + t/t7700-repack.sh | 1 + t/t7800-difftool.sh | 1 + t/t7814-grep-recurse-submodules.sh | 1 + t/t7900-maintenance.sh | 1 + trace2/tr2_tls.c | 10 +- 50 files changed, 279 insertions(+), 124 deletions(-)
Range-diff against v1:
1: e3bed973af = 1: e3bed973af builtin/help: fix dangling reference to `html_path` 2: 4a59fe15ae = 2: 4a59fe15ae builtin/help: fix leaking `html_path` when reading config multiple times 3: ea3dd851ad = 3: ea3dd851ad git: fix leaking argv when handling builtins 4: 7cdd2691b7 = 4: 7cdd2691b7 submodule: fix leaking update strategy 5: 0d0964a2be = 5: 0d0964a2be builtin/submodule--helper: clear child process when not running it 6: 52d12e034b = 6: 52d12e034b builtin/submodule--helper: fix leaking error buffer 7: 96bd7f01d5 = 7: 96bd7f01d5 t/helper: fix leaking subrepo in nested submodule config helper 8: d088703d31 ! 8: d5e7a24aac builtin/submodule--helper: fix leaking remote ref on errors
@@ Metadata
## Commit message ##
builtin/submodule--helper: fix leaking remote ref on errors
- When update_submodule() fails we return with die_message().
- Curiously enough, this causes a memory leak because we use the
- run_process_parallel() interfaces here, which swap out the die
- routine.
+ When update_submodule() fails we return with die_message(), which
+ only causes us to print the same message as die() would without
+ actually causing the process to die. We don't free memory in that case
+ and thus leak memory.
Fix the leak by freeing the remote ref.
9: d5c9cccb82 = 9: fca161d389 dir: fix off by one errors for ignored and untracked entries 10: 747c9a76a2 = 10: 2338b5e2a8 builtin/pull: fix leaking "ff" option 11: 85c0f9e5f5 = 11: cb08db4d37 diff: fix leaking orderfile option 12: 330b6c52a0 = 12: 650b89bcca parse-options: free previous value of `OPTION_FILENAME` 13: c975dfe462 = 13: cd79422087 diffcore-order: fix leaking buffer when parsing orderfiles 14: a5f3931eee = 14: e015d1704b builtin/repack: fix leaking configuration 15: c79a5118e4 = 15: 7bb07ec2f0 builtin/difftool: plug several trivial memory leaks 16: 0fb3dc55e5 = 16: 30928eb8f9 trace2: destroy context stored in thread-local storage 17: f1cb8122d1 = 17: 35f5de5467 submodule: fix leaking submodule ODB paths 18: 411df7248d = 18: 3d1cece660 grep: fix leaking grep pattern 19: 690de28bef = 19: da7768bad5 promisor-remote: fix leaking partial clone filter 20: ed4091255c = 20: 0a72fc83f7 builtin/maintenance: fix leaking config string 21: 46956bd8fb = 21: 95200b8a76 builtin/maintenance: fix leak in `get_schedule_cmd()` 22: 2a23df9a68 = 22: 8e7ea54863 revision: fix leaking parents when simplifying commits 23: 57a3a9e9f8 = 23: 8cbc41425f diffcore-break: fix leaking filespecs when merging broken pairs
Signature · 1 line
2.46.2.852.g229c0bf0e5.dirty