• Andi Kleen's avatar
    perf script: Fix crash with printing mixed trace point and other events · 96167167
    Andi Kleen authored
    'perf script' crashes currently when printing mixed trace points and
    other events because the trace format does not handle events without
    trace meta data. Add a simple check to avoid that.
    
      % cat > test.c
      main()
      {
          printf("Hello world\n");
      }
      ^D
      % gcc -g -o test test.c
      % sudo perf probe -x test 'test.c:3'
      % perf record -e '{cpu/cpu-cycles,period=10000/,probe_test:main}:S' ./test
      % perf script
      <segfault>
    
    Committer testing:
    
    Before:
    
      # perf probe -x /lib64/libc-2.28.so malloc
      Added new event:
        probe_libc:malloc    (on malloc in /usr/lib64/libc-2.28.so)
    
      You can now use it in all perf tools, such as:
    
    	perf record -e probe_libc:malloc -aR sleep 1
    
      # perf probe -l
      probe_libc:malloc    (on __libc_malloc@malloc/malloc.c in /usr/lib64/libc-2.28.so)
      # perf record -e '{cpu/cpu-cycles,period=10000/,probe_libc:*}:S' sleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.023 MB perf.data (40 samples) ]
      # perf script
      Segmentation fault (core dumped)
      ^C
      #
    
    After:
    
      # perf script | head -6
         sleep 2888 94796.944981: 16198 cpu/cpu-cycles,period=10000/: ffffffff925dc04f get_random_u32+0x1f (/lib/modules/5.0.0-rc2+/build/vmlinux)
         sleep 2888 [-01] 94796.944981: probe_libc:malloc:
         sleep 2888 94796.944983:  4713 cpu/cpu-cycles,period=10000/: ffffffff922763af change_protection+0xcf (/lib/modules/5.0.0-rc2+/build/vmlinux)
         sleep 2888 [-01] 94796.944983: probe_libc:malloc:
         sleep 2888 94796.944986:  9934 cpu/cpu-cycles,period=10000/: ffffffff922777e0 move_page_tables+0x0 (/lib/modules/5.0.0-rc2+/build/vmlinux)
         sleep 2888 [-01] 94796.944986: probe_libc:malloc:
      #
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Link: http://lkml.kernel.org/r/20190117194834.21940-1-andi@firstfloor.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    96167167
builtin-script.c 96.9 KB