| Date | Sat, 27 Dec 2014 17:45:56 -0700 | From | David Ahern <> | Subject | Re: [PATCH 18/37] perf tools: Remove thread when map groups initialization failed |
| |
On 12/24/14 12:15 AM, Namhyung Kim wrote: > Otherwise it'll break the machine->threads tree. > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- > tools/perf/util/machine.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c > index 031bace39fdc..beae6e8fe789 100644 > --- a/tools/perf/util/machine.c > +++ b/tools/perf/util/machine.c > @@ -411,6 +411,7 @@ static struct thread *__machine__findnew_thread(struct machine *machine, > * leader and that would screwed the rb tree. > */ > if (thread__init_map_groups(th, machine)) { > + rb_erase(&th->rb_node, &machine->threads); > thread__delete(th); > return NULL; > } >
Can you move the thread__init_map_groups() before the thread is added to the rbtree? If no, you need to delay setting 'machine->last_match = th' otherwise it references a deleted thread.
David
|