From: Ingo Molnar <mingo@kernel.org>
To: Markus Trippelsdorf <markus@trippelsdorf.de>,
Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Arnaldo Carvalho de Melo <acme@infradead.org>,
Andi Kleen <ak@linux.intel.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [GIT PULL] perf fix
Date: Sun, 29 Sep 2013 16:26:13 +0200 [thread overview]
Message-ID: <20130929142613.GA9244@gmail.com> (raw)
In-Reply-To: <20130929114700.GB282@x4>
* Markus Trippelsdorf <markus@trippelsdorf.de> wrote:
> On 2013.09.28 at 20:03 +0200, Ingo Molnar wrote:
> > Andi Kleen (1):
> > perf symbols: Demangle cloned functions
>
> The commit above e95ab53645:
>
> commit de95ab53645a2f0015e0f68ee723f18dce2b8b51
> Author: Andi Kleen <ak@linux.intel.com>
> Date: Thu Sep 12 08:16:38 2013 -0700
>
> perf symbols: Demangle cloned functions
>
> breaks "perf top" on my machine. I just see a gray screen with no text
> at all. Sometimes the following error messages are printed:
> *** Error in `perf': invalid fastbin entry (free): 0x00000000029b18c0 ***
> *** Error in `perf': malloc(): memory corruption (fast): 0x0000000000ee0b10 ***
>
> Reverting the commit "fixes" the issue.
Sorry about that.
Looking at the commit it fails on several quality levels:
- sloppy structure: the code is unreadable, it should have been a
separate helper function
- sloppy flow: why the heck does it do strchr() twice? Not to
mention the fragile way of how the new flow tries
to merge with the old instead of cleanly separating.
- sloppy types: it casts a const char * over into char *
- sloppy style: variable block not separated from statements,
meaningless temporary variable names, etc. etc.
- and it's not even a regression fix to begin with!
So the right resolution is a revert. Andi, please send a fixed patch with
all of these issues and the crash fixed.
Linus,
Please pull the latest perf-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf-urgent-for-linus
HEAD: 14951f22f1cc8375ead345d2ca08455e91f2152b Revert "perf symbols: Demangle cloned functions"
It fixes the 'perf top' regression Markus Trippelsdorf reported.
Thanks,
Ingo
------------------>
Ingo Molnar (1):
Revert "perf symbols: Demangle cloned functions"
tools/perf/util/symbol-elf.c | 27 +--------------------------
1 file changed, 1 insertion(+), 26 deletions(-)
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index d2a888e..a9c829b 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -928,33 +928,8 @@ int dso__load_sym(struct dso *dso, struct map *map,
* to it...
*/
if (symbol_conf.demangle) {
- /*
- * The demangler doesn't deal with cloned functions.
- * XXXX.clone.NUM or similar
- * Strip the dot part and readd it later.
- */
- char *p = (char *)elf_name, *dot;
- dot = strchr(elf_name, '.');
- if (dot) {
- p = strdup(elf_name);
- if (!p)
- goto new_symbol;
- dot = strchr(p, '.');
- *dot = 0;
- }
-
- demangled = bfd_demangle(NULL, p,
+ demangled = bfd_demangle(NULL, elf_name,
DMGL_PARAMS | DMGL_ANSI);
- if (dot)
- *dot = '.';
- if (demangled && dot) {
- demangled = realloc(demangled, strlen(demangled) + strlen(dot) + 1);
- if (!demangled)
- goto new_symbol;
- strcpy(demangled + (dot - p), dot);
- }
- if (p != elf_name)
- free(p);
if (demangled != NULL)
elf_name = demangled;
}
next prev parent reply other threads:[~2013-09-29 14:26 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-28 18:03 [GIT PULL] perf fixes Ingo Molnar
2013-09-29 11:47 ` Markus Trippelsdorf
2013-09-29 14:26 ` Ingo Molnar [this message]
2013-09-29 21:33 ` Andi Kleen
2013-09-29 22:47 ` Markus Trippelsdorf
2013-09-30 6:27 ` Ingo Molnar
2013-09-30 18:54 ` Andi Kleen
2013-10-01 8:42 ` Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2024-04-07 7:55 [GIT PULL] perf fix Ingo Molnar
2024-04-07 16:44 ` pr-tracker-bot
2021-06-24 7:01 Ingo Molnar
2021-06-24 16:34 ` pr-tracker-bot
2020-10-11 8:00 Ingo Molnar
2020-10-11 18:23 ` pr-tracker-bot
2020-06-28 18:33 Ingo Molnar
2020-06-28 22:05 ` pr-tracker-bot
2019-09-12 8:39 Ingo Molnar
2019-09-12 10:15 ` pr-tracker-bot
2019-04-27 14:38 Ingo Molnar
2019-04-27 18:45 ` pr-tracker-bot
2018-01-17 15:27 Ingo Molnar
2017-10-27 19:14 Ingo Molnar
2017-08-26 7:12 Ingo Molnar
2016-07-13 12:49 Ingo Molnar
2016-05-10 11:43 Ingo Molnar
2016-04-23 11:24 Ingo Molnar
2015-03-28 10:24 Ingo Molnar
2013-12-17 13:35 Ingo Molnar
2013-09-03 13:37 Ingo Molnar
2013-06-27 13:11 Ingo Molnar
2013-04-27 7:50 Ingo Molnar
2012-05-23 18:50 Ingo Molnar
2012-05-23 18:56 ` Josh Boyer
2012-05-23 18:57 ` Josh Boyer
2012-05-23 20:04 ` Ingo Molnar
2012-05-23 20:10 ` Josh Boyer
2012-05-23 20:20 ` Ingo Molnar
2012-03-03 7:50 Ingo Molnar
2011-12-17 20:53 Ingo Molnar
2011-10-01 7:52 Ingo Molnar
2011-07-23 8:57 Ingo Molnar
2010-05-15 6:00 Ingo Molnar
2010-05-04 17:52 Ingo Molnar
2010-04-20 7:32 Ingo Molnar
2010-04-08 13:52 [PATCH] perf: Fix unsafe frame rewinding with hot regs fetching Eric Dumazet
2010-04-08 17:31 ` [GIT PULL] perf fix Frederic Weisbecker
2010-04-13 22:51 ` 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=20130929142613.GA9244@gmail.com \
--to=mingo@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@infradead.org \
--cc=acme@redhat.com \
--cc=ak@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=markus@trippelsdorf.de \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.