Em Wed, Dec 09, 2015 at 11:11:31AM +0900, Masami Hiramatsu escreveu: > Since the __map_groups__insert got the given map, we don't > need to keep it. So put the maps. > > Refcnt debugger shows that the map_groups__fixup_overlappings > got a map twice but the group released it once. This pattern > usually indicates the leak happens in caller site.
Thanks, applied! - Arnaldo > ---- > ==== [0] ==== > Unreclaimed map@0x39d3ae0 > Refcount +1 => 1 at > ./perf(map_groups__fixup_overlappings+0x335) [0x4c1865] > ./perf(thread__insert_map+0x30) [0x4c8e00] > ./perf(machine__process_mmap2_event+0x106) [0x4bd876] > ./perf() [0x4c378e] > ./perf() [0x4c4393] > ./perf(perf_session__process_events+0x38a) [0x4c654a] > ./perf(cmd_record+0xe24) [0x42fc94] > ./perf() [0x47b745] > ./perf(main+0x617) [0x422547] > /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f2eca2deaf5] > ./perf() [0x4226bd] > Refcount +1 => 2 at > ./perf(map_groups__fixup_overlappings+0x3c5) [0x4c18f5] > ./perf(thread__insert_map+0x30) [0x4c8e00] > ./perf(machine__process_mmap2_event+0x106) [0x4bd876] > ./perf() [0x4c378e] > ./perf() [0x4c4393] > ./perf(perf_session__process_events+0x38a) [0x4c654a] > ./perf(cmd_record+0xe24) [0x42fc94] > ./perf() [0x47b745] > ./perf(main+0x617) [0x422547] > /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f2eca2deaf5] > ./perf() [0x4226bd] > Refcount -1 => 1 at > ./perf(map_groups__exit+0x92) [0x4c0962] > ./perf(map_groups__put+0x60) [0x4c0bc0] > ./perf(thread__put+0x90) [0x4c8a40] > ./perf(machine__delete_threads+0x7e) [0x4bad9e] > ./perf(perf_session__delete+0x4f) [0x4c499f] > ./perf(cmd_record+0xb6d) [0x42f9dd] > ./perf() [0x47b745] > ./perf(main+0x617) [0x422547] > /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f2eca2deaf5] > ./perf() [0x4226bd] > ---- > > Signed-off-by: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> > --- > tools/perf/util/map.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c > index 03b7297..89be9c5 100644 > --- a/tools/perf/util/map.c > +++ b/tools/perf/util/map.c > @@ -693,6 +693,7 @@ static int maps__fixup_overlappings(struct maps *maps, > struct map *map, FILE *fp > __map_groups__insert(pos->groups, before); > if (verbose >= 2) > map__fprintf(before, fp); > + map__put(before); > } > > if (map->end < pos->end) { > @@ -707,6 +708,7 @@ static int maps__fixup_overlappings(struct maps *maps, > struct map *map, FILE *fp > __map_groups__insert(pos->groups, after); > if (verbose >= 2) > map__fprintf(after, fp); > + map__put(after); > } > put_map: > map__put(pos); -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html