Re: [PATCH] perf trace: Fix some leaks of struct thread
From: Ian Rogers
Date: Tue Apr 01 2025 - 16:23:53 EST
On Mon, Mar 31, 2025 at 11:46 AM Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>
> I've found some leaks from 'perf trace -a'. It seems there are more
> leaks but this is what I can find for now.
>
> Cc: Howard Chu <howardchu95@xxxxxxxxx>
> Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
Tested-by: Ian Rogers <irogers@xxxxxxxxxx>
Thanks,
Ian
> ---
> tools/perf/builtin-trace.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
> index 3d0c0076884d34cb..10cd99888a9a11b5 100644
> --- a/tools/perf/builtin-trace.c
> +++ b/tools/perf/builtin-trace.c
> @@ -2835,7 +2835,7 @@ static int trace__fprintf_sys_enter(struct trace *trace, struct evsel *evsel,
> e_machine = thread__e_machine(thread, trace->host);
> sc = trace__syscall_info(trace, evsel, e_machine, id);
> if (sc == NULL)
> - return -1;
> + goto out_put;
> ttrace = thread__trace(thread, trace);
> /*
> * We need to get ttrace just to make sure it is there when syscall__scnprintf_args()
> @@ -4123,8 +4123,10 @@ static int trace__set_filter_loop_pids(struct trace *trace)
> pids[nr++] = thread__tid(parent);
> break;
> }
> + thread__put(thread);
> thread = parent;
> }
> + thread__put(thread);
>
> err = evlist__append_tp_filter_pids(trace->evlist, nr, pids);
> if (!err && trace->filter_pids.map)
> --
> 2.49.0.472.ge94155a9ec-goog
>