lkml.org 
[lkml]   [2015]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 1/2] perf data: Show error message when ctf setup failed
    From
    On Fri, Apr 10, 2015 at 8:37 AM, Jiri Olsa <jolsa@redhat.com> wrote:
    > On Fri, Apr 10, 2015 at 02:05:45PM +0200, Jiri Olsa wrote:
    >
    > SNIP
    >
    >> > >>I tested by using babeltrace binary and it works.
    >> > >>
    >> > >>After receiving your reply, I test on the latest tracecompass. A
    >> > >>folder named 'ctf' is showed instead of the expected file
    >> > >>'ctf-data', this folder only contains the raw metadata and
    >> > >>perf-stream files but not analysed.
    >> > >CC-ing Alexandre from tracecompass devel ^^^
    >> >
    >> > Hi,
    >> >
    >> > I just came back from vacation, sorry for not replying earlier!
    >> >
    >> > I managed to compile perf with CTF support, but by using Babeltrace's commit
    >> > 5584a48. It fails to compile against current master, because of private
    >> > headers getting exposed. I reported that to the BT maintainers.
    >>
    >> there's fix in babeltrace tree already
    >>
    >> >
    >> > Then it seems there's another bug with Trace Compass's current master, trace
    >> > validation cannot fail, and any file will get imported with no errors. We
    >> > will look into this.
    >> > But the root of the problem was that the converted CTF trace was not being
    >> > recognized as valid. This is because some events define "stream_id = 0;",
    >> > and others don't specify a stream_id at all. It seems quite random, see the
    >> > full metadata here: http://pastebin.com/pACgV5JU
    >> >
    >> > Is there a reason why some events specify a stream_id and some don't?
    >>
    >> hum, that seems like a bug.. I'll check
    >>
    >
    > ok, found the problem.. the "stream_id" event_class's attribute is created
    > only when the instance of the event (not event_class) is created
    >
    > so you'll see the stream_id attribute only for events, that
    > we actually got data for.. the rest is without, because
    > their instance was never created
    >
    > seems to me like libbabeltrace bug, unless the application should
    > take care about stream_id attribute.. but it's not the case for
    > the rest of the 'internal' attributes.. Jeremie?

    According to the spec, the stream_id attribute can be left unspecified
    if only one stream is defined. However, is seems Babeltrace's CTF-Writer
    will leave the stream_id out of the event's declaration even when
    multiple streams are defined.

    I'll submit a fix.

    Thanks.
    Jérémie

    >
    > anyway, I made a attached workaround and it all works nicely again,
    > tracecompass is happy and shows the data properly
    >
    > I put all the pending ctf changes (plus the workaround) into:
    > git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
    > perf/ctf branch
    >
    > jirka
    >
    >
    > ---
    > diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
    > index 977cc3f98d8f..d7f03dcb1700 100644
    > --- a/tools/perf/util/data-convert-bt.c
    > +++ b/tools/perf/util/data-convert-bt.c
    > @@ -803,6 +803,7 @@ static int add_generic_types(struct ctf_writer *cw, struct perf_evsel *evsel,
    > static int add_event(struct ctf_writer *cw, struct perf_evsel *evsel)
    > {
    > struct bt_ctf_event_class *event_class;
    > + struct bt_ctf_event *event;
    > struct evsel_priv *priv;
    > const char *name = perf_evsel__name(evsel);
    > int ret;
    > @@ -833,6 +834,14 @@ static int add_event(struct ctf_writer *cw, struct perf_evsel *evsel)
    > if (!priv)
    > goto err;
    >
    > + event = bt_ctf_event_create(event_class);
    > + if (!event) {
    > + pr_err("Failed to create an CTF event\n");
    > + goto err;
    > + }
    > +
    > + bt_ctf_event_put(event);
    > +
    > priv->event_class = event_class;
    > evsel->priv = priv;
    > return 0;



    --
    Jérémie Galarneau
    EfficiOS Inc.
    http://www.efficios.com


    \
     
     \ /
      Last update: 2015-04-13 23:01    [W:3.660 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site