Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1272130
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH perf/core 00/13] perf memory/refcnt leak fixes |
| Date | 2015-11-18 13:50 +0100 |
| Message-ID | <qwals-2Vg-19@gated-at.bofh.it> (permalink) |
| References | <qw4J3-7HS-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Em Wed, Nov 18, 2015 at 03:40:09PM +0900, Masami Hiramatsu escreveu: > Hi, > > Here is a series to fix some memory leaks and refcount > leaks on map and dso. This also includes the refcnt APIs > with backtrace debugging feature. Cool, I wonder if this could be usable in the kernel proper... Is there such a facility there? I'll check. But thanks for doing this work, I'll go thru the fixes first, then look at the debugging feature. - Arnaldo > The story has started from the posible memory leak report > reported by Wnag Nan. > I've tried to use valgrind to ensure the perf probe doesn't > have other memory leaks. The result is here: > > ---- > # valgrind ./perf probe vfs_read > ==17521== Memcheck, a memory error detector > ==17521== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. > ==17521== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info > ==17521== Command: ./perf probe vfs_read > ==17521== > Added new event: > probe:vfs_read (on vfs_read) > > You can now use it in all perf tools, such as: > > perf record -e probe:vfs_read -aR sleep 1 > > ==17521== > ==17521== HEAP SUMMARY: > ==17521== in use at exit: 3,512,761 bytes in 38,012 blocks > ==17521== total heap usage: 74,723 allocs, 36,711 frees, 24,014,927 > bytes allocated > ==17521== > ==17521== LEAK SUMMARY: > ==17521== definitely lost: 6,857 bytes in 49 blocks > ==17521== indirectly lost: 3,501,287 bytes in 37,891 blocks > ==17521== possibly lost: 0 bytes in 0 blocks > ==17521== still reachable: 4,617 bytes in 72 blocks > ==17521== suppressed: 0 bytes in 0 blocks > ==17521== Rerun with --leak-check=full to see details of leaked memory > ==17521== > ==17521== For counts of detected and suppressed errors, rerun with: -v > ==17521== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2) > ---- > > Oops! It leaked almost 4 MB memories. I've tried to find > the root causes, and what I've found is there are many > leaks in not only perf-probe specific code, but also maps > and dsos (and some other pieces). > > The first 3 patches are just fixing 'easy' memory leaks. However, > most of the leaks are caused by refcnt. Since valgrind seems not > able to debug this kind of issues, I introduced a hand-made refcnt > backtrace APIs for debugging. > The rest of patches are for fixing refcnt leak bugs and replcing > refcnt apis. > > After all, most of the issues are gone, except for just a few issues > in elfutils. I'll continue to investigate that. > > ---- > valgrind ./perf probe vfs_read > ==29521== Memcheck, a memory error detector > ==29521== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. > ==29521== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info > ==29521== Command: ./perf probe vfs_read > ==29521== > Added new event: > probe:vfs_read (on vfs_read) > > You can now use it in all perf tools, such as: > > perf record -e probe:vfs_read -aR sleep 1 > > ==29521== > ==29521== HEAP SUMMARY: > ==29521== in use at exit: 5,137 bytes in 75 blocks > ==29521== total heap usage: 74,723 allocs, 74,648 frees, 24,014,927 > bytes allocated > ==29521== > ==29521== LEAK SUMMARY: > ==29521== definitely lost: 520 bytes in 3 blocks > ==29521== indirectly lost: 0 bytes in 0 blocks > ==29521== possibly lost: 0 bytes in 0 blocks > ==29521== still reachable: 4,617 bytes in 72 blocks > ==29521== suppressed: 0 bytes in 0 blocks > ==29521== Rerun with --leak-check=full to see details of leaked memory > ==29521== > ==29521== For counts of detected and suppressed errors, rerun with: -v > ==29521== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2) > ---- > > Anyway, I decided to release these fixes and the debugging feature > because at least this will improve perf quality. > > Thank you, > > --- > > Masami Hiramatsu (13): > perf probe: Fix to free temporal Dwarf_Frame > perf: Make perf_exec_path always returns malloc'd string > perf: Introduce generic refcount APIs with debug feature > perf: make map to use refcnt > perf: Fix machine__findnew_module_map to put registered map > perf: Fix machine__destroy_kernel_maps to put vmlinux_maps > perf: Fix to destroy kernel maps when machine exits > perf: Fix to put new map after inserting to map_groups in dso__load_sym > perf: Make dso to use refcnt for debug > perf: Fix __dsos__addnew to put dso after adding it to the list > perf: Fix machine__create_kernel_maps to put kernel dso > perf: Fix machine__findnew_module_map to put dso > perf: Fix dso__load_sym to put dso > > > tools/perf/config/Makefile | 5 ++ > tools/perf/util/Build | 1 > tools/perf/util/dso.c | 9 ++- > tools/perf/util/exec_cmd.c | 20 ++++-- > tools/perf/util/exec_cmd.h | 5 +- > tools/perf/util/help.c | 6 +- > tools/perf/util/machine.c | 17 ++++- > tools/perf/util/map.c | 7 +- > tools/perf/util/map.h | 3 + > tools/perf/util/probe-finder.c | 9 ++- > tools/perf/util/refcnt.c | 125 ++++++++++++++++++++++++++++++++++++++++ > tools/perf/util/refcnt.h | 65 +++++++++++++++++++++ > tools/perf/util/symbol-elf.c | 4 + > 13 files changed, 250 insertions(+), 26 deletions(-) > create mode 100644 tools/perf/util/refcnt.c > create mode 100644 tools/perf/util/refcnt.h > > > -- > Masami HIRAMATSU > Linux Technology Research Center, System Productivity Research Dept. > Center for Technology Innovation - Systems Engineering > Hitachi, Ltd., Research & Development Group > E-mail: masami.hiramatsu.pt@hitachi.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH perf/core 00/13] perf memory/refcnt leak fixes Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 07:50 +0100
[PATCH perf/core 12/13] perf: Fix machine__findnew_module_map to put dso Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 07:50 +0100
[tip:perf/core] perf machine: Fix machine__findnew_module_map to put dso tip-bot for Masami Hiramatsu <tipbot@zytor.com> - 2015-11-23 17:20 +0100
[PATCH perf/core 13/13] perf: Fix dso__load_sym to put dso Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 07:50 +0100
[PATCH perf/core 10/13] perf: Fix __dsos__addnew to put dso after adding it to the list Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 07:50 +0100
[tip:perf/core] perf tools: Fix __dsos__addnew to put dso after adding it to the list tip-bot for Masami Hiramatsu <tipbot@zytor.com> - 2015-11-23 17:20 +0100
[PATCH perf/core 05/13] perf: Fix machine__findnew_module_map to put registered map Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 07:50 +0100
Re: [PATCH perf/core 05/13] perf: Fix machine__findnew_module_map to put registered map Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-11-18 23:40 +0100
[tip:perf/core] perf machine: Fix machine__findnew_module_map to put registered map tip-bot for Masami Hiramatsu <tipbot@zytor.com> - 2015-11-23 17:20 +0100
[PATCH perf/core 09/13] perf: Make dso to use refcnt for debug Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 07:50 +0100
[PATCH perf/core 02/13] perf: Make perf_exec_path always returns malloc'd string Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 08:00 +0100
[PATCH perf/core 03/13] perf: Introduce generic refcount APIs with debug feature Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-18 08:00 +0100
Re: [PATCH perf/core 03/13] perf: Introduce generic refcount APIs with debug feature Namhyung Kim <namhyung@kernel.org> - 2015-11-20 04:00 +0100
RE: [PATCH perf/core 03/13] perf: Introduce generic refcount APIs with debug feature 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-11-20 05:20 +0100
Re: [PATCH perf/core 03/13] perf: Introduce generic refcount APIs with debug feature Namhyung Kim <namhyung@kernel.org> - 2015-11-20 07:00 +0100
Re: [PATCH perf/core 00/13] perf memory/refcnt leak fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-11-18 13:50 +0100
RE: [PATCH perf/core 00/13] perf memory/refcnt leak fixes 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-11-19 04:00 +0100
csiph-web