[lttng-dev] lttng-dev Digest, Vol 156, Issue 8
Ramesh Errabolu
ramesh.errabolu at gmail.com
Wed Apr 7 12:04:20 EDT 2021
Is there a dummy test application and libraries one can download and build.
I could then validate my setup against it.
Regards,
Ramesh
On Wed, Apr 7, 2021 at 11:00 AM <lttng-dev-request at lists.lttng.org> wrote:
> Send lttng-dev mailing list submissions to
> lttng-dev at lists.lttng.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> or, via email, send a message with subject or body 'help' to
> lttng-dev-request at lists.lttng.org
>
> You can reach the person managing the list at
> lttng-dev-owner at lists.lttng.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of lttng-dev digest..."
>
>
> Today's Topics:
>
> 1. Re: lttng-dev Digest, Vol 156, Issue 3 (Jonathan Rajotte-Julien)
> 2. Re: lttng-dev Digest, Vol 156, Issue 3 (Ramesh Errabolu)
> 3. Re: [PATCH lttng-tools] testapp: gen-ust-events: added help
> and sync-before-first-event (Mathieu Desnoyers)
> 4. Re: [PATCH lttng-tools] Fix: test code assumes that child
> process is schedule to run before parent (Mathieu Desnoyers)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 6 Apr 2021 19:46:21 -0400
> From: Jonathan Rajotte-Julien <jonathan.rajotte-julien at efficios.com>
> To: Ramesh Errabolu <ramesh.errabolu at gmail.com>
> Cc: lttng-dev at lists.lttng.org
> Subject: Re: [lttng-dev] lttng-dev Digest, Vol 156, Issue 3
> Message-ID: <20210406234621.GA913141 at joraj-alpa>
> Content-Type: text/plain; charset=us-ascii
>
> > I followed your command sequence and noticed a bunch of files being
> > created. However when I tried to run babeltrace on these outputs I don't
> > see any of the functions that should have been called. Including below
> the
> > search for symbols.
>
> At least userspace tracing seems to work.
>
> I would recommended, again, that you first try tracing on a dummy
> application, a
> really simple one. Then move to the usage of cyg_profile on that dummy app
> then
> to your application.
>
> The cyg profile events are the following:
>
> lttng_ust_cyg_profile_fast:func_entry
> lttng_ust_cyg_profile_fast:func_exit
>
> and, when using liblttng-ust-cyg-profile.so:
>
> lttng_ust_cyg_profile:func_entry
> lttng_ust_cyg_profile:func_exit
>
> I would recommend that you first start grep-ing (lttng_ust_cyg) for this
> in the
> trace to see if any is getting hit and recorded. If it is not the case,
> take a
> step back try with a dummy app and if nothing works with the dummy app we
> can at
> least try to help you from there and remove all other variable since you
> will be
> able to share the dummy app with us.
>
> Cheers
>
>
> ------------------------------
>
> Message: 2
> Date: Tue, 6 Apr 2021 18:56:39 -0500
> From: Ramesh Errabolu <ramesh.errabolu at gmail.com>
> To: Jonathan Rajotte-Julien <jonathan.rajotte-julien at efficios.com>
> Cc: lttng-dev at lists.lttng.org
> Subject: Re: [lttng-dev] lttng-dev Digest, Vol 156, Issue 3
> Message-ID:
> <
> CAFGSPrwnihLeY_CQm8jYb9B0R2RT52U2SaPeVLVSDsqCyxYKSQ at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Will try the dummy app to check if the basic setup is good. Wondering if
> being able to trace shared libraries is something not supported.
>
> Regards,
> Ramesh
>
>
> On Tue, Apr 6, 2021 at 6:46 PM Jonathan Rajotte-Julien <
> jonathan.rajotte-julien at efficios.com> wrote:
>
> > > I followed your command sequence and noticed a bunch of files being
> > > created. However when I tried to run babeltrace on these outputs I
> don't
> > > see any of the functions that should have been called. Including below
> > the
> > > search for symbols.
> >
> > At least userspace tracing seems to work.
> >
> > I would recommended, again, that you first try tracing on a dummy
> > application, a
> > really simple one. Then move to the usage of cyg_profile on that dummy
> app
> > then
> > to your application.
> >
> > The cyg profile events are the following:
> >
> > lttng_ust_cyg_profile_fast:func_entry
> > lttng_ust_cyg_profile_fast:func_exit
> >
> > and, when using liblttng-ust-cyg-profile.so:
> >
> > lttng_ust_cyg_profile:func_entry
> > lttng_ust_cyg_profile:func_exit
> >
> > I would recommend that you first start grep-ing (lttng_ust_cyg) for this
> > in the
> > trace to see if any is getting hit and recorded. If it is not the case,
> > take a
> > step back try with a dummy app and if nothing works with the dummy app we
> > can at
> > least try to help you from there and remove all other variable since you
> > will be
> > able to share the dummy app with us.
> >
> > Cheers
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> https://lists.lttng.org/pipermail/lttng-dev/attachments/20210406/f3c5c020/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 3
> Date: Wed, 7 Apr 2021 11:29:48 -0400 (EDT)
> From: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> To: Anders Wallin <wallinux at gmail.com>
> Cc: lttng-dev <lttng-dev at lists.lttng.org>
> Subject: Re: [lttng-dev] [PATCH lttng-tools] testapp: gen-ust-events:
> added help and sync-before-first-event
> Message-ID:
> <760733085.60423.1617809388155.JavaMail.zimbra at efficios.com>
> Content-Type: text/plain; charset=utf-8
>
> ----- On Apr 1, 2021, at 12:36 PM, lttng-dev lttng-dev at lists.lttng.org
> wrote:
>
> > - added verbose option to print traces
> > - added sync-before-first-event to wait on file before first event
> > - added help option
> > - added missing short option "-e"
> > - don't allow negative wait times
>
> I don't think this is needed. Will explain in the next patch.
>
> Thanks,
>
> Mathieu
>
> >
> > Signed-off-by: Anders Wallin <wallinux at gmail.com>
> > ---
> > .../testapp/gen-ust-events/gen-ust-events.c | 95 ++++++++++++++++---
> > 1 file changed, 82 insertions(+), 13 deletions(-)
> >
> > diff --git a/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> > b/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> > index df1e58e4..5fefb2d8 100644
> > --- a/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> > +++ b/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> > @@ -28,6 +28,15 @@
> > #define TRACEPOINT_DEFINE
> > #include "tp.h"
> >
> > +/* #define NDEBUG */
> > +
> > +#ifndef NDEBUG
> > +int verbose;
> > +#define TRACE(format, ...) { if (verbose) printf(" ---TRACE: " format,
> > __VA_ARGS__); }
> > +#else
> > +#define TRACE(format, ...)
> > +#endif
> > +
> > static struct option long_options[] =
> > {
> > /* These options set a flag. */
> > @@ -38,9 +47,33 @@ static struct option long_options[] =
> > {"sync-before-last-event-touch", required_argument, 0, 'c'},
> > {"sync-before-exit", required_argument, 0, 'd'},
> > {"sync-before-exit-touch", required_argument, 0, 'e'},
> > + {"sync-before-first-event", required_argument, 0, 'f'},
> > + {"help", no_argument, 0, 'h'},
> > +#ifndef NDEBUG
> > + {"verbose", no_argument, 0, 'v'},
> > +#endif
> > {0, 0, 0, 0}
> > };
> >
> > +const char *program_name;
> > +
> > +static void print_usage(void)
> > +{
> > + printf("Usage: %s options\n", program_name);
> > + printf(" -h --help Display
> this usage
> > information\n"
> > +#ifndef NDEBUG
> > + " -v --verbose Print
> verbose
> > messages\n"
> > +#endif
> > + " -i --iter [iterations] Number of
> iterations,
> > default=100, forever=-1\n"
> > + " -w --wait [usec] Time in
> usec between
> > events, default=0\n"
> > + " -a --sync-after-first-event [filename] Create
> file after
> > first event\n"
> > + " -b --sync-before-last-event [filename] Wait for
> file before
> > writing last event\n"
> > + " -c --sync-before-last-event-touch [filename] Create
> file after last
> > event\n"
> > + " -d --sync-before-exit [filename] Wait for
> file before
> > exit\n"
> > + " -e --sync-before-exit-touch [filename] Create
> file before
> > exit\n"
> > + " -f --sync-before-first-event [filename] Wait for
> file before
> > creating the first event\n");
> > +}
> > +
> > int main(int argc, char **argv)
> > {
> > unsigned int i, netint;
> > @@ -54,7 +87,7 @@ int main(int argc, char **argv)
> > uint32_t net_values[] = { 1, 2, 3 };
> > int nr_iter = 100, ret = 0, first_event_file_created = 0;
> > useconds_t nr_usec = 0;
> > - char *after_first_event_file_path = NULL;
> > + char *after_first_event_file_path_touch = NULL;
> > char *before_last_event_file_path = NULL;
> > /*
> > * Touch a file to indicate that all events except one were
> > @@ -65,16 +98,20 @@ int main(int argc, char **argv)
> > char *before_exit_file_path_touch = NULL;
> > /* Wait on file before exiting */
> > char *before_exit_file_path = NULL;
> > + /* Wait on file before starting */
> > + char *before_first_event_file_path = NULL;
> > +
> > + program_name = argv[0];
> >
> > for (i = 0; i < 3; i++) {
> > net_values[i] = htonl(net_values[i]);
> > }
> >
> > - while ((option = getopt_long(argc, argv, "i:w:a:b:c:d:",
> > + while ((option = getopt_long(argc, argv, "i:w:a:b:c:d:e:f:hv",
> > long_options, &option_index)) != -1) {
> > switch (option) {
> > case 'a':
> > - after_first_event_file_path = strdup(optarg);
> > + after_first_event_file_path_touch = strdup(optarg);
> > break;
> > case 'b':
> > before_last_event_file_path = strdup(optarg);
> > @@ -88,22 +125,30 @@ int main(int argc, char **argv)
> > case 'e':
> > before_exit_file_path_touch = strdup(optarg);
> > break;
> > + case 'f':
> > + before_first_event_file_path = strdup(optarg);
> > + break;
> > case 'i':
> > nr_iter = atoi(optarg);
> > break;
> > +#ifndef NDEBUG
> > + case 'v':
> > + verbose = 1;
> > + break;
> > +#endif
> > case 'w':
> > - nr_usec = atoi(optarg);
> > + /* only postive values are valid */
> > + nr_usec = (atoi(optarg) < 0) ? 0 : atoi(optarg);
> > break;
> > - case '?':
> > - /* getopt_long already printed an error message. */
> > + case 'h':
> > default:
> > - ret = -1;
> > + print_usage();
> > goto end;
> > }
> > }
> >
> > if (optind != argc) {
> > - fprintf(stderr, "Error: takes long options only.\n");
> > + fprintf(stderr, "Error: takes options only.\n");
> >
> > /*
> > * Aborting the test program for now because callers
> typically don't check
> > @@ -113,6 +158,7 @@ int main(int argc, char **argv)
> > * we should eventually ensure that all scripts test and
> report the test
> > * app return values.
> > */
> > + print_usage();
> > abort();
> >
> > ret = -1;
> > @@ -125,9 +171,23 @@ int main(int argc, char **argv)
> > goto end;
> > }
> >
> > + TRACE("iter: %i\n", nr_iter);
> > + TRACE("wait: %i (usec)\n", nr_usec);
> > +
> > + if (before_first_event_file_path) {
> > + TRACE("before_first_event_file_path(%i): %s\n",
> > + -1, before_first_event_file_path);
> > + ret = wait_on_file(before_first_event_file_path);
> > + if (ret != 0) {
> > + goto end;
> > + }
> > + }
> > +
> > for (i = 0; nr_iter < 0 || i < nr_iter; i++) {
> > if (nr_iter >= 0 && i == nr_iter - 1) {
> > if (before_last_event_file_path_touch) {
> > +
> TRACE("before_last_event_file_path_touch(%i): %s\n",
> > + i,
> before_last_event_file_path_touch);
> > ret =
> create_file(before_last_event_file_path_touch);
> > if (ret != 0) {
> > goto end;
> > @@ -139,6 +199,8 @@ int main(int argc, char **argv)
> > * event.
> > */
> > if (before_last_event_file_path) {
> > + TRACE("before_last_event_file_path(%i):
> %s\n",
> > + i, before_last_event_file_path);
> > ret =
> wait_on_file(before_last_event_file_path);
> > if (ret != 0) {
> > goto end;
> > @@ -153,9 +215,10 @@ int main(int argc, char **argv)
> > * First loop we create the file if asked to indicate
> > * that at least one tracepoint has been hit.
> > */
> > - if (after_first_event_file_path &&
> first_event_file_created == 0) {
> > - ret = create_file(after_first_event_file_path);
> > -
> > + if (after_first_event_file_path_touch &&
> first_event_file_created == 0) {
> > + TRACE("after_first_event_file_path_touch(%i):
> %s\n",
> > + i, after_first_event_file_path_touch);
> > + ret =
> create_file(after_first_event_file_path_touch);
> > if (ret != 0) {
> > goto end;
> > } else {
> > @@ -164,7 +227,7 @@ int main(int argc, char **argv)
> > }
> >
> > if (nr_usec) {
> > - if (usleep_safe(nr_usec)) {
> > + if (usleep_safe(nr_usec)) {
> > ret = -1;
> > goto end;
> > }
> > @@ -175,22 +238,28 @@ int main(int argc, char **argv)
> > }
> >
> > if (before_exit_file_path_touch) {
> > + TRACE("before_exit_file_path_touch(%i): %s\n",
> > + i, before_exit_file_path_touch);
> > ret = create_file(before_exit_file_path_touch);
> > if (ret != 0) {
> > goto end;
> > }
> > }
> > if (before_exit_file_path) {
> > + TRACE("before_exit_file_path(%i): %s\n",
> > + i, before_exit_file_path);
> > ret = wait_on_file(before_exit_file_path);
> > if (ret != 0) {
> > goto end;
> > }
> > }
> > end:
> > - free(after_first_event_file_path);
> > + TRACE("end status: %i\n", ret);
> > + free(after_first_event_file_path_touch);
> > free(before_last_event_file_path);
> > free(before_last_event_file_path_touch);
> > free(before_exit_file_path);
> > free(before_exit_file_path_touch);
> > + free(before_first_event_file_path);
> > exit(!ret ? EXIT_SUCCESS : EXIT_FAILURE);
> > }
> > --
> > 2.31.1
> >
> > _______________________________________________
> > lttng-dev mailing list
> > lttng-dev at lists.lttng.org
> > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
> --
> Mathieu Desnoyers
> EfficiOS Inc.
> http://www.efficios.com
>
>
> ------------------------------
>
> Message: 4
> Date: Wed, 7 Apr 2021 11:31:46 -0400 (EDT)
> From: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> To: Anders Wallin <wallinux at gmail.com>
> Cc: lttng-dev <lttng-dev at lists.lttng.org>
> Subject: Re: [lttng-dev] [PATCH lttng-tools] Fix: test code assumes
> that child process is schedule to run before parent
> Message-ID:
> <667805472.60438.1617809506670.JavaMail.zimbra at efficios.com>
> Content-Type: text/plain; charset=utf-8
>
> ----- On Apr 1, 2021, at 12:37 PM, lttng-dev lttng-dev at lists.lttng.org
> wrote:
>
> > the following tests fails
> > - test_event_vpid_tracker ust 0 "${EVENT_NAME}"
> > - test_event_vpid_track_untrack ust 0 "${EVENT_NAME}"
> > - test_event_pid_tracker ust 0 "${EVENT_NAME}"
> > - test_event_pid_track_untrack ust 0 "${EVENT_NAME}"
>
> There is indeed an issue with these tests: there is a missing "untrack all
> pids"
> which should be done at the very beginning of each test to have the
> expected
> behavior. AFAIU this explains why there is a small window where traced
> applications
> can generate events when none are expected.
>
> Fixing this should solve the issues without requiring any addition to the
> test
> program.
>
> Thanks,
>
> Mathieu
>
> >
> > Signed-off-by: Anders Wallin <wallinux at gmail.com>
> > ---
> > tests/regression/tools/tracker/test_event_tracker | 15 ++++++---------
> > 1 file changed, 6 insertions(+), 9 deletions(-)
> >
> > diff --git a/tests/regression/tools/tracker/test_event_tracker
> > b/tests/regression/tools/tracker/test_event_tracker
> > index 711690af..78e9310b 100755
> > --- a/tests/regression/tools/tracker/test_event_tracker
> > +++ b/tests/regression/tools/tracker/test_event_tracker
> > @@ -5,7 +5,7 @@
> > #
> > # SPDX-License-Identifier: GPL-2.0-only
> >
> > -TEST_DESC="LTTng - Event traker test"
> > +TEST_DESC="LTTng - Event tracker test"
> >
> > CURDIR=$(dirname "$0")/
> > TESTDIR="$CURDIR/../../.."
> > @@ -30,27 +30,24 @@ SCRIPT_GROUPNAME="$(id -gn)"
> >
> > CHILD_PID=-1
> > WAIT_PATH=
> > -AFTER_FIRST_PATH=
> > -BEFORE_LAST_PATH=
> > +BEFORE_FIRST_PATH=
> >
> > source $TESTDIR/utils/utils.sh
> >
> > function prepare_ust_app
> > {
> > - AFTER_FIRST_PATH=$(mktemp -u)
> > - BEFORE_LAST_PATH=$(mktemp -u)
> > + BEFORE_FIRST_PATH=$(mktemp -u)
> >
> > - $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT -a "$AFTER_FIRST_PATH" -b
> > "$BEFORE_LAST_PATH" &
> > + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-before-first-event
> > "$BEFORE_FIRST_PATH" &
> > CHILD_PID=$!
> > }
> >
> > function trace_ust_app
> > {
> > - touch "$BEFORE_LAST_PATH"
> > + touch "$BEFORE_FIRST_PATH"
> > wait
> > ok $? "Traced application stopped."
> > - rm "$BEFORE_LAST_PATH"
> > - rm "$AFTER_FIRST_PATH"
> > + rm "$BEFORE_FIRST_PATH"
> > }
> >
> > function prepare_kernel_app
> > --
> > 2.31.1
> >
> > _______________________________________________
> > lttng-dev mailing list
> > lttng-dev at lists.lttng.org
> > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
> --
> Mathieu Desnoyers
> EfficiOS Inc.
> http://www.efficios.com
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
>
> ------------------------------
>
> End of lttng-dev Digest, Vol 156, Issue 8
> *****************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.lttng.org/pipermail/lttng-dev/attachments/20210407/bf952d49/attachment-0001.htm>
More information about the lttng-dev
mailing list