Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
perf hist: Fix reference counting of branch_info
iter_finish_branch_entry() doesn't put the branch_info from/to map elements creating memory leaks. This can be seen with: ``` $ perf record -e cycles -b perf test -w noploop $ perf report -D ... Direct leak of 984344 byte(s) in 123043 object(s) allocated from: #0 0x7fb2654f3bd7 in malloc libsanitizer/asan/asan_malloc_linux.cpp:69 gregkh#1 0x564d3400d10b in map__get util/map.h:186 gregkh#2 0x564d3400d10b in ip__resolve_ams util/machine.c:1981 gregkh#3 0x564d34014d81 in sample__resolve_bstack util/machine.c:2151 gregkh#4 0x564d34094790 in iter_prepare_branch_entry util/hist.c:898 gregkh#5 0x564d34098fa4 in hist_entry_iter__add util/hist.c:1238 gregkh#6 0x564d33d1f0c7 in process_sample_event tools/perf/builtin-report.c:334 gregkh#7 0x564d34031eb7 in perf_session__deliver_event util/session.c:1655 gregkh#8 0x564d3403ba52 in do_flush util/ordered-events.c:245 gregkh#9 0x564d3403ba52 in __ordered_events__flush util/ordered-events.c:324 gregkh#10 0x564d3402d32e in perf_session__process_user_event util/session.c:1708 gregkh#11 0x564d34032480 in perf_session__process_event util/session.c:1877 gregkh#12 0x564d340336ad in reader__read_event util/session.c:2399 gregkh#13 0x564d34033fdc in reader__process_events util/session.c:2448 gregkh#14 0x564d34033fdc in __perf_session__process_events util/session.c:2495 gregkh#15 0x564d34033fdc in perf_session__process_events util/session.c:2661 gregkh#16 0x564d33d27113 in __cmd_report tools/perf/builtin-report.c:1065 gregkh#17 0x564d33d27113 in cmd_report tools/perf/builtin-report.c:1805 gregkh#18 0x564d33e0ccb7 in run_builtin tools/perf/perf.c:350 #19 0x564d33e0d45e in handle_internal_command tools/perf/perf.c:403 #20 0x564d33cdd827 in run_argv tools/perf/perf.c:447 #21 0x564d33cdd827 in main tools/perf/perf.c:561 ... ``` Clearing up the map_symbols properly creates maps reference count issues so resolve those. Resolving this issue doesn't improve peak heap consumption for the test above. Committer testing: $ sudo dnf install libasan $ make -k CORESIGHT=1 EXTRA_CFLAGS="-fsanitize=address" CC=clang O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin Reviewed-by: Kan Liang <[email protected]> Signed-off-by: Ian Rogers <[email protected]> Tested-by: Arnaldo Carvalho de Melo <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Mark Rutland <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Sun Haiyong <[email protected]> Cc: Yanteng Si <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
- Loading branch information