diff options
author | Ian Rogers <[email protected]> | 2023-06-08 16:28:06 -0700 |
---|---|---|
committer | Arnaldo Carvalho de Melo <[email protected]> | 2023-06-12 15:57:53 -0300 |
commit | 2c9f7bd7951af269afe9680746f4c566c3abc769 (patch) | |
tree | c41ae5ea9249a28b69c9499b9b1c02f7205ea8c6 | |
parent | cf078c838181366867091b024ff351ea2a414e0c (diff) |
perf report: Avoid 'parent_thread' thread leak on '--tasks' processing
Caught with address sanitizer and reference count checking.
Committer notes:
The command leading to this leak:
# perf record -a sleep 2
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 2.516 MB perf.data (6422 samples) ]
# perf report --tasks
# pid tid ppid comm
0 0 -1 |swapper
1 1 0 | systemd
1474 1474 1 | systemd
2816 2816 1474 | gjs
2816 2825 2816 | gmain
2816 2831 2816 | gdbus
2816 2861 2816 | JS Helper
2816 2862 2816 | JS Helper
2816 2863 2816 | JS Helper
2816 2864 2816 | JS Helper
2816 2865 2816 | JS Helper
2816 2866 2816 | JS Helper
2816 2867 2816 | JS Helper
2816 2868 2816 | JS Helper
3072 3072 1474 | gsd-printer
3072 3082 3072 | gmain
3072 3083 3072 | gdbus
2600 2600 1474 | gnome-shell
15621 15621 2600 | firefox
15771 15771 15621 | WebExtensions
15771 15872 15771 | TaskCon~ller #6
15771 15873 15771 | TaskCon~ller #7
15771 15778 15771 | IPC I/O Child
15771 15779 15771 | Socket Thread
15771 15780 15771 | HTML5 Parser
15771 15781 15771 | JS Watchdog
# <SNIP>
When it is going to exit a thread__put(parent_thread) was missed, add it
to have ASAN clean.
Signed-off-by: Ian Rogers <[email protected]>
Cc: Adrian Hunter <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Ali Saidi <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Athira Rajeev <[email protected]>
Cc: Brian Robbins <[email protected]>
Cc: Changbin Du <[email protected]>
Cc: Dmitrii Dolgov <[email protected]>
Cc: Fangrui Song <[email protected]>
Cc: German Gomez <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Ivan Babrou <[email protected]>
Cc: James Clark <[email protected]>
Cc: Jing Zhang <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: John Garry <[email protected]>
Cc: K Prateek Nayak <[email protected]>
Cc: Kan Liang <[email protected]>
Cc: Leo Yan <[email protected]>
Cc: Liam Howlett <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Miguel Ojeda <[email protected]>
Cc: Mike Leach <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Naveen N. Rao <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Ravi Bangoria <[email protected]>
Cc: Sean Christopherson <[email protected]>
Cc: Steinar H. Gunderson <[email protected]>
Cc: Suzuki Poulouse <[email protected]>
Cc: Wenyu Liu <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Yang Jihong <[email protected]>
Cc: Ye Xingchen <[email protected]>
Cc: Yuan Can <[email protected]>
Cc: [email protected]
Cc: [email protected]
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
-rw-r--r-- | tools/perf/builtin-report.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 0b091a8983a5..a31a23af5547 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -839,6 +839,7 @@ static struct task *tasks_list(struct task *task, struct machine *machine) return ERR_PTR(-ENOENT); parent_task = thread__priv(parent_thread); + thread__put(parent_thread); list_add_tail(&task->list, &parent_task->children); return tasks_list(parent_task, machine); } |