linux/tools/perf/util
Adrian Hunter 5cb73340d9 perf tools: Make fork event processing more resilient
When processing a fork event, the tools lookup the parent thread by its
tid.  In a couple of cases, it is possible for that thread to have the
wrong pid.

That can happen if the data is being processed out of order, or if the
(fork) event that would have removed the erroneous thread was lost.

Assume the latter case, print a dump message, remove the erroneous
thread, create a new one with the correct pid, and keep going.

Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Tested-by: Jiri Olsa <jolsa@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/1439994561-27436-3-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-08-19 14:15:25 -03:00
..
include tools: Copy rbtree_augmented.h from the kernel 2015-07-05 22:59:05 -03:00
scripting-engines tracing: Rename FTRACE_MAX_EVENT to TRACE_EVENT_TYPE_MAX 2015-05-13 14:06:42 -04:00
abspath.c
alias.c perf tools: Introduce zfree 2013-12-27 15:17:00 -03:00
annotate.c perf annotate: Rename source_line_percent to source_line_samples 2015-06-19 16:39:21 -03:00
annotate.h perf annotate: Rename source_line_percent to source_line_samples 2015-06-19 16:39:21 -03:00
auxtrace.c perf auxtrace: Fix misplaced check for HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT 2015-07-15 11:57:28 -03:00
auxtrace.h perf tools: Allow auxtrace data alignment 2015-06-23 18:28:37 -03:00
bitmap.c
Build tools: Copy lib/hweight.c from the kernel sources 2015-07-09 16:29:56 -03:00
build-id.c perf machine: No need to have two DSOs lists 2015-05-29 12:43:43 -03:00
build-id.h perf buildid-cache: Add --purge FILE to remove all caches of FILE 2015-02-27 15:52:33 -03:00
cache.h perf report: Fix some option handling on --stdio 2015-05-14 10:05:22 -03:00
callchain.c perf tools: Enable LBR call stack support 2015-02-18 17:16:17 +01:00
callchain.h perf tools: Move TUI-specific fields out of map_symbol 2015-05-05 18:13:24 -03:00
cgroup.c perf cgroup: Use atomic.h for refcounting 2015-05-15 16:12:20 -03:00
cgroup.h perf cgroup: Use atomic.h for refcounting 2015-05-15 16:12:20 -03:00
cloexec.c perf bench numa: Fix to show proper convergence stats 2015-06-25 12:28:35 -03:00
cloexec.h perf tools: Work around lack of sched_getcpu in glibc < 2.6. 2015-03-24 12:08:07 -03:00
color.c perf tools: Remove some unused functions from color.c 2015-01-21 13:24:32 -03:00
color.h perf tools: Remove some unused functions from color.c 2015-01-21 13:24:32 -03:00
comm.c perf comm: Use atomic.h for refcounting 2015-05-27 12:21:43 -03:00
comm.h perf tools: Add facility to export data in database-friendly way 2014-10-29 10:32:49 -02:00
config.c perf tools: Add --buildid-dir option to set cache directory 2014-12-09 09:14:35 -03:00
cpumap.c perf tools: Add reference counting for cpu_map object 2015-06-25 15:15:50 -03:00
cpumap.h perf tools: Add reference counting for cpu_map object 2015-06-25 15:15:50 -03:00
ctype.c
data-convert-bt.c perf data: Fix signedness of value 2015-04-29 10:37:49 -03:00
data-convert-bt.h perf data: Support using -f to override perf.data file ownership for 'convert' 2015-04-02 13:18:52 -03:00
data.c perf util: Replace strerror with strerror_r for thread-safety 2014-08-15 10:58:35 -03:00
data.h perf tools: Add perf_data_file__write interface 2013-12-02 09:22:46 -03:00
db-export.c perf db-export: Fix thread ref-counting 2015-05-29 12:43:39 -03:00
db-export.h perf db-export: No need to have ->thread twice in struct export_sample 2015-04-02 13:18:43 -03:00
debug.c perf data: Add perf data to CTF conversion support 2015-02-25 16:13:12 -03:00
debug.h perf data: Add perf data to CTF conversion support 2015-02-25 16:13:12 -03:00
dso.c perf tools: Reference count struct dso 2015-06-08 10:31:40 -03:00
dso.h perf tools: Reference count struct dso 2015-06-08 10:31:40 -03:00
dwarf-aux.c perf tools: Fix dwarf-aux.c compilation on i386 2015-05-15 16:59:43 -03:00
dwarf-aux.h perf probe: Ignore tail calls to probed functions 2015-05-14 10:05:09 -03:00
environment.c perf report: Fix some option handling on --stdio 2015-05-14 10:05:22 -03:00
event.c perf thread_map: Don't access the array entries directly 2015-06-23 18:21:44 -03:00
event.h perf tools: Configurable per thread proc map processing time out 2015-06-19 18:27:13 -03:00
evlist.c perf evlist: Propagate thread maps through the evlist 2015-06-25 15:15:51 -03:00
evlist.h perf stat: Move perf_evlist__(alloc|free|reset)_stats into stat object 2015-06-26 11:44:37 -03:00
evsel.c perf stat: Remove perf_evsel__read_cb function 2015-06-26 11:50:51 -03:00
evsel.h perf stat: Remove perf_evsel__read_cb function 2015-06-26 11:50:51 -03:00
exec_cmd.c
exec_cmd.h
find-vdso-map.c perf tools: Build programs to copy 32-bit compatibility 2014-10-29 10:32:48 -02:00
generate-cmdlist.sh tools/perf: Standardize feature support define names to: HAVE_{FEATURE}_SUPPORT 2013-10-09 08:48:28 +02:00
header.c perf header: Delete an unnecessary check before the calling free_event_desc() 2015-06-25 15:15:49 -03:00
header.h perf header: Add AUX area tracing feature 2015-04-29 10:37:49 -03:00
help.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
help.h
hist.c perf tools: Replace map->referenced & maps->removed_maps with map->refcnt 2015-06-16 10:34:38 -03:00
hist.h perf hists: Reducing arguments of hist_entry_iter__add() 2015-05-27 12:21:43 -03:00
intlist.c perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
intlist.h perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
kvm-stat.h perf kvm: Support using -f to override perf.data.guest file ownership 2015-04-02 13:18:47 -03:00
levenshtein.c
levenshtein.h
lzma.c perf tools: Add lzma decompression support for kernel module 2015-03-21 14:53:40 -03:00
machine.c perf tools: Make fork event processing more resilient 2015-08-19 14:15:25 -03:00
machine.h perf tools: Configurable per thread proc map processing time out 2015-06-19 18:27:13 -03:00
map.c perf tools: Replace map->referenced & maps->removed_maps with map->refcnt 2015-06-16 10:34:38 -03:00
map.h perf tools: Replace map->referenced & maps->removed_maps with map->refcnt 2015-06-16 10:34:38 -03:00
ordered-events.c perf ordered_samples: Remove references to perf_{evlist,tool} and machines 2015-03-31 17:52:32 -03:00
ordered-events.h perf ordered_samples: Remove references to perf_{evlist,tool} and machines 2015-03-31 17:52:32 -03:00
pager.c perf report: Fix some option handling on --stdio 2015-05-14 10:05:22 -03:00
parse-branch-options.c perf record: Add support for sampling indirect jumps 2015-06-07 16:08:31 +02:00
parse-branch-options.h perf tools: Move branch option parsing to own file 2015-05-27 21:02:17 -03:00
parse-events.c perf tools: Add reference counting for cpu_map object 2015-06-25 15:15:50 -03:00
parse-events.h perf tools: Fix function declarations needed by parse-events.y 2015-05-27 12:21:43 -03:00
parse-events.l perf tools: Allow events with dot 2015-06-23 18:21:37 -03:00
parse-events.y perf tools: Fix parse_events_error dereferences 2015-05-27 12:21:43 -03:00
parse-options.c perf report: Don't allow empty argument for '-t'. 2015-03-19 13:53:28 -03:00
parse-options.h perf record: Add AUX area tracing Snapshot Mode support 2015-05-05 18:13:01 -03:00
path.c tools/perf: Turn strlcpy() into a __weak function 2013-10-09 08:48:49 +02:00
perf_regs.c perf tools: Cache register accesses for unwind processing 2014-06-12 16:53:19 +02:00
perf_regs.h perf tools: Cache register accesses for unwind processing 2014-06-12 16:53:19 +02:00
PERF-VERSION-GEN perf tools: Fix version when building out of tree 2013-11-07 10:40:47 -03:00
pmu.c perf pmu: Split perf_pmu__new_alias() 2015-06-23 18:21:30 -03:00
pmu.h perf tools: Add term support for parse_events_error 2015-04-29 10:38:01 -03:00
pmu.l
pmu.y perf tools: Fix build with bison 2.3 and older. 2013-02-14 16:12:34 -03:00
probe-event.c perf probe: Fix failure to probe events on arm 2015-06-23 18:21:44 -03:00
probe-event.h perf probe: Show the error reason comes from invalid DSO 2015-05-27 12:21:45 -03:00
probe-finder.c perf tools: Reference count struct dso 2015-06-08 10:31:40 -03:00
probe-finder.h perf probe: Introduce probe_conf global configs 2015-05-08 16:26:26 -03:00
pstack.c perf tools: Introduce pstack_peek() 2015-05-05 18:13:22 -03:00
pstack.h perf tools: Introduce pstack_peek() 2015-05-05 18:13:22 -03:00
python-ext-sources tools: Copy lib/hweight.c from the kernel sources 2015-07-09 16:29:56 -03:00
python.c perf tools: Add reference counting for thread_map object 2015-06-25 15:15:50 -03:00
quote.c
quote.h
rblist.c perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
rblist.h perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
record.c perf tools: Add reference counting for cpu_map object 2015-06-25 15:15:50 -03:00
run-command.c perf util: Replace strerror with strerror_r for thread-safety 2014-08-15 10:58:35 -03:00
run-command.h
session.c perf tools: Add reference counting for cpu_map object 2015-06-25 15:15:50 -03:00
session.h perf tools: Add AUX area tracing index 2015-05-04 19:48:47 -03:00
setup.py tools lib api: Rename libapikfs.a to libapi.a 2015-02-12 17:55:18 -03:00
sigchain.c
sigchain.h
sort.c perf report: Fix sort__sym_cmp to also compare end of symbol 2015-06-19 18:14:05 -03:00
sort.h perf tools: Move TUI-specific fields out of map_symbol 2015-05-05 18:13:24 -03:00
srcline.c perf: Fix building warning on ARM 32 2014-12-19 13:09:43 +01:00
stat-shadow.c perf stat: Fix transaction lenght metrics 2015-07-28 12:05:04 -03:00
stat.c perf stat: Introduce perf_evsel__alloc_stats function 2015-06-26 11:46:00 -03:00
stat.h perf stat: Introduce --per-thread option 2015-06-26 12:05:04 -03:00
strbuf.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
strbuf.h
strfilter.c perf tools: Add strfilter__string to recover rules string 2015-05-04 12:43:54 -03:00
strfilter.h perf tools: Add strfilter__string to recover rules string 2015-05-04 12:43:54 -03:00
string.c Revert "perf tools: Default to cpu// for events v5" 2014-10-15 16:04:33 -03:00
strlist.c perf tools: Fix build error due to zfree() cast 2014-01-15 15:10:04 -03:00
strlist.h perf tools: Stop using 'self' in strlist 2013-01-25 12:49:28 -03:00
svghelper.c perf tools: Add reference counting for cpu_map object 2015-06-25 15:15:50 -03:00
svghelper.h perf timechart: Implement IO mode 2014-07-10 00:22:54 +02:00
symbol-elf.c perf tools: Reference count struct dso 2015-06-08 10:31:40 -03:00
symbol-minimal.c perf symbols: Save DSO loading errno to better report errors 2015-03-24 12:08:43 -03:00
symbol.c perf symbols: Store if there is a filter in place 2015-07-13 08:21:57 -03:00
symbol.h perf symbols: Store if there is a filter in place 2015-07-13 08:21:57 -03:00
target.c perf target: Simplify handling of strerror_r return 2015-03-24 12:08:30 -03:00
target.h perf target: Move the checking of which map function to call into function. 2013-12-04 13:46:37 -03:00
thread_map.c perf thread_map: Fix the sizeof() calculation for map entries 2015-07-09 12:28:53 -03:00
thread_map.h perf thrad_map: Add comm string into array 2015-06-26 11:07:01 -03:00
thread-stack.c perf tools: Ensure thread-stack is flushed 2015-06-19 16:03:33 -03:00
thread-stack.h perf tools: Ensure thread-stack is flushed 2015-06-19 16:03:33 -03:00
thread.c perf tools: Avoid deadlock when map_groups are broken 2015-08-19 14:15:09 -03:00
thread.h perf tools: Elliminate alignment holes 2015-05-18 10:17:33 -03:00
tool.h perf tools: handle PERF_RECORD_LOST_SAMPLES 2015-06-07 16:09:06 +02:00
top.c perf tools: Rename 'perf_record_opts' to 'record_opts 2013-12-19 14:43:45 -03:00
top.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
trace-event-info.c perf tools: Move pr_* debug macros into debug object 2014-07-17 12:58:39 -03:00
trace-event-parse.c perf tools: Assign default value for some pointers 2015-05-27 12:21:45 -03:00
trace-event-read.c perf tools: Remove needless getopt.h includes 2014-07-17 12:59:00 -03:00
trace-event-scripting.c perf scripting: No need to pass thread twice to the scripting callbacks 2015-04-02 13:18:41 -03:00
trace-event.c tools lib traceevent: Make plugin unload function receive pevent 2014-01-15 15:10:40 -03:00
trace-event.h perf scripting: No need to pass thread twice to the scripting callbacks 2015-04-02 13:18:41 -03:00
tsc.c perf tools: Move rdtsc() function 2014-07-23 11:48:11 -03:00
tsc.h perf tools: Move rdtsc() function 2014-07-23 11:48:11 -03:00
unwind-libdw.c perf callchains: Use thread->mg->machine 2014-10-29 10:32:46 -02:00
unwind-libdw.h perf tools: Add libdw DWARF post unwind support 2014-02-24 09:29:36 -03:00
unwind-libunwind.c perf unwind: Fix a compile error 2015-06-16 10:40:03 -03:00
unwind.h perf callchains: Use thread->mg->machine 2014-10-29 10:32:46 -02:00
usage.c
util.c perf tools: Avoid possible race condition in copyfile() 2015-06-10 11:51:24 -03:00
util.h perf tools: Introduce copyfile_offset() function 2015-05-18 10:17:35 -03:00
values.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
values.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
vdso.c perf tools: Fix lockup using 32-bit compat vdso 2015-07-07 11:05:08 -03:00
vdso.h perf machine: Fix up vdso methods names 2015-05-29 12:43:44 -03:00
wrapper.c
xyarray.c perf tools: Introduce xyarray__reset function 2015-06-16 10:34:39 -03:00
xyarray.h perf tools: Introduce xyarray__reset function 2015-06-16 10:34:39 -03:00
zlib.c perf tools: Add gzip decompression support for kernel module 2014-11-05 10:11:26 -03:00