Commit 2337b725 authored by Athira Rajeev's avatar Athira Rajeev Committed by Namhyung Kim
Browse files

perf trace: Add missing perf_tool__init()



Perf trace on perf.data fails as below:

	./perf trace record -- sleep 1
	./perf trace -i perf.data
	perf: Segmentation fault
	Segmentation fault (core dumped)

Backtrace pointed to :
	?? ()
	perf_session.process_user_event ()
	reader.read_event ()
	perf_session.process_events ()
	cmd_trace ()
	run_builtin ()
	handle_internal_command ()
	main ()

Further debug pointed that, segmentation fault happens when
trying to access id_index. Code snippet:

	case PERF_RECORD_ID_INDEX:
		err = tool->id_index(session, event);

Since 'commit 15d4a6f4 ("perf tool: Remove
perf_tool__fill_defaults()")', perf_tool__fill_defaults is
removed. All tools are initialized using perf_tool__init()
prior to use. But in builtin-trace, perf_tool__init is not
used and hence the defaults are not initialized. Use
perf_tool__init() in perf trace to handle the initialization.

Reported-by: default avatarTejas Manhas <Tejas.Manhas1@ibm.com>
Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.ibm.com>
Link: https://lore.kernel.org/r/20250225113157.28836-1-atrajeev@linux.ibm.com


Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent 5c496f1d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4589,6 +4589,7 @@ static int trace__replay(struct trace *trace)
	struct evsel *evsel;
	int err = -1;

	perf_tool__init(&trace->tool, /*ordered_events=*/true);
	trace->tool.sample	  = trace__process_sample;
	trace->tool.mmap	  = perf_event__process_mmap;
	trace->tool.mmap2	  = perf_event__process_mmap2;