• Adrian Hunter's avatar
    perf tools: Fix trigger class trigger_on() · de19e5c3
    Adrian Hunter authored
    trigger_on() means that the trigger is available but not ready, however
    trigger_on() was making it ready. That can segfault if the signal comes
    before trigger_ready(). e.g. (USR2 signal delivery not shown)
    
      $ perf record -e intel_pt//u -S sleep 1
      perf: Segmentation fault
      Obtained 16 stack frames.
      /home/ahunter/bin/perf(sighandler_dump_stack+0x40) [0x4ec550]
      /lib/x86_64-linux-gnu/libc.so.6(+0x36caf) [0x7fa76411acaf]
      /home/ahunter/bin/perf(perf_evsel__disable+0x26) [0x4b9dd6]
      /home/ahunter/bin/perf() [0x43a45b]
      /lib/x86_64-linux-gnu/libc.so.6(+0x36caf) [0x7fa76411acaf]
      /lib/x86_64-linux-gnu/libc.so.6(__xstat64+0x15) [0x7fa7641d2cc5]
      /home/ahunter/bin/perf() [0x4ec6c9]
      /home/ahunter/bin/perf() [0x4ec73b]
      /home/ahunter/bin/perf() [0x4ec73b]
      /home/ahunter/bin/perf() [0x4ec73b]
      /home/ahunter/bin/perf() [0x4eca15]
      /home/ahunter/bin/perf(machine__create_kernel_maps+0x257) [0x4f0b77]
      /home/ahunter/bin/perf(perf_session__new+0xc0) [0x4f86f0]
      /home/ahunter/bin/perf(cmd_record+0x722) [0x43c132]
      /home/ahunter/bin/perf() [0x4a11ae]
      /home/ahunter/bin/perf(main+0x5d4) [0x427fb4]
    
    Note, for testing purposes, this is hard to hit unless you add some sleep()
    in builtin-record.c before record__open().
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Cc: stable@vger.kernel.org
    Fixes: 3dcc4436 ("perf tools: Introduce trigger class")
    Link: http://lkml.kernel.org/r/1519807144-30694-1-git-send-email-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    de19e5c3
trigger.h 1.99 KB