Re: [PATCH] perf script: Fix obtaining next event

From: Ravi Bangoria
Date: Wed Oct 30 2019 - 05:46:28 EST




On 10/30/19 2:10 PM, Chandan Rajendra wrote:
The current code segfaults when perf.data file contains two or more
events. This happens due to incorrect pointer arithmetic being performed
in trace_find_next_event().

tep_handle->events is an array of pointers to 'struct tep_event'. The
pointer arithmetic interprets tep_handle->events as an array of 'struct
tep_event' elements.

This commit replaces the usage of pointer arithmetic with calls to
tep_get_event().

Fixes: bb3dd7e ("tools lib traceevent, perf tools: Move struct tep_handler definition in a local header file")
Signed-off-by: Chandan Rajendra <chandanrlinux@xxxxxxxxx>

$ sudo ./perf record -e sched:sched_switch -e syscalls:sys_enter_openat -- make

Without patch:
$ sudo ./perf script -g python
Segmentation fault

With patch:
$ sudo ./perf script -g python
generated Python script: perf-script.py

Reviewed-and-tested-by: Ravi Bangoria <ravi.bangoria@xxxxxxxxxxxxx>