perf script: hook up perf_scripting_context->pevent
Running the check-perf-trace scripts causes segfaults in both the Perl and Python cases: # perf script record check-perf-trace # perf script -s libexec/perf-core/scripts/python/check-perf-trace.py trace_begin Segmentation fault (core dumped) The reason is that the 'pevent' field was added to perf_scripting_context but it wasn't hooked up with an actual pevent in either case, so when one of the 'common' fields is accessed (in util/trace-event-parse.c:get_common_fields()), pevent->events tries to dereference a NULL pointer. This sets the pevent field when the scripting context is set up. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Link: http://lkml.kernel.org/r/d2b1b8166a6ca0a36e1f5255b88a8289058ba236.1358527965.git.tom.zanussi@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
bdb71db29d
Коммит
2de9533d6d
|
@ -292,6 +292,7 @@ static void perl_process_tracepoint(union perf_event *perf_event __maybe_unused,
|
||||||
ns = nsecs - s * NSECS_PER_SEC;
|
ns = nsecs - s * NSECS_PER_SEC;
|
||||||
|
|
||||||
scripting_context->event_data = data;
|
scripting_context->event_data = data;
|
||||||
|
scripting_context->pevent = evsel->tp_format->pevent;
|
||||||
|
|
||||||
ENTER;
|
ENTER;
|
||||||
SAVETMPS;
|
SAVETMPS;
|
||||||
|
|
|
@ -265,6 +265,7 @@ static void python_process_tracepoint(union perf_event *perf_event
|
||||||
ns = nsecs - s * NSECS_PER_SEC;
|
ns = nsecs - s * NSECS_PER_SEC;
|
||||||
|
|
||||||
scripting_context->event_data = data;
|
scripting_context->event_data = data;
|
||||||
|
scripting_context->pevent = evsel->tp_format->pevent;
|
||||||
|
|
||||||
context = PyCObject_FromVoidPtr(scripting_context, NULL);
|
context = PyCObject_FromVoidPtr(scripting_context, NULL);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче