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