linux_dsm_epyc7002/tools/perf
Taeung Song 8579aca3f9 perf script: Exception handling when the print fmt is empty
After collecting samples for events 'syscalls:', perf-script with python
script doesn't occasionally work generating a segmentation fault.

The reason is that the print fmt is empty and a value of
event->print_fmt.args is NULL, so dereferencing the null pointer results
in a segmentation fault i.e.:

    # perf record -e syscalls:*
    # perf script -g python
    # perf script -s perf-script.py

    in trace_begin
    syscalls__sys_enter_brk  3 79841.832099154  3777 test.sh  syscall_nr=12, brk=0

    ... (omitted) ...

    Segmentation fault (core dumped)

For example, a format of sys_enter_getuid() hasn't
print fmt as below.

    # cat /sys/kernel/debug/tracing/events/syscalls/sys_enter_getuid/format
    name: sys_enter_getuid
    ID: 188
    format:
            field:unsigned short common_type;         offset:0; size:2; signed:0;
            field:unsigned char common_flags;         offset:2; size:1; signed:0;
            field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
            field:int common_pid;                     offset:4; size:4; signed:1;
            field:int syscall_nr;                     offset:8; size:4; signed:1;

    print fmt: ""

So add exception handling to avoid this problem.

Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1456413179-12331-1-git-send-email-treeze.taeung@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2016-02-25 12:54:20 -03:00
..
arch perf tools: Rename parse_events__free_terms() to parse_events_terms__delete() 2016-02-12 17:09:17 -03:00
bench
config perf build: Add libcrypto feature detection 2016-02-05 09:46:45 -03:00
Documentation perf top: Add --hierarchy option 2016-02-24 20:21:15 -03:00
jvmti perf jvmti: improve error message in Makefile 2016-02-25 10:43:28 -03:00
python
scripts perf python scripting: Append examples to err msg about audit-libs-python 2016-02-12 11:30:27 -03:00
tests perf tools: Apply tracepoint event definition options to BPF script 2016-02-22 13:02:44 -03:00
trace/strace/groups
ui perf ui/gtk: Implement hierarchy output mode 2016-02-24 20:21:14 -03:00
util perf script: Exception handling when the print fmt is empty 2016-02-25 12:54:20 -03:00
.gitignore
Build
builtin-annotate.c perf hists: Introduce perf_evsel__output_resort function 2016-02-03 11:13:11 -03:00
builtin-bench.c
builtin-buildid-cache.c perf tools: Move timestamp creation to util 2016-01-29 17:30:06 -03:00
builtin-buildid-list.c
builtin-config.c perf config: Add '--system' and '--user' options to select which config file is used 2016-02-12 10:54:46 -03:00
builtin-data.c
builtin-diff.c
builtin-evlist.c
builtin-help.c perf help: No need to use strbuf_remove() 2016-02-23 16:18:37 -03:00
builtin-inject.c perf inject: Add jitdump mmap injection support 2016-02-05 09:46:45 -03:00
builtin-kmem.c
builtin-kvm.c perf kvm/powerpc: Port perf kvm stat to powerpc 2016-01-29 17:49:54 -03:00
builtin-list.c
builtin-lock.c
builtin-mem.c perf mem: Introduce perf_mem_events__name function 2016-02-24 10:11:52 -03:00
builtin-probe.c
builtin-record.c perf record: Apply config to BPF objects before recording 2016-02-22 12:28:02 -03:00
builtin-report.c perf report: Add --hierarchy option 2016-02-24 20:21:15 -03:00
builtin-sched.c
builtin-script.c perf script: Print bpf-output events in 'perf script' 2016-02-24 12:09:24 -03:00
builtin-stat.c perf stat: Bail out on unsupported event config modifiers 2016-02-19 19:12:49 -03:00
builtin-timechart.c
builtin-top.c perf top: Add --hierarchy option 2016-02-24 20:21:15 -03:00
builtin-trace.c
builtin-version.c
builtin.h
command-list.txt
CREDITS
design.txt
Makefile perf build tests: Do parallell builds with 'build-test' 2016-02-04 15:57:00 -03:00
Makefile.perf perf build: Add EXTRA_LDFLAGS option to makefile 2016-02-12 11:30:20 -03:00
MANIFEST
perf-archive.sh
perf-completion.sh
perf-read-vdso.c
perf-sys.h
perf-with-kcore.sh
perf.c perf tools: Use asprintf() for simple string formatting/allocation 2016-02-25 10:14:50 -03:00
perf.h perf record: Add --all-user/--all-kernel options 2016-02-18 10:48:44 -03:00