linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Chris Phlipot <cphlipot0@gmail.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 05/13] perf script: Fix export of callchains with recursion in db-export
Date: Wed, 11 May 2016 13:32:46 -0300	[thread overview]
Message-ID: <1462984374-11067-6-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1462984374-11067-1-git-send-email-acme@kernel.org>

From: Chris Phlipot <cphlipot0@gmail.com>

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>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1462937209-6032-5-git-send-email-cphlipot0@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.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 8ca4186bf31b..8d96c80cc67e 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.5.5

  parent reply	other threads:[~2016-05-11 16:34 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-11 16:32 [GIT PULL 00/13] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 01/13] perf scripting python: Use Py_FatalError instead of die() Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 02/13] perf symbols: Add dso__insert_symbol function Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 03/13] perf script: Fix symbol insertion behavior in db-export Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 04/13] perf script: Fix callchain addresses " Arnaldo Carvalho de Melo
2016-05-11 16:32 ` Arnaldo Carvalho de Melo [this message]
2016-05-11 16:32 ` [PATCH 06/13] perf build: Add build-test for libunwind cross-platforms support Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 07/13] perf build: Add build-test for debug-frame on arm/arm64 Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 08/13] perf trace: Move flock op beautifier to tools/perf/trace/beauty/ Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 09/13] perf trace: Move seccomp args beautifiers " Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 10/13] perf tools: Fix lsdir to set errno correctly Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 11/13] perf tools: Use SBUILD_ID_SIZE where applicable Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 12/13] perf symbols: Use lsdir() for the search in kcore cache directory Arnaldo Carvalho de Melo
2016-05-11 16:32 ` [PATCH 13/13] perf buildid-cache: Use lsdir() for looking up buildid caches Arnaldo Carvalho de Melo
2016-05-12  6:58 ` [GIT PULL 00/13] perf/core improvements and fixes Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1462984374-11067-6-git-send-email-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=cphlipot0@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).