All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf tools annotate: fix a crash when annotate the same symbol with 's' and 'T'
@ 2025-10-13 16:10 Tianyou Li
  2025-10-15 12:30 ` James Clark
  0 siblings, 1 reply; 24+ messages in thread
From: Tianyou Li @ 2025-10-13 16:10 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim
  Cc: Mark Rutland, Alexander Shishkin, Jiri Olsa, Ian Rogers,
	Adrian Hunter, Kan Liang, Ravi Bangoria, tianyou.li, wangyang.guo,
	pan.deng, zhiguo.zhou, jiebin.sun, thomas.falcon, dapeng1.mi,
	linux-perf-users, linux-kernel

When perf report with annotation for a symbol, press 's' and 'T', then exit
the annotate browser. Once annoate the same symbol, the annoate browser
will crash. Stack trace as below:

Perf: Segmentation fault
-------- backtrace --------
    #0 0x55d365 in ui__signal_backtrace setup.c:0
    #1 0x7f5ff1a3e930 in __restore_rt libc.so.6[3e930]
    #2 0x570f08 in arch__is perf[570f08]
    #3 0x562186 in annotate_get_insn_location perf[562186]
    #4 0x562626 in __hist_entry__get_data_type annotate.c:0
    #5 0x56476d in annotation_line__write perf[56476d]
    #6 0x54e2db in annotate_browser__write annotate.c:0
    #7 0x54d061 in ui_browser__list_head_refresh perf[54d061]
    #8 0x54dc9e in annotate_browser__refresh annotate.c:0
    #9 0x54c03d in __ui_browser__refresh browser.c:0
    #10 0x54ccf8 in ui_browser__run perf[54ccf8]
    #11 0x54eb92 in __hist_entry__tui_annotate perf[54eb92]
    #12 0x552293 in do_annotate hists.c:0
    #13 0x55941c in evsel__hists_browse hists.c:0
    #14 0x55b00f in evlist__tui_browse_hists perf[55b00f]
    #15 0x42ff02 in cmd_report perf[42ff02]
    #16 0x494008 in run_builtin perf.c:0
    #17 0x494305 in handle_internal_command perf.c:0
    #18 0x410547 in main perf[410547]
    #19 0x7f5ff1a295d0 in __libc_start_call_main libc.so.6[295d0]
    #20 0x7f5ff1a29680 in __libc_start_main@@GLIBC_2.34 libc.so.6[29680]
    #21 0x410b75 in _start perf[410b75]

Signed-off-by: Tianyou Li <tianyou.li@intel.com>
---
 tools/perf/ui/browsers/annotate.c | 3 +++
 tools/perf/util/annotate.c        | 2 +-
 tools/perf/util/annotate.h        | 2 ++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index 8fe699f98542..1e0873194217 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -1163,6 +1163,9 @@ int __hist_entry__tui_annotate(struct hist_entry *he, struct map_symbol *ms,
 		}
 	}
 
+	if (browser.arch == NULL)
+		evsel__get_arch(evsel, &browser.arch);
+
 	/* Copy necessary information when it's called from perf top */
 	if (hbt != NULL && he != &annotate_he) {
 		annotate_he.hists = he->hists;
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index a2e34f149a07..39d6594850f1 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -980,7 +980,7 @@ void symbol__calc_percent(struct symbol *sym, struct evsel *evsel)
 	annotation__calc_percent(notes, evsel, symbol__size(sym));
 }
 
-static int evsel__get_arch(struct evsel *evsel, struct arch **parch)
+int evsel__get_arch(struct evsel *evsel, struct arch **parch)
 {
 	struct perf_env *env = evsel__env(evsel);
 	const char *arch_name = perf_env__arch(env);
diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
index eaf6c8aa7f47..d4990bff29a7 100644
--- a/tools/perf/util/annotate.h
+++ b/tools/perf/util/annotate.h
@@ -585,4 +585,6 @@ void debuginfo_cache__delete(void);
 int annotation_br_cntr_entry(char **str, int br_cntr_nr, u64 *br_cntr,
 			     int num_aggr, struct evsel *evsel);
 int annotation_br_cntr_abbr_list(char **str, struct evsel *evsel, bool header);
+
+int evsel__get_arch(struct evsel *evsel, struct arch **parch);
 #endif	/* __PERF_ANNOTATE_H */
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2025-10-22  0:39 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-13 16:10 [PATCH] perf tools annotate: fix a crash when annotate the same symbol with 's' and 'T' Tianyou Li
2025-10-15 12:30 ` James Clark
2025-10-15 16:49   ` Li, Tianyou
2025-10-15 17:20   ` [PATCH v2] " Tianyou Li
2025-10-15 17:30     ` James Clark
2025-10-16  3:36       ` Li, Tianyou
2025-10-16 13:06         ` James Clark
2025-10-16 15:04           ` Li, Tianyou
2025-10-16 15:18             ` James Clark
2025-10-16 16:04               ` Li, Tianyou
2025-10-19  3:31                 ` Namhyung Kim
2025-10-20  1:19                   ` Li, Tianyou
2025-10-20  2:14                   ` [PATCH v3 1/2] " Tianyou Li
2025-10-20  4:10                     ` Namhyung Kim
2025-10-20  6:35                       ` Li, Tianyou
2025-10-20  2:14                   ` [PATCH v3 2/2] perf tools annotate: Align the symbol_annotate return code Tianyou Li
2025-10-20  4:11                     ` Namhyung Kim
2025-10-20  6:33                       ` Li, Tianyou
2025-10-20  7:30                       ` [PATCH v4 1/2] perf tools annotate: fix a crash when annotate the same symbol with 's' and 'T' Tianyou Li
2025-10-21 13:56                         ` James Clark
2025-10-22  0:39                         ` Namhyung Kim
2025-10-20  7:30                       ` [PATCH v4 2/2] perf tools annotate: Align the symbol_annotate return code Tianyou Li
2025-10-21 13:56                         ` James Clark
2025-10-16  3:45       ` [PATCH v3] perf tools annotate: fix a crash when annotate the same symbol with 's' and 'T' Tianyou Li

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.