• Masami Hiramatsu's avatar
    perf tools: Make perf_session__register_idle_thread drop the refcount · 9d8b172f
    Masami Hiramatsu authored
    Note that since the thread was already inserted to the session
    list, it will be released when the session is released.
    Also, in perf_session__register_idle_thread() failure path,
    the thread should be put before returning.
    
    Refcnt debugger shows that the perf_session__register_idle_thread
    gets the returned thread, but the caller (__cmd_top) does not
    put the returned idle thread.
    
      ----
      ==== [0] ====
      Unreclaimed thread@0x24e6240
      Refcount +1 => 0 at
        ./perf(thread__new+0xe5) [0x4c8a75]
        ./perf(machine__findnew_thread+0x9a) [0x4bbdba]
        ./perf(perf_session__register_idle_thread+0x28) [0x4c63c8]
        ./perf(cmd_top+0xd7d) [0x43cf6d]
        ./perf() [0x47ba35]
        ./perf(main+0x617) [0x4225b7]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f06027c5af5]
        ./perf() [0x42272d]
      Refcount +1 => 1 at
        ./perf(thread__get+0x2c) [0x4c8bcc]
        ./perf(machine__findnew_thread+0xee) [0x4bbe0e]
        ./perf(perf_session__register_idle_thread+0x28) [0x4c63c8]
        ./perf(cmd_top+0xd7d) [0x43cf6d]
        ./perf() [0x47ba35]
        ./perf(main+0x617) [0x4225b7]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f06027c5af5]
        ./perf() [0x42272d]
      Refcount +1 => 2 at
        ./perf(thread__get+0x2c) [0x4c8bcc]
        ./perf(machine__findnew_thread+0x112) [0x4bbe32]
        ./perf(perf_session__register_idle_thread+0x28) [0x4c63c8]
        ./perf(cmd_top+0xd7d) [0x43cf6d]
        ./perf() [0x47ba35]
        ./perf(main+0x617) [0x4225b7]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f06027c5af5]
        ./perf() [0x42272d]
      ----
    Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/20151209021122.10245.69707.stgit@localhost.localdomain
    [ Drop the refcount in perf_session__register_idle_thread() ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    9d8b172f
session.c 54.9 KB