diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic-events.c index 0f3d6b3d150e093d3e1c970e364abb9677699774..a3844ff43304429f6e3435fc40cfa44eb08ea509 100644 --- a/tools/perf/util/synthetic-events.c +++ b/tools/perf/util/synthetic-events.c @@ -764,14 +764,16 @@ int perf_event__synthesize_thread_map(struct perf_tool *tool, err = 0; for (thread = 0; thread < threads->nr; ++thread) { + /* + * We may race with exiting thread, so don't stop just because + * one thread couldn't be synthesized. + */ if (__event__synthesize_thread(comm_event, mmap_event, fork_event, namespaces_event, perf_thread_map__pid(threads, thread), 0, process, tool, machine, - mmap_data)) { - err = -1; - break; - } + mmap_data)) + continue; /* * comm.pid is set to thread group id by