perf session: Remove threads from tree on PERF_RECORD_EXIT
authorArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 17 Jun 2010 11:37:44 +0000 (08:37 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 17 Jun 2010 11:37:44 +0000 (08:37 -0300)
commit720a3aeb7373cb49cf222d5f12e121f78d3d4410
treee2451f06fe4983c4aae971bdaf31fe538a7fec1a
parent174787cb5144e5a45141ec7cb9d95ea29bbe22bb
perf session: Remove threads from tree on PERF_RECORD_EXIT

Move them to a session->dead_threads list just like we do with maps that
are replaced, because we may have hist_entries pointing to them.

This fixes a bug when inserting maps for a new thread that reused the
TID, mixing maps for two different threads, causing an endless loop.

The code for insering maps should be made more robust but for .35 this
is the minimalistic patch.

Reported-by: Ingo Molnar <mingo@elte.hu>
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/event.c
tools/perf/util/session.c
tools/perf/util/session.h
tools/perf/util/thread.h