lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CABPqkBTTE=36vjMuXjiPojAYsTQfYzSk7=3Jo2WC4ryh7+gpaQ@mail.gmail.com> Date: Thu, 10 Jan 2013 22:53:26 +0100 From: Stephane Eranian <eranian@...gle.com> To: Jiri Olsa <jolsa@...hat.com> Cc: LKML <linux-kernel@...r.kernel.org>, Peter Zijlstra <peterz@...radead.org>, "mingo@...e.hu" <mingo@...e.hu>, "ak@...ux.intel.com" <ak@...ux.intel.com>, Arnaldo Carvalho de Melo <acme@...hat.com>, Namhyung Kim <namhyung.kim@....com> Subject: Re: [PATCH v5 11/18] perf tools: add mem access sampling core support On Wed, Jan 9, 2013 at 5:55 PM, Jiri Olsa <jolsa@...hat.com> wrote: > On Mon, Jan 07, 2013 at 07:27:50PM +0100, Stephane Eranian wrote: > > SNIP > >> >> +static void ip__resolve_data(struct machine *self, struct thread *thread, >> + u8 m, >> + struct addr_map_symbol *ams, >> + u64 addr) >> +{ >> + struct addr_location al; >> + >> + memset(&al, 0, sizeof(al)); >> + >> + thread__find_addr_location(thread, self, m, MAP__VARIABLE, addr, &al, >> + NULL); >> + ams->addr = addr; >> + ams->al_addr = al.addr; >> + ams->sym = al.sym; >> + ams->map = al.map; >> +} >> + >> +struct mem_info *machine__resolve_mem(struct machine *self, >> + struct thread *thr, >> + struct perf_sample *sample, >> + u8 cpumode) >> +{ >> + struct mem_info *mi; >> + >> + mi = calloc(1, sizeof(struct mem_info)); >> + if (!mi) >> + return NULL; >> + >> + ip__resolve_ams(self, thr, &mi->iaddr, sample->ip); >> + ip__resolve_data(self, thr, cpumode, &mi->daddr, sample->addr); >> + mi->cost = sample->weight; >> + mi->dsrc.val = sample->dsrc; >> + >> + return mi; >> +} >> + > > The crash I report is due to the some maps could be removed > via map_groups__fixup_overlappings. > > Attached patch makes the code working for me, but we might > want to have some global unified fix for that, since this > is not the only place suffering for that. > > Like globaly set map->referenced in add_hist_entry or > hist_entry__new functions.. > > Would something like that work for you (untested)? diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index 7034500..fc05b9f 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c @@ -274,6 +274,12 @@ static struct hist_entry *hist_entry__new(struct hist_entry *template) if (he->ms.map) he->ms.map->referenced = true; + if (he->mem_info) { + if (he->mem_info->iaddr.map) + he->mem_info->iaddr.map->referenced = true; + if (he->mem_info->daddr.map) + he->mem_info->daddr.map->referenced = true; + } if (symbol_conf.use_callchain) callchain_init(he->callchain); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists