From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752186AbbIWFGd (ORCPT ); Wed, 23 Sep 2015 01:06:33 -0400 Received: from mail-pa0-f43.google.com ([209.85.220.43]:36737 "EHLO mail-pa0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750881AbbIWFGc (ORCPT ); Wed, 23 Sep 2015 01:06:32 -0400 Date: Wed, 23 Sep 2015 13:52:11 +0900 From: Namhyung Kim To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Peter Zijlstra , Ingo Molnar , David Ahern , LKML , Arnaldo Carvalho de Melo Subject: Re: [PATCH v2] perf record: Synthesize COMM event for a command line workload Message-ID: <20150923045211.GA15942@sejong> References: <1442881495-2928-1-git-send-email-namhyung@kernel.org> <20150922192534.GA1897@kernel.org> <20150922194825.GB1897@kernel.org> <20150923024959.GA13029@sejong> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.23+102 (2ca89bed6448) (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 23, 2015 at 12:09:20AM -0300, Arnaldo Carvalho de Melo wrote: > Le 23 sept. 2015 12:04 AM, "Namhyung Kim" a écrit : > > > > Hi Arnaldo, > > > > On Tue, Sep 22, 2015 at 04:48:25PM -0300, Arnaldo Carvalho de Melo wrote: > > > Humm, I think it is working by accident, as you're not allocating space > > > for machine->id_hdr_size, please take a look at > > > perf_event__synthesize_thread_map(). > > > > > > Right now its not a problem this line in perf_event__prepare_comm(): > > > > > > memset(event->comm.comm + size, 0, machine->id_hdr_size); > > > > > > Because perf_event is an union and some of its elements, like mmap/mmap2 > > > have that PATH_MAX part, but its just a matter of the id_hdr_size > > > becoming bigger than that and we'll have a problem... > > > > Right. I'll send a fix to include the id_hdr part. > > Thanks! >>From 10123021c4e55f14d3bb8e6cc576694bb76d6699 Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Wed, 23 Sep 2015 11:51:40 +0900 Subject: [PATCH] perf record: Allocate area for sample_id_hdr in a synthesized comm event A previous patch added a synthesized comm event for forked child process but it missed that the event should contain area for sample_id_hdr at the end. It worked by accident since the perf_event union contains bigger event structs like mmap_events. This patch fixes it by dynamically allocating event struct including those area like in perf_event__synthesize_thread_map(). Reported-by: Arnaldo Carvalho de Melo Signed-off-by: Namhyung Kim --- tools/perf/builtin-record.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 6d8302d4612f..5e01c070dbf2 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -637,7 +637,13 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) * Let the child rip */ if (forks) { - union perf_event event; + union perf_event *event; + + event = malloc(sizeof(event->comm) + machine->id_hdr_size); + if (event == NULL) { + err = -ENOMEM; + goto out_child; + } /* * Some H/W events are generated before COMM event @@ -645,10 +651,11 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) * cannot see a correct process name for those events. * Synthesize COMM event to prevent it. */ - perf_event__synthesize_comm(tool, &event, + perf_event__synthesize_comm(tool, event, rec->evlist->workload.pid, process_synthesized_event, - &session->machines.host); + machine); + free(event); perf_evlist__start_workload(rec->evlist); } -- 2.5.0