Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1398634

[PATCH 4/4] perf script: fix export of callchains with recursion in db-export

From Chris Phlipot <cphlipot0@gmail.com>
Newsgroups linux.kernel
Subject [PATCH 4/4] perf script: fix export of callchains with recursion in db-export
Date 2016-05-11 04:10 +0200
Message-ID <rxrL3-714-13@gated-at.bofh.it> (permalink)
References <rxrL3-714-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


When an IP with an unresolved symbol occurs in the callchain more than
once (ie. recursion), then duplicate symbols can be created because
the callchain nodes are never updated after they are first created.

To fix this issue we call dso__find_symbol whenever we encounter a NULL
symbol, in case we already added a symbol at that IP since we started
traversing the callchain.

This change prevents duplicate symbols from being exported when duplicate
IPs are present in the callchain.

Signed-off-by: Chris Phlipot <cphlipot0@gmail.com>
---
 tools/perf/util/db-export.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c
index 8ca4186..424c77c 100644
--- a/tools/perf/util/db-export.c
+++ b/tools/perf/util/db-export.c
@@ -326,6 +326,10 @@ static struct call_path *call_path_from_sample(struct db_export *dbe,
 		al.machine = machine;
 		al.addr = node->ip;
 
+		if(al.map && !al.sym)
+			al.sym = dso__find_symbol(al.map->dso, MAP__FUNCTION,
+						  al.addr);
+
 		db_ids_from_al(dbe, &al, &dso_db_id, &sym_db_id, &offset);
 
 		/* add node to the call path tree if it doesn't exist */
-- 
2.7.4

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH 4/4] perf script: fix export of callchains with recursion in db-export Chris Phlipot <cphlipot0@gmail.com> - 2016-05-11 04:10 +0200

csiph-web