All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] Base-address tracing for dlopen and dlclose
       [not found] <1384183688-19038-1-git-send-email-paul_woegerer@mentor.com>
@ 2013-11-11 15:28 ` Paul Woegerer
  2013-11-11 15:28 ` [PATCH 2/2] Implement base-address-state tracing Paul Woegerer
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Paul Woegerer @ 2013-11-11 15:28 UTC (permalink / raw)
  To: lttng-dev, mathieu.desnoyers

Provide an LD_PRELOAD library to allow tracing of calls to dlopen and
dlclose.  Tracing the lttng-ust internal use of dlopen and dlclose is
prevented.

Signed-off-by: Paul Woegerer <paul_woegerer@mentor.com>
---
 Makefile.am                          |   2 +
 configure.ac                         |   2 +
 include/Makefile.am                  |   1 +
 include/lttng/tracepoint.h           |  12 +--
 include/lttng/ust-dl.h               |  54 +++++++++++++
 liblttng-ust-baddr/Makefile.am       |  18 +++++
 liblttng-ust-baddr/lttng-ust-baddr.c |  64 ++++++++++++++++
 liblttng-ust-baddr/ust_baddr.c       |  20 +++++
 liblttng-ust-baddr/ust_baddr.h       |  66 ++++++++++++++++
 liblttng-ust-dl/Makefile.am          |  17 +++++
 liblttng-ust-dl/ustdl.c              | 144 +++++++++++++++++++++++++++++++++++
 11 files changed, 395 insertions(+), 5 deletions(-)
 create mode 100644 include/lttng/ust-dl.h
 create mode 100644 liblttng-ust-baddr/Makefile.am
 create mode 100644 liblttng-ust-baddr/lttng-ust-baddr.c
 create mode 100644 liblttng-ust-baddr/ust_baddr.c
 create mode 100644 liblttng-ust-baddr/ust_baddr.h
 create mode 100644 liblttng-ust-dl/Makefile.am
 create mode 100644 liblttng-ust-dl/ustdl.c

diff --git a/Makefile.am b/Makefile.am
index dc88c46..6a82e4d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,6 +4,8 @@ SUBDIRS = . include snprintf libringbuffer liblttng-ust-comm \
 		liblttng-ust \
 		liblttng-ust-ctl \
 		liblttng-ust-fork \
+		liblttng-ust-baddr \
+		liblttng-ust-dl \
 		liblttng-ust-libc-wrapper \
 		liblttng-ust-cyg-profile \
 		tools \
diff --git a/configure.ac b/configure.ac
index cc28205..bac6030 100644
--- a/configure.ac
+++ b/configure.ac
@@ -282,6 +282,8 @@ AC_CONFIG_FILES([
 	liblttng-ust/Makefile
 	liblttng-ust-ctl/Makefile
 	liblttng-ust-fork/Makefile
+	liblttng-ust-baddr/Makefile
+	liblttng-ust-dl/Makefile
 	liblttng-ust-java/Makefile
 	liblttng-ust-libc-wrapper/Makefile
 	liblttng-ust-cyg-profile/Makefile
diff --git a/include/Makefile.am b/include/Makefile.am
index 4f028db..b3243bf 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -13,6 +13,7 @@ nobase_include_HEADERS = \
 	lttng/ringbuffer-abi.h \
 	lttng/ust-tracer.h \
 	lttng/ust-compiler.h \
+	lttng/ust-dl.h \
 	lttng/ust.h \
 	lttng/ust-endian.h \
 	lttng/ringbuffer-config.h \
diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h
index 66e2abd..c1550ec 100644
--- a/include/lttng/tracepoint.h
+++ b/include/lttng/tracepoint.h
@@ -28,10 +28,10 @@
 #include <lttng/tracepoint-types.h>
 #include <lttng/tracepoint-rcu.h>
 #include <urcu/compiler.h>
-#include <dlfcn.h>	/* for dlopen */
 #include <string.h>	/* for memset */
 #include <lttng/ust-config.h>	/* for sdt */
 #include <lttng/ust-compiler.h>
+#include <lttng/ust-dl.h>	/* for lttng_ust_dlopen */
 
 #ifdef LTTNG_UST_HAVE_SDT_INTEGRATION
 #define SDT_USE_VARIADIC
@@ -278,7 +278,8 @@ __tracepoints__init(void)
 
 	if (!tracepoint_dlopen.liblttngust_handle)
 		tracepoint_dlopen.liblttngust_handle =
-			dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
+			lttng_ust_dlopen("liblttng-ust-tracepoint.so.0",
+				RTLD_NOW | RTLD_GLOBAL);
 	if (!tracepoint_dlopen.liblttngust_handle)
 		return;
 	__tracepoint__init_urcu_sym();
@@ -294,7 +295,7 @@ __tracepoints__destroy(void)
 	if (--__tracepoint_registered)
 		return;
 	if (tracepoint_dlopen.liblttngust_handle && !__tracepoint_ptrs_registered) {
-		ret = dlclose(tracepoint_dlopen.liblttngust_handle);
+		ret = lttng_ust_dlclose(tracepoint_dlopen.liblttngust_handle);
 		if (ret) {
 			fprintf(stderr, "Error (%d) in dlclose\n", ret);
 			abort();
@@ -367,7 +368,8 @@ __tracepoints__ptrs_init(void)
 		return;
 	if (!tracepoint_dlopen.liblttngust_handle)
 		tracepoint_dlopen.liblttngust_handle =
-			dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
+			lttng_ust_dlopen("liblttng-ust-tracepoint.so.0",
+				RTLD_NOW | RTLD_GLOBAL);
 	if (!tracepoint_dlopen.liblttngust_handle)
 		return;
 	tracepoint_dlopen.tracepoint_register_lib =
@@ -398,7 +400,7 @@ __tracepoints__ptrs_destroy(void)
 	if (tracepoint_dlopen.tracepoint_unregister_lib)
 		tracepoint_dlopen.tracepoint_unregister_lib(__start___tracepoints_ptrs);
 	if (tracepoint_dlopen.liblttngust_handle && !__tracepoint_registered) {
-		ret = dlclose(tracepoint_dlopen.liblttngust_handle);
+		ret = lttng_ust_dlclose(tracepoint_dlopen.liblttngust_handle);
 		if (ret) {
 			fprintf(stderr, "Error (%d) in dlclose\n", ret);
 			abort();
diff --git a/include/lttng/ust-dl.h b/include/lttng/ust-dl.h
new file mode 100644
index 0000000..f447ff4
--- /dev/null
+++ b/include/lttng/ust-dl.h
@@ -0,0 +1,54 @@
+#ifndef _LTTNG_UST_DL_H
+#define _LTTNG_UST_DL_H
+
+/*
+ * Copyright (C) 2013 - Paul Woegerer <paul.woegerer@mentor.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <dlfcn.h>
+#include <lttng/ust-compiler.h>
+
+void *__attribute__((weak)) lttng_ust_notrace
+_lttng_ust_dl_libc_dlopen(const char *filename, int flag);
+int __attribute__((weak)) lttng_ust_notrace
+_lttng_ust_dl_libc_dlclose(void *handle);
+
+static inline __attribute__((always_inline)) lttng_ust_notrace void *
+lttng_ust_dlopen(const char *filename, int flag);
+static void *
+lttng_ust_dlopen(const char *filename, int flag)
+{
+	if (_lttng_ust_dl_libc_dlopen)
+		return _lttng_ust_dl_libc_dlopen(filename, flag);
+	return dlopen(filename, flag);
+}
+
+static inline __attribute__((always_inline)) lttng_ust_notrace int
+lttng_ust_dlclose(void *handle);
+static int
+lttng_ust_dlclose(void *handle)
+{
+	if (_lttng_ust_dl_libc_dlclose)
+		return _lttng_ust_dl_libc_dlclose(handle);
+	return dlclose(handle);
+}
+
+#endif	/* _LTTNG_UST_DL_H */
diff --git a/liblttng-ust-baddr/Makefile.am b/liblttng-ust-baddr/Makefile.am
new file mode 100644
index 0000000..afa9489
--- /dev/null
+++ b/liblttng-ust-baddr/Makefile.am
@@ -0,0 +1,18 @@
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include
+AM_CFLAGS = -fno-strict-aliasing
+
+lib_LTLIBRARIES = liblttng-ust-baddr.la
+liblttng_ust_baddr_la_SOURCES = \
+	lttng-ust-baddr.c \
+	ust_baddr.c \
+	ust_baddr.h
+liblttng_ust_baddr_la_LIBADD = \
+	-L$(top_builddir)/liblttng-ust/.libs \
+	-llttng-ust
+
+if LTTNG_UST_BUILD_WITH_LIBDL
+liblttng_ust_baddr_la_LIBADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+liblttng_ust_baddr_la_LIBADD += -lc
+endif
diff --git a/liblttng-ust-baddr/lttng-ust-baddr.c b/liblttng-ust-baddr/lttng-ust-baddr.c
new file mode 100644
index 0000000..21c22a2
--- /dev/null
+++ b/liblttng-ust-baddr/lttng-ust-baddr.c
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#define _GNU_SOURCE
+#include <dlfcn.h>
+#include <link.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <stdio.h>
+#include "usterr.h"
+
+#define TRACEPOINT_DEFINE
+#include "ust_baddr.h"
+
+int
+push_baddr(void *so_base, const char *so_name)
+{
+	char resolved_path[PATH_MAX];
+	struct stat sostat;
+
+	if (!realpath(so_name, resolved_path)) {
+		ERR("could not resolve path '%s'", so_name);
+		return 0;
+	}
+
+	if (stat(resolved_path, &sostat)) {
+		ERR("could not access file status for %s", resolved_path);
+		return 0;
+	}
+
+	tracepoint(ust_baddr, push,
+		so_base, resolved_path, sostat.st_size, sostat.st_mtime);
+	return 0;
+}
+
+int
+pop_baddr(void *so_base)
+{
+	tracepoint(ust_baddr, pop, so_base);
+	return 0;
+}
diff --git a/liblttng-ust-baddr/ust_baddr.c b/liblttng-ust-baddr/ust_baddr.c
new file mode 100644
index 0000000..bfbb7bf
--- /dev/null
+++ b/liblttng-ust-baddr/ust_baddr.c
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#define TRACEPOINT_CREATE_PROBES
+#include "ust_baddr.h"
diff --git a/liblttng-ust-baddr/ust_baddr.h b/liblttng-ust-baddr/ust_baddr.h
new file mode 100644
index 0000000..2c757f7
--- /dev/null
+++ b/liblttng-ust-baddr/ust_baddr.h
@@ -0,0 +1,66 @@
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER ust_baddr
+
+#if !defined(_TRACEPOINT_UST_BADDR_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
+#define _TRACEPOINT_UST_BADDR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <stdint.h>
+#include <unistd.h>
+
+#define LTTNG_UST_BADDR_PROVIDER
+#include <lttng/tracepoint.h>
+
+TRACEPOINT_EVENT(ust_baddr, push,
+	TP_ARGS(void *, baddr, const char*, sopath, int64_t, size, int64_t, mtime),
+	TP_FIELDS(
+		ctf_integer_hex(void *, baddr, baddr)
+		ctf_string(sopath, sopath)
+		ctf_integer(int64_t, size, size)
+		ctf_integer(int64_t, mtime, mtime)
+	)
+)
+
+TRACEPOINT_EVENT(ust_baddr, pop,
+	TP_ARGS(void *, baddr),
+	TP_FIELDS(
+		ctf_integer_hex(void *, baddr, baddr)
+	)
+)
+
+#endif /* _TRACEPOINT_UST_BADDR_H */
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./ust_baddr.h"
+
+/* This part must be outside ifdef protection */
+#include <lttng/tracepoint-event.h>
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/liblttng-ust-dl/Makefile.am b/liblttng-ust-dl/Makefile.am
new file mode 100644
index 0000000..14d8abf
--- /dev/null
+++ b/liblttng-ust-dl/Makefile.am
@@ -0,0 +1,17 @@
+AM_CPPFLAGS = -I$(top_srcdir)/include
+AM_CFLAGS = -fno-strict-aliasing
+
+lib_LTLIBRARIES = liblttng-ust-dl.la
+liblttng_ust_dl_la_SOURCES = ustdl.c
+liblttng_ust_dl_la_LIBADD = \
+	$(top_builddir)/liblttng-ust/liblttng-ust.la
+
+if LTTNG_UST_BUILD_WITH_LIBDL
+liblttng_ust_dl_la_LIBADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+liblttng_ust_dl_la_LIBADD += -lc
+endif
+
+libustdl_CFLAGS = -DUST_COMPONENT=liblttng-ust-dl -fno-strict-aliasing
+
diff --git a/liblttng-ust-dl/ustdl.c b/liblttng-ust-dl/ustdl.c
new file mode 100644
index 0000000..314e272
--- /dev/null
+++ b/liblttng-ust-dl/ustdl.c
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul.woegerer@mentor.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; version 2.1 of
+ * the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#define _GNU_SOURCE
+#include <inttypes.h>
+#include <dlfcn.h>
+#include <link.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <signal.h>
+#include <sched.h>
+#include <stdarg.h>
+#include "usterr.h"
+
+#include <lttng/ust-compiler.h>
+#include <lttng/ust.h>
+
+static void *(*__lttng_ust_plibc_dlopen)(const char *filename, int flag);
+static int (*__lttng_ust_plibc_dlclose)(void *handle);
+static void *__lttng_ust_baddr_handle;
+
+void *_lttng_ust_dl_libc_dlopen(const char *filename, int flag)
+{
+	if (!__lttng_ust_plibc_dlopen) {
+		__lttng_ust_plibc_dlopen = dlsym(RTLD_NEXT, "dlopen");
+		if (__lttng_ust_plibc_dlopen == NULL) {
+			fprintf(stderr, "%s\n", dlerror());
+			return NULL;
+		}
+	}
+	return __lttng_ust_plibc_dlopen(filename, flag);
+}
+
+int _lttng_ust_dl_libc_dlclose(void *handle)
+{
+	if (!__lttng_ust_plibc_dlclose) {
+		__lttng_ust_plibc_dlclose = dlsym(RTLD_NEXT, "dlclose");
+		if (__lttng_ust_plibc_dlclose == NULL) {
+			fprintf(stderr, "%s\n", dlerror());
+			return -1;
+		}
+	}
+	return __lttng_ust_plibc_dlclose(handle);
+}
+
+static
+void *lttng_ust_baddr_handle(void)
+{
+	if (!__lttng_ust_baddr_handle) {
+		__lttng_ust_baddr_handle = _lttng_ust_dl_libc_dlopen(
+			"liblttng-ust-baddr.so.0", RTLD_NOW | RTLD_GLOBAL);
+		if (__lttng_ust_baddr_handle == NULL)
+			fprintf(stderr, "%s\n", dlerror());
+	}
+	return __lttng_ust_baddr_handle;
+}
+
+static
+int lttng_ust_baddr_push(void *so_base, const char *so_name)
+{
+	static int
+	(*lttng_ust_baddr_push_fn)(void *so_base, const char *so_name);
+	if (!lttng_ust_baddr_push_fn) {
+		void *baddr_handle = lttng_ust_baddr_handle();
+		if (baddr_handle) {
+			lttng_ust_baddr_push_fn = dlsym(baddr_handle,
+				"push_baddr");
+			if (lttng_ust_baddr_push_fn == NULL)
+				fprintf(stderr, "%s\n", dlerror());
+		}
+		if (!lttng_ust_baddr_push_fn)
+			return -1;
+	}
+	return lttng_ust_baddr_push_fn(so_base, so_name);
+}
+
+static
+int lttng_ust_baddr_pop(void *so_base)
+{
+	static int
+	(*lttng_ust_baddr_pop_fn)(void *so_base);
+	if (!lttng_ust_baddr_pop_fn) {
+		void *baddr_handle = lttng_ust_baddr_handle();
+		if (baddr_handle) {
+			lttng_ust_baddr_pop_fn = dlsym(baddr_handle,
+				"pop_baddr");
+			if (lttng_ust_baddr_pop_fn == NULL)
+				fprintf(stderr, "%s\n", dlerror());
+		}
+		if (!lttng_ust_baddr_pop_fn)
+			return -1;
+	}
+	return lttng_ust_baddr_pop_fn(so_base);
+}
+
+void *dlopen(const char *filename, int flag)
+{
+	void *handle = _lttng_ust_dl_libc_dlopen(filename, flag);
+	if (handle) {
+		struct link_map *p = NULL;
+		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
+			&& p->l_addr != 0)
+			lttng_ust_baddr_push((void *) p->l_addr, p->l_name);
+	}
+	return handle;
+}
+
+int dlclose(void *handle)
+{
+	if (handle) {
+		struct link_map *p = NULL;
+		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
+			&& p->l_addr != 0)
+			lttng_ust_baddr_pop((void *) p->l_addr);
+	}
+	return _lttng_ust_dl_libc_dlclose(handle);
+}
+
+static void __attribute__((destructor))
+lttng_ust_baddr_handle_fini(void);
+static void
+lttng_ust_baddr_handle_fini(void)
+{
+	if (__lttng_ust_baddr_handle) {
+		int ret = _lttng_ust_dl_libc_dlclose(__lttng_ust_baddr_handle);
+		if (ret)
+			fprintf(stderr, "%s\n", dlerror());
+	}
+}
-- 
1.8.4.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] Implement base-address-state tracing
       [not found] <1384183688-19038-1-git-send-email-paul_woegerer@mentor.com>
  2013-11-11 15:28 ` [PATCH 1/2] Base-address tracing for dlopen and dlclose Paul Woegerer
@ 2013-11-11 15:28 ` Paul Woegerer
  2013-11-12 19:59 ` [PATCH lttng-ust 0/2] Shared object base address tracing Alexandre Montplaisir
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Paul Woegerer @ 2013-11-11 15:28 UTC (permalink / raw)
  To: lttng-dev, mathieu.desnoyers

Dump the base-address state (executable and shared objects) into session
on session-enable (per-session events).

Signed-off-by: Paul Woegerer <paul_woegerer@mentor.com>
---
 include/lttng/ust-tracepoint-event.h     | 14 ++++++++
 liblttng-ust-baddr/Makefile.am           |  4 ++-
 liblttng-ust-baddr/lttng-ust-baddr.c     | 47 +++++++++++++++++++++++++
 liblttng-ust-baddr/ust_baddr_statedump.c | 21 +++++++++++
 liblttng-ust-baddr/ust_baddr_statedump.h | 60 ++++++++++++++++++++++++++++++++
 liblttng-ust/lttng-events.c              | 10 ++++++
 liblttng-ust/lttng-tracer-core.h         |  2 ++
 liblttng-ust/lttng-ust-comm.c            | 52 +++++++++++++++++++++++++++
 8 files changed, 209 insertions(+), 1 deletion(-)
 create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.c
 create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.h

diff --git a/include/lttng/ust-tracepoint-event.h b/include/lttng/ust-tracepoint-event.h
index bb3a05d..be58030 100644
--- a/include/lttng/ust-tracepoint-event.h
+++ b/include/lttng/ust-tracepoint-event.h
@@ -480,6 +480,18 @@ size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args))      \
 #define TP_FIELDS(...) __VA_ARGS__
 
 /*
+ * For state dump, check that "session" argument (mandatory) matches the
+ * session this event belongs to. Ensures that we write state dump data only
+ * into the started session, not into all sessions.
+ */
+#undef _TP_SESSION_CHECK
+#ifdef TP_SESSION_CHECK
+#define _TP_SESSION_CHECK(session, csession)   (session == csession)
+#else /* TP_SESSION_CHECK */
+#define _TP_SESSION_CHECK(session, csession)   1
+#endif /* TP_SESSION_CHECK */
+
+/*
  * Using twice size for filter stack data to hold size and pointer for
  * each field (worse case). For integers, max size required is 64-bit.
  * Same for double-precision floats. Those fit within
@@ -506,6 +518,8 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))	      \
 									      \
 	if (0)								      \
 		(void) __dynamic_len_idx;	/* don't warn if unused */    \
+	if (!_TP_SESSION_CHECK(session, __chan->session))		      \
+		return;							      \
 	if (caa_unlikely(!CMM_ACCESS_ONCE(__chan->session->active)))	      \
 		return;							      \
 	if (caa_unlikely(!CMM_ACCESS_ONCE(__chan->enabled)))		      \
diff --git a/liblttng-ust-baddr/Makefile.am b/liblttng-ust-baddr/Makefile.am
index afa9489..0d3cf28 100644
--- a/liblttng-ust-baddr/Makefile.am
+++ b/liblttng-ust-baddr/Makefile.am
@@ -5,7 +5,9 @@ lib_LTLIBRARIES = liblttng-ust-baddr.la
 liblttng_ust_baddr_la_SOURCES = \
 	lttng-ust-baddr.c \
 	ust_baddr.c \
-	ust_baddr.h
+	ust_baddr.h \
+	ust_baddr_statedump.c \
+	ust_baddr_statedump.h
 liblttng_ust_baddr_la_LIBADD = \
 	-L$(top_builddir)/liblttng-ust/.libs \
 	-llttng-ust
diff --git a/liblttng-ust-baddr/lttng-ust-baddr.c b/liblttng-ust-baddr/lttng-ust-baddr.c
index 21c22a2..92b5cca 100644
--- a/liblttng-ust-baddr/lttng-ust-baddr.c
+++ b/liblttng-ust-baddr/lttng-ust-baddr.c
@@ -34,6 +34,7 @@
 
 #define TRACEPOINT_DEFINE
 #include "ust_baddr.h"
+#include "ust_baddr_statedump.h"
 
 int
 push_baddr(void *so_base, const char *so_name)
@@ -62,3 +63,49 @@ pop_baddr(void *so_base)
 	tracepoint(ust_baddr, pop, so_base);
 	return 0;
 }
+
+static int
+_dl_iterate_write_memregion(struct dl_phdr_info *info, size_t size, void *data)
+{
+	int j;
+	int num_loadable_segment = 0;
+
+	for (j = 0; j < info->dlpi_phnum; j++) {
+		if (info->dlpi_phdr[j].p_type == PT_LOAD) {
+			char resolved_path[PATH_MAX];
+			struct stat sostat;
+			void *base_addr_ptr = (void *) info->dlpi_addr
+				+ info->dlpi_phdr[j].p_vaddr;
+
+			num_loadable_segment += 1;
+			if ((info->dlpi_name == NULL || info->dlpi_name[0] == 0)
+				&& num_loadable_segment == 1) {
+				Dl_info dl_info = { 0 };
+				if (!dladdr(base_addr_ptr, &dl_info))
+					return 0;
+				if (!realpath(dl_info.dli_fname, resolved_path))
+					return 0;
+			} else if (!realpath(info->dlpi_name, resolved_path))
+				snprintf(resolved_path, PATH_MAX - 1, "[%s]",
+					info->dlpi_name);
+
+			if (stat(resolved_path, &sostat)) {
+				sostat.st_size = 0;
+				sostat.st_mtime = -1;
+			}
+
+			tracepoint(ust_baddr_statedump, soinfo,
+				(struct lttng_session *) data, base_addr_ptr,
+				resolved_path, sostat.st_size, sostat.st_mtime);
+			break;
+		}
+	}
+	return 0;
+}
+
+int
+baddr_statedump(struct lttng_session *session)
+{
+	dl_iterate_phdr(_dl_iterate_write_memregion, session);
+	return 0;
+}
diff --git a/liblttng-ust-baddr/ust_baddr_statedump.c b/liblttng-ust-baddr/ust_baddr_statedump.c
new file mode 100644
index 0000000..75f74ca
--- /dev/null
+++ b/liblttng-ust-baddr/ust_baddr_statedump.c
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#define TRACEPOINT_CREATE_PROBES
+#define TP_SESSION_CHECK
+#include "ust_baddr_statedump.h"
diff --git a/liblttng-ust-baddr/ust_baddr_statedump.h b/liblttng-ust-baddr/ust_baddr_statedump.h
new file mode 100644
index 0000000..77a9af4
--- /dev/null
+++ b/liblttng-ust-baddr/ust_baddr_statedump.h
@@ -0,0 +1,60 @@
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER ust_baddr_statedump
+
+#if !defined(_TRACEPOINT_UST_BADDR_STATEDUMP_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
+#define _TRACEPOINT_UST_BADDR_STATEDUMP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <stdint.h>
+#include <unistd.h>
+#include <lttng/ust-events.h>
+
+#define LTTNG_UST_BADDR_STATEDUMP_PROVIDER
+#include <lttng/tracepoint.h>
+
+TRACEPOINT_EVENT(ust_baddr_statedump, soinfo,
+	TP_ARGS(struct lttng_session *, session, void *, baddr, const char*, sopath, int64_t, size, int64_t, mtime),
+	TP_FIELDS(
+		ctf_integer_hex(void *, baddr, baddr)
+		ctf_string(sopath, sopath)
+		ctf_integer(int64_t, size, size)
+		ctf_integer(int64_t, mtime, mtime)
+	)
+)
+
+#endif /* _TRACEPOINT_UST_BADDR_STATEDUMP_H */
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./ust_baddr_statedump.h"
+
+/* This part must be outside ifdef protection */
+#include <lttng/tracepoint-event.h>
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c
index 26601a6..814549e 100644
--- a/liblttng-ust/lttng-events.c
+++ b/liblttng-ust/lttng-events.c
@@ -86,6 +86,14 @@ void lttng_session_sync_enablers(struct lttng_session *session);
 static
 void lttng_enabler_destroy(struct lttng_enabler *enabler);
 
+static struct lttng_session *_lttng_session_enabled_transition;
+struct lttng_session *lttng_session_enabled_transition(void)
+{
+	struct lttng_session *ret = _lttng_session_enabled_transition;
+	_lttng_session_enabled_transition = NULL;
+	return ret;
+}
+
 /*
  * Called with ust lock held.
  */
@@ -293,6 +301,8 @@ int lttng_session_enable(struct lttng_session *session)
 	/* Set atomically the state to "active" */
 	CMM_ACCESS_ONCE(session->active) = 1;
 	CMM_ACCESS_ONCE(session->been_active) = 1;
+
+	_lttng_session_enabled_transition = session;
 end:
 	return ret;
 }
diff --git a/liblttng-ust/lttng-tracer-core.h b/liblttng-ust/lttng-tracer-core.h
index f643a7e..f77ebaf 100644
--- a/liblttng-ust/lttng-tracer-core.h
+++ b/liblttng-ust/lttng-tracer-core.h
@@ -45,4 +45,6 @@ const char *lttng_ust_obj_get_name(int id);
 
 int lttng_get_notify_socket(void *owner);
 
+struct lttng_session *lttng_session_enabled_transition(void);
+
 #endif /* _LTTNG_TRACER_CORE_H */
diff --git a/liblttng-ust/lttng-ust-comm.c b/liblttng-ust/lttng-ust-comm.c
index a6e4ba3..a0f1b42 100644
--- a/liblttng-ust/lttng-ust-comm.c
+++ b/liblttng-ust/lttng-ust-comm.c
@@ -43,6 +43,7 @@
 #include <lttng/ust.h>
 #include <lttng/ust-error.h>
 #include <lttng/ust-ctl.h>
+#include <lttng/ust-dl.h>
 #include <urcu/tls-compat.h>
 #include <ust-comm.h>
 #include <usterr-signal-safe.h>
@@ -176,6 +177,7 @@ static const char *cmd_name_mapping[] = {
 
 static const char *str_timeout;
 static int got_timeout_env;
+static void *ust_baddr_handle;
 
 extern void lttng_ring_buffer_client_overwrite_init(void);
 extern void lttng_ring_buffer_client_overwrite_rt_init(void);
@@ -235,6 +237,51 @@ void print_cmd(int cmd, int handle)
 }
 
 static
+void *lttng_ust_baddr_handle(void)
+{
+	if (!ust_baddr_handle) {
+		ust_baddr_handle = lttng_ust_dlopen(
+			"liblttng-ust-baddr.so.0", RTLD_NOW | RTLD_GLOBAL);
+		if (ust_baddr_handle == NULL)
+			ERR("%s", dlerror());
+	}
+	return ust_baddr_handle;
+}
+
+static void __attribute__((destructor))
+lttng_ust_baddr_handle_fini(void);
+static void
+lttng_ust_baddr_handle_fini(void)
+{
+	if (ust_baddr_handle) {
+		int ret = lttng_ust_dlclose(ust_baddr_handle);
+		if (ret)
+			ERR("%s", dlerror());
+	}
+}
+
+static
+int lttng_ust_baddr_statedump(struct lttng_session *session)
+{
+	static
+	int (*lttng_ust_baddr_init_fn)(struct lttng_session *);
+
+	if (!lttng_ust_baddr_init_fn) {
+		void *baddr_handle = lttng_ust_baddr_handle();
+		if (baddr_handle) {
+			lttng_ust_baddr_init_fn = dlsym(baddr_handle,
+				"baddr_statedump");
+			if (lttng_ust_baddr_init_fn == NULL)
+				ERR("%s", dlerror());
+		}
+		if (!lttng_ust_baddr_init_fn)
+			return -1;
+	}
+
+	return lttng_ust_baddr_init_fn(session);
+}
+
+static
 int setup_local_apps(void)
 {
 	const char *home_dir;
@@ -1143,6 +1190,11 @@ restart:
 			ret = handle_message(sock_info, sock, &lum);
 			if (ret) {
 				ERR("Error handling message for %s socket", sock_info->name);
+			} else {
+				struct lttng_session *session =
+					lttng_session_enabled_transition();
+				if (session)
+					lttng_ust_baddr_statedump(session);
 			}
 			continue;
 		default:
-- 
1.8.4.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH lttng-ust 0/2] Shared object base address tracing
       [not found] <1384183688-19038-1-git-send-email-paul_woegerer@mentor.com>
  2013-11-11 15:28 ` [PATCH 1/2] Base-address tracing for dlopen and dlclose Paul Woegerer
  2013-11-11 15:28 ` [PATCH 2/2] Implement base-address-state tracing Paul Woegerer
@ 2013-11-12 19:59 ` Alexandre Montplaisir
       [not found] ` <52828889.6030403@voxpopuli.im>
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Alexandre Montplaisir @ 2013-11-12 19:59 UTC (permalink / raw)
  To: Paul Woegerer, mathieu.desnoyers, Matthew Khouzam; +Cc: lttng-dev

Hi Paul,

I tried your patches. It seems to work quite well! I had some
questions/comments:

- The events are called "ust_baddr:push" and "ust_baddr:pop". To be
consistent with the other wrapper libraries in UST, perhaps they should
be called "ust_dl:dlopen" and "ust_dl:dlclose" or similar?

- Why does the "statedump" event seem to give many more libs than the
"push" events? Could we be missing some dlopen's? For example, I traced
glxgears by preloading liblttng-ust-dl.so: http://pastebin.com/HKVa9a4T
(looks better in non-wrapped mode). If I trace before even starting the
application, why am I not getting all the dlopen'ed libararies?

- As Matthew suggested, we could also hijack dlsym(), and with its
parameters we could match a symbol name to an address. This becomes
immensely useful when coupled with the ust-cyg-profile instrumentation,
so we can get information about about function names directly in the
trace! (but ironically, only for the dlopened libraries, and not the
main binary). What do you think of this approach?

In any case, it's quite interesting!

Cheers,
Alexandre



On 13-11-11 10:28 AM, Paul Woegerer wrote:
> The following two patches implement https://bugs.lttng.org/issues/474
>
> The first patch provides tracing of dlopen/dlclose calls with the use of an
> LD_PRELOAD library (liblttng-ust-dl.so) using the following events:
>
>  ust_baddr:push(void *baddr, const char*sopath, int64_t size, int64_t mtime)
>  ust_baddr:pop(void *baddr)
>
> The second patch adds support for tracing the whole state of currently loaded
> shared objects at session-enable time. The corresponding events are only
> emitted into the session that got enabled. The following event is used: 
>
>  ust_baddr_statedump (same args as ust_baddr:push)
>
>
> Paul Woegerer (2):
>   Base-address tracing for dlopen and dlclose
>   Implement base-address-state tracing
>
>  Makefile.am                              |   2 +
>  configure.ac                             |   2 +
>  include/Makefile.am                      |   1 +
>  include/lttng/tracepoint.h               |  12 +--
>  include/lttng/ust-dl.h                   |  54 ++++++++++++
>  include/lttng/ust-tracepoint-event.h     |  14 +++
>  liblttng-ust-baddr/Makefile.am           |  20 +++++
>  liblttng-ust-baddr/lttng-ust-baddr.c     | 111 ++++++++++++++++++++++++
>  liblttng-ust-baddr/ust_baddr.c           |  20 +++++
>  liblttng-ust-baddr/ust_baddr.h           |  66 ++++++++++++++
>  liblttng-ust-baddr/ust_baddr_statedump.c |  21 +++++
>  liblttng-ust-baddr/ust_baddr_statedump.h |  60 +++++++++++++
>  liblttng-ust-dl/Makefile.am              |  17 ++++
>  liblttng-ust-dl/ustdl.c                  | 144 +++++++++++++++++++++++++++++++
>  liblttng-ust/lttng-events.c              |  10 +++
>  liblttng-ust/lttng-tracer-core.h         |   2 +
>  liblttng-ust/lttng-ust-comm.c            |  52 +++++++++++
>  17 files changed, 603 insertions(+), 5 deletions(-)
>  create mode 100644 include/lttng/ust-dl.h
>  create mode 100644 liblttng-ust-baddr/Makefile.am
>  create mode 100644 liblttng-ust-baddr/lttng-ust-baddr.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr.h
>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.h
>  create mode 100644 liblttng-ust-dl/Makefile.am
>  create mode 100644 liblttng-ust-dl/ustdl.c
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] Base-address tracing for dlopen and dlclose
       [not found] ` <1384183688-19038-2-git-send-email-paul_woegerer@mentor.com>
@ 2013-11-12 20:10   ` Matthew Khouzam
  2013-11-13 13:25   ` Mathieu Desnoyers
       [not found]   ` <318817448.66208.1384349143345.JavaMail.zimbra@efficios.com>
  2 siblings, 0 replies; 11+ messages in thread
From: Matthew Khouzam @ 2013-11-12 20:10 UTC (permalink / raw)
  To: lttng-dev

I am curious, why not wrap dlsym? that would allow you to get the
function names and pointers, looks like a goldmine to me.
On 13-11-11 10:28 AM, Paul Woegerer wrote:
> Provide an LD_PRELOAD library to allow tracing of calls to dlopen and
> dlclose.  Tracing the lttng-ust internal use of dlopen and dlclose is
> prevented.
>
> Signed-off-by: Paul Woegerer <paul_woegerer@mentor.com>
> ---
>  Makefile.am                          |   2 +
>  configure.ac                         |   2 +
>  include/Makefile.am                  |   1 +
>  include/lttng/tracepoint.h           |  12 +--
>  include/lttng/ust-dl.h               |  54 +++++++++++++
>  liblttng-ust-baddr/Makefile.am       |  18 +++++
>  liblttng-ust-baddr/lttng-ust-baddr.c |  64 ++++++++++++++++
>  liblttng-ust-baddr/ust_baddr.c       |  20 +++++
>  liblttng-ust-baddr/ust_baddr.h       |  66 ++++++++++++++++
>  liblttng-ust-dl/Makefile.am          |  17 +++++
>  liblttng-ust-dl/ustdl.c              | 144 +++++++++++++++++++++++++++++++++++
>  11 files changed, 395 insertions(+), 5 deletions(-)
>  create mode 100644 include/lttng/ust-dl.h
>  create mode 100644 liblttng-ust-baddr/Makefile.am
>  create mode 100644 liblttng-ust-baddr/lttng-ust-baddr.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr.h
>  create mode 100644 liblttng-ust-dl/Makefile.am
>  create mode 100644 liblttng-ust-dl/ustdl.c
>
> diff --git a/Makefile.am b/Makefile.am
> index dc88c46..6a82e4d 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -4,6 +4,8 @@ SUBDIRS = . include snprintf libringbuffer liblttng-ust-comm \
>  		liblttng-ust \
>  		liblttng-ust-ctl \
>  		liblttng-ust-fork \
> +		liblttng-ust-baddr \
> +		liblttng-ust-dl \
>  		liblttng-ust-libc-wrapper \
>  		liblttng-ust-cyg-profile \
>  		tools \
> diff --git a/configure.ac b/configure.ac
> index cc28205..bac6030 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -282,6 +282,8 @@ AC_CONFIG_FILES([
>  	liblttng-ust/Makefile
>  	liblttng-ust-ctl/Makefile
>  	liblttng-ust-fork/Makefile
> +	liblttng-ust-baddr/Makefile
> +	liblttng-ust-dl/Makefile
>  	liblttng-ust-java/Makefile
>  	liblttng-ust-libc-wrapper/Makefile
>  	liblttng-ust-cyg-profile/Makefile
> diff --git a/include/Makefile.am b/include/Makefile.am
> index 4f028db..b3243bf 100644
> --- a/include/Makefile.am
> +++ b/include/Makefile.am
> @@ -13,6 +13,7 @@ nobase_include_HEADERS = \
>  	lttng/ringbuffer-abi.h \
>  	lttng/ust-tracer.h \
>  	lttng/ust-compiler.h \
> +	lttng/ust-dl.h \
>  	lttng/ust.h \
>  	lttng/ust-endian.h \
>  	lttng/ringbuffer-config.h \
> diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h
> index 66e2abd..c1550ec 100644
> --- a/include/lttng/tracepoint.h
> +++ b/include/lttng/tracepoint.h
> @@ -28,10 +28,10 @@
>  #include <lttng/tracepoint-types.h>
>  #include <lttng/tracepoint-rcu.h>
>  #include <urcu/compiler.h>
> -#include <dlfcn.h>	/* for dlopen */
>  #include <string.h>	/* for memset */
>  #include <lttng/ust-config.h>	/* for sdt */
>  #include <lttng/ust-compiler.h>
> +#include <lttng/ust-dl.h>	/* for lttng_ust_dlopen */
>  
>  #ifdef LTTNG_UST_HAVE_SDT_INTEGRATION
>  #define SDT_USE_VARIADIC
> @@ -278,7 +278,8 @@ __tracepoints__init(void)
>  
>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		tracepoint_dlopen.liblttngust_handle =
> -			dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
> +			lttng_ust_dlopen("liblttng-ust-tracepoint.so.0",
> +				RTLD_NOW | RTLD_GLOBAL);
>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		return;
>  	__tracepoint__init_urcu_sym();
> @@ -294,7 +295,7 @@ __tracepoints__destroy(void)
>  	if (--__tracepoint_registered)
>  		return;
>  	if (tracepoint_dlopen.liblttngust_handle && !__tracepoint_ptrs_registered) {
> -		ret = dlclose(tracepoint_dlopen.liblttngust_handle);
> +		ret = lttng_ust_dlclose(tracepoint_dlopen.liblttngust_handle);
>  		if (ret) {
>  			fprintf(stderr, "Error (%d) in dlclose\n", ret);
>  			abort();
> @@ -367,7 +368,8 @@ __tracepoints__ptrs_init(void)
>  		return;
>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		tracepoint_dlopen.liblttngust_handle =
> -			dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
> +			lttng_ust_dlopen("liblttng-ust-tracepoint.so.0",
> +				RTLD_NOW | RTLD_GLOBAL);
>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		return;
>  	tracepoint_dlopen.tracepoint_register_lib =
> @@ -398,7 +400,7 @@ __tracepoints__ptrs_destroy(void)
>  	if (tracepoint_dlopen.tracepoint_unregister_lib)
>  		tracepoint_dlopen.tracepoint_unregister_lib(__start___tracepoints_ptrs);
>  	if (tracepoint_dlopen.liblttngust_handle && !__tracepoint_registered) {
> -		ret = dlclose(tracepoint_dlopen.liblttngust_handle);
> +		ret = lttng_ust_dlclose(tracepoint_dlopen.liblttngust_handle);
>  		if (ret) {
>  			fprintf(stderr, "Error (%d) in dlclose\n", ret);
>  			abort();
> diff --git a/include/lttng/ust-dl.h b/include/lttng/ust-dl.h
> new file mode 100644
> index 0000000..f447ff4
> --- /dev/null
> +++ b/include/lttng/ust-dl.h
> @@ -0,0 +1,54 @@
> +#ifndef _LTTNG_UST_DL_H
> +#define _LTTNG_UST_DL_H
> +
> +/*
> + * Copyright (C) 2013 - Paul Woegerer <paul.woegerer@mentor.com>
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a copy
> + * of this software and associated documentation files (the "Software"), to deal
> + * in the Software without restriction, including without limitation the rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +
> +#include <dlfcn.h>
> +#include <lttng/ust-compiler.h>
> +
> +void *__attribute__((weak)) lttng_ust_notrace
> +_lttng_ust_dl_libc_dlopen(const char *filename, int flag);
> +int __attribute__((weak)) lttng_ust_notrace
> +_lttng_ust_dl_libc_dlclose(void *handle);
> +
> +static inline __attribute__((always_inline)) lttng_ust_notrace void *
> +lttng_ust_dlopen(const char *filename, int flag);
> +static void *
> +lttng_ust_dlopen(const char *filename, int flag)
> +{
> +	if (_lttng_ust_dl_libc_dlopen)
> +		return _lttng_ust_dl_libc_dlopen(filename, flag);
> +	return dlopen(filename, flag);
> +}
> +
> +static inline __attribute__((always_inline)) lttng_ust_notrace int
> +lttng_ust_dlclose(void *handle);
> +static int
> +lttng_ust_dlclose(void *handle)
> +{
> +	if (_lttng_ust_dl_libc_dlclose)
> +		return _lttng_ust_dl_libc_dlclose(handle);
> +	return dlclose(handle);
> +}
> +
> +#endif	/* _LTTNG_UST_DL_H */
> diff --git a/liblttng-ust-baddr/Makefile.am b/liblttng-ust-baddr/Makefile.am
> new file mode 100644
> index 0000000..afa9489
> --- /dev/null
> +++ b/liblttng-ust-baddr/Makefile.am
> @@ -0,0 +1,18 @@
> +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include
> +AM_CFLAGS = -fno-strict-aliasing
> +
> +lib_LTLIBRARIES = liblttng-ust-baddr.la
> +liblttng_ust_baddr_la_SOURCES = \
> +	lttng-ust-baddr.c \
> +	ust_baddr.c \
> +	ust_baddr.h
> +liblttng_ust_baddr_la_LIBADD = \
> +	-L$(top_builddir)/liblttng-ust/.libs \
> +	-llttng-ust
> +
> +if LTTNG_UST_BUILD_WITH_LIBDL
> +liblttng_ust_baddr_la_LIBADD += -ldl
> +endif
> +if LTTNG_UST_BUILD_WITH_LIBC_DL
> +liblttng_ust_baddr_la_LIBADD += -lc
> +endif
> diff --git a/liblttng-ust-baddr/lttng-ust-baddr.c b/liblttng-ust-baddr/lttng-ust-baddr.c
> new file mode 100644
> index 0000000..21c22a2
> --- /dev/null
> +++ b/liblttng-ust-baddr/lttng-ust-baddr.c
> @@ -0,0 +1,64 @@
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
> + */
> +
> +#define _GNU_SOURCE
> +#include <dlfcn.h>
> +#include <link.h>
> +
> +#include <sys/types.h>
> +#include <sys/stat.h>
> +#include <sys/stat.h>
> +#include <unistd.h>
> +#include <limits.h>
> +#include <stdlib.h>
> +#include <errno.h>
> +#include <stdint.h>
> +#include <stddef.h>
> +#include <stdio.h>
> +#include "usterr.h"
> +
> +#define TRACEPOINT_DEFINE
> +#include "ust_baddr.h"
> +
> +int
> +push_baddr(void *so_base, const char *so_name)
> +{
> +	char resolved_path[PATH_MAX];
> +	struct stat sostat;
> +
> +	if (!realpath(so_name, resolved_path)) {
> +		ERR("could not resolve path '%s'", so_name);
> +		return 0;
> +	}
> +
> +	if (stat(resolved_path, &sostat)) {
> +		ERR("could not access file status for %s", resolved_path);
> +		return 0;
> +	}
> +
> +	tracepoint(ust_baddr, push,
> +		so_base, resolved_path, sostat.st_size, sostat.st_mtime);
> +	return 0;
> +}
> +
> +int
> +pop_baddr(void *so_base)
> +{
> +	tracepoint(ust_baddr, pop, so_base);
> +	return 0;
> +}
> diff --git a/liblttng-ust-baddr/ust_baddr.c b/liblttng-ust-baddr/ust_baddr.c
> new file mode 100644
> index 0000000..bfbb7bf
> --- /dev/null
> +++ b/liblttng-ust-baddr/ust_baddr.c
> @@ -0,0 +1,20 @@
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
> + */
> +
> +#define TRACEPOINT_CREATE_PROBES
> +#include "ust_baddr.h"
> diff --git a/liblttng-ust-baddr/ust_baddr.h b/liblttng-ust-baddr/ust_baddr.h
> new file mode 100644
> index 0000000..2c757f7
> --- /dev/null
> +++ b/liblttng-ust-baddr/ust_baddr.h
> @@ -0,0 +1,66 @@
> +#undef TRACEPOINT_PROVIDER
> +#define TRACEPOINT_PROVIDER ust_baddr
> +
> +#if !defined(_TRACEPOINT_UST_BADDR_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
> +#define _TRACEPOINT_UST_BADDR_H
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a copy
> + * of this software and associated documentation files (the "Software"), to deal
> + * in the Software without restriction, including without limitation the rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +
> +#include <stdint.h>
> +#include <unistd.h>
> +
> +#define LTTNG_UST_BADDR_PROVIDER
> +#include <lttng/tracepoint.h>
> +
> +TRACEPOINT_EVENT(ust_baddr, push,
> +	TP_ARGS(void *, baddr, const char*, sopath, int64_t, size, int64_t, mtime),
> +	TP_FIELDS(
> +		ctf_integer_hex(void *, baddr, baddr)
> +		ctf_string(sopath, sopath)
> +		ctf_integer(int64_t, size, size)
> +		ctf_integer(int64_t, mtime, mtime)
> +	)
> +)
> +
> +TRACEPOINT_EVENT(ust_baddr, pop,
> +	TP_ARGS(void *, baddr),
> +	TP_FIELDS(
> +		ctf_integer_hex(void *, baddr, baddr)
> +	)
> +)
> +
> +#endif /* _TRACEPOINT_UST_BADDR_H */
> +
> +#undef TRACEPOINT_INCLUDE
> +#define TRACEPOINT_INCLUDE "./ust_baddr.h"
> +
> +/* This part must be outside ifdef protection */
> +#include <lttng/tracepoint-event.h>
> +
> +#ifdef __cplusplus
> +}
> +#endif
> diff --git a/liblttng-ust-dl/Makefile.am b/liblttng-ust-dl/Makefile.am
> new file mode 100644
> index 0000000..14d8abf
> --- /dev/null
> +++ b/liblttng-ust-dl/Makefile.am
> @@ -0,0 +1,17 @@
> +AM_CPPFLAGS = -I$(top_srcdir)/include
> +AM_CFLAGS = -fno-strict-aliasing
> +
> +lib_LTLIBRARIES = liblttng-ust-dl.la
> +liblttng_ust_dl_la_SOURCES = ustdl.c
> +liblttng_ust_dl_la_LIBADD = \
> +	$(top_builddir)/liblttng-ust/liblttng-ust.la
> +
> +if LTTNG_UST_BUILD_WITH_LIBDL
> +liblttng_ust_dl_la_LIBADD += -ldl
> +endif
> +if LTTNG_UST_BUILD_WITH_LIBC_DL
> +liblttng_ust_dl_la_LIBADD += -lc
> +endif
> +
> +libustdl_CFLAGS = -DUST_COMPONENT=liblttng-ust-dl -fno-strict-aliasing
> +
> diff --git a/liblttng-ust-dl/ustdl.c b/liblttng-ust-dl/ustdl.c
> new file mode 100644
> index 0000000..314e272
> --- /dev/null
> +++ b/liblttng-ust-dl/ustdl.c
> @@ -0,0 +1,144 @@
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul.woegerer@mentor.com>
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; version 2.1 of
> + * the License.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
> + */
> +
> +#define _GNU_SOURCE
> +#include <inttypes.h>
> +#include <dlfcn.h>
> +#include <link.h>
> +#include <unistd.h>
> +#include <stdio.h>
> +#include <signal.h>
> +#include <sched.h>
> +#include <stdarg.h>
> +#include "usterr.h"
> +
> +#include <lttng/ust-compiler.h>
> +#include <lttng/ust.h>
> +
> +static void *(*__lttng_ust_plibc_dlopen)(const char *filename, int flag);
> +static int (*__lttng_ust_plibc_dlclose)(void *handle);
> +static void *__lttng_ust_baddr_handle;
> +
> +void *_lttng_ust_dl_libc_dlopen(const char *filename, int flag)
> +{
> +	if (!__lttng_ust_plibc_dlopen) {
> +		__lttng_ust_plibc_dlopen = dlsym(RTLD_NEXT, "dlopen");
> +		if (__lttng_ust_plibc_dlopen == NULL) {
> +			fprintf(stderr, "%s\n", dlerror());
> +			return NULL;
> +		}
> +	}
> +	return __lttng_ust_plibc_dlopen(filename, flag);
> +}
> +
> +int _lttng_ust_dl_libc_dlclose(void *handle)
> +{
> +	if (!__lttng_ust_plibc_dlclose) {
> +		__lttng_ust_plibc_dlclose = dlsym(RTLD_NEXT, "dlclose");
> +		if (__lttng_ust_plibc_dlclose == NULL) {
> +			fprintf(stderr, "%s\n", dlerror());
> +			return -1;
> +		}
> +	}
> +	return __lttng_ust_plibc_dlclose(handle);
> +}
> +
> +static
> +void *lttng_ust_baddr_handle(void)
> +{
> +	if (!__lttng_ust_baddr_handle) {
> +		__lttng_ust_baddr_handle = _lttng_ust_dl_libc_dlopen(
> +			"liblttng-ust-baddr.so.0", RTLD_NOW | RTLD_GLOBAL);
> +		if (__lttng_ust_baddr_handle == NULL)
> +			fprintf(stderr, "%s\n", dlerror());
> +	}
> +	return __lttng_ust_baddr_handle;
> +}
> +
> +static
> +int lttng_ust_baddr_push(void *so_base, const char *so_name)
> +{
> +	static int
> +	(*lttng_ust_baddr_push_fn)(void *so_base, const char *so_name);
> +	if (!lttng_ust_baddr_push_fn) {
> +		void *baddr_handle = lttng_ust_baddr_handle();
> +		if (baddr_handle) {
> +			lttng_ust_baddr_push_fn = dlsym(baddr_handle,
> +				"push_baddr");
> +			if (lttng_ust_baddr_push_fn == NULL)
> +				fprintf(stderr, "%s\n", dlerror());
> +		}
> +		if (!lttng_ust_baddr_push_fn)
> +			return -1;
> +	}
> +	return lttng_ust_baddr_push_fn(so_base, so_name);
> +}
> +
> +static
> +int lttng_ust_baddr_pop(void *so_base)
> +{
> +	static int
> +	(*lttng_ust_baddr_pop_fn)(void *so_base);
> +	if (!lttng_ust_baddr_pop_fn) {
> +		void *baddr_handle = lttng_ust_baddr_handle();
> +		if (baddr_handle) {
> +			lttng_ust_baddr_pop_fn = dlsym(baddr_handle,
> +				"pop_baddr");
> +			if (lttng_ust_baddr_pop_fn == NULL)
> +				fprintf(stderr, "%s\n", dlerror());
> +		}
> +		if (!lttng_ust_baddr_pop_fn)
> +			return -1;
> +	}
> +	return lttng_ust_baddr_pop_fn(so_base);
> +}
> +
> +void *dlopen(const char *filename, int flag)
> +{
> +	void *handle = _lttng_ust_dl_libc_dlopen(filename, flag);
> +	if (handle) {
> +		struct link_map *p = NULL;
> +		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
> +			&& p->l_addr != 0)
> +			lttng_ust_baddr_push((void *) p->l_addr, p->l_name);
> +	}
> +	return handle;
> +}
> +
> +int dlclose(void *handle)
> +{
> +	if (handle) {
> +		struct link_map *p = NULL;
> +		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
> +			&& p->l_addr != 0)
> +			lttng_ust_baddr_pop((void *) p->l_addr);
> +	}
> +	return _lttng_ust_dl_libc_dlclose(handle);
> +}
> +
> +static void __attribute__((destructor))
> +lttng_ust_baddr_handle_fini(void);
> +static void
> +lttng_ust_baddr_handle_fini(void)
> +{
> +	if (__lttng_ust_baddr_handle) {
> +		int ret = _lttng_ust_dl_libc_dlclose(__lttng_ust_baddr_handle);
> +		if (ret)
> +			fprintf(stderr, "%s\n", dlerror());
> +	}
> +}

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH lttng-ust 0/2] Shared object base address tracing
       [not found] ` <52828889.6030403@voxpopuli.im>
@ 2013-11-13 10:00   ` Woegerer, Paul
       [not found]   ` <52834DB8.5030004@mentor.com>
  1 sibling, 0 replies; 11+ messages in thread
From: Woegerer, Paul @ 2013-11-13 10:00 UTC (permalink / raw)
  To: Alexandre Montplaisir, mathieu.desnoyers, Matthew Khouzam; +Cc: lttng-dev

[-- Attachment #1: Type: text/plain, Size: 5414 bytes --]

On 11/12/2013 08:59 PM, Alexandre Montplaisir wrote:
> Hi Paul,
>
> I tried your patches. It seems to work quite well!

Glad to hear that :)

> - The events are called "ust_baddr:push" and "ust_baddr:pop". To be
> consistent with the other wrapper libraries in UST, perhaps they should
> be called "ust_dl:dlopen" and "ust_dl:dlclose" or similar?

I leave this up to Mathieu.
I don't mind changing the names to whatever makes most sense for LTTng.

> - Why does the "statedump" event seem to give many more libs than the
> "push" events? Could we be missing some dlopen's? For example, I traced
> glxgears by preloading liblttng-ust-dl.so: http://pastebin.com/HKVa9a4T

Since ust_baddr:push/pop is based on LD_PRELOAD'ing dlopen/dlclose it
can only tell you what shared libraries were opened/closed during the
time you are actually tracing the application. Whatever is
dlopen'ed/dlclose'ed before the tracing infrastructure that is part of
the userspace application (lttng-ust) is becoming fully functional
therefore cannot be captured as ust_baddr:push/pop events.

For that reason we have the statedump mechanism (*) that complements
shared object tracing by telling us what was happening (in respect to
shared library loading) *before* we started (or before we were able) to
trace calls to dlopen/dlclose. Only the two complementary approaches
combined together give you the full picture of shared library loading.

(*) The statedump mechanism iterates the currently open shared objects
with dl_iterate_phdr (see: http://linux.die.net/man/3/dl_iterate_phdr).

BTW, I get a slight different result when I trace glxgears (see attached
glxgears_baddr.txt). I wonder what the reason is.

> - As Matthew suggested, we could also hijack dlsym(), and with its
> parameters we could match a symbol name to an address. This becomes
> immensely useful when coupled with the ust-cyg-profile instrumentation,
> so we can get information about about function names directly in the
> trace! (but ironically, only for the dlopened libraries, and not the
> main binary). What do you think of this approach?

IMHO, hijacking dlsym() is not helping. The only thing you would know is
that somewhere in your code for some reason the address for some symbol
was requested via dlsym(). This will not help you to get symbol
resolution for ust-cyg-profile instrumentation.

In fact, the solution I present already contains all the information
needed to provide full symbol resolution for any address during the
whole lifetime of the traced application. To prove that I have attached
a dump of our trace viewer that shows all the symbols resolved for a
small forking web server example (traced with ust-cyg-profile and custom
tracepoints + ip context enabled) . See attached server_sample.csv and
server_sample_resolved.csv.

> In any case, it's quite interesting!

Thanks!

--
Paul

>
> Cheers,
> Alexandre
>
>
>
> On 13-11-11 10:28 AM, Paul Woegerer wrote:
>> The following two patches implement https://bugs.lttng.org/issues/474
>>
>> The first patch provides tracing of dlopen/dlclose calls with the use of an
>> LD_PRELOAD library (liblttng-ust-dl.so) using the following events:
>>
>>  ust_baddr:push(void *baddr, const char*sopath, int64_t size, int64_t mtime)
>>  ust_baddr:pop(void *baddr)
>>
>> The second patch adds support for tracing the whole state of currently loaded
>> shared objects at session-enable time. The corresponding events are only
>> emitted into the session that got enabled. The following event is used: 
>>
>>  ust_baddr_statedump (same args as ust_baddr:push)
>>
>>
>> Paul Woegerer (2):
>>   Base-address tracing for dlopen and dlclose
>>   Implement base-address-state tracing
>>
>>  Makefile.am                              |   2 +
>>  configure.ac                             |   2 +
>>  include/Makefile.am                      |   1 +
>>  include/lttng/tracepoint.h               |  12 +--
>>  include/lttng/ust-dl.h                   |  54 ++++++++++++
>>  include/lttng/ust-tracepoint-event.h     |  14 +++
>>  liblttng-ust-baddr/Makefile.am           |  20 +++++
>>  liblttng-ust-baddr/lttng-ust-baddr.c     | 111 ++++++++++++++++++++++++
>>  liblttng-ust-baddr/ust_baddr.c           |  20 +++++
>>  liblttng-ust-baddr/ust_baddr.h           |  66 ++++++++++++++
>>  liblttng-ust-baddr/ust_baddr_statedump.c |  21 +++++
>>  liblttng-ust-baddr/ust_baddr_statedump.h |  60 +++++++++++++
>>  liblttng-ust-dl/Makefile.am              |  17 ++++
>>  liblttng-ust-dl/ustdl.c                  | 144 +++++++++++++++++++++++++++++++
>>  liblttng-ust/lttng-events.c              |  10 +++
>>  liblttng-ust/lttng-tracer-core.h         |   2 +
>>  liblttng-ust/lttng-ust-comm.c            |  52 +++++++++++
>>  17 files changed, 603 insertions(+), 5 deletions(-)
>>  create mode 100644 include/lttng/ust-dl.h
>>  create mode 100644 liblttng-ust-baddr/Makefile.am
>>  create mode 100644 liblttng-ust-baddr/lttng-ust-baddr.c
>>  create mode 100644 liblttng-ust-baddr/ust_baddr.c
>>  create mode 100644 liblttng-ust-baddr/ust_baddr.h
>>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.c
>>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.h
>>  create mode 100644 liblttng-ust-dl/Makefile.am
>>  create mode 100644 liblttng-ust-dl/ustdl.c
>>


-- 
Paul Woegerer, SW Development Engineer
Sourcery Analyzer <http://go.mentor.com/sourceryanalyzer>
Mentor Graphics, Embedded Software Division


[-- Attachment #2: glxgears_baddr.txt --]
[-- Type: text/plain, Size: 7898 bytes --]

pwoegere@atv-pwoegere-l3:~> lttng create
Session auto-20131113-092537 created.
Traces will be written in /home/pwoegere/lttng-traces/auto-20131113-092537
pwoegere@atv-pwoegere-l3:~> lttng enable-event -u -a
All UST events are enabled in channel channel0
pwoegere@atv-pwoegere-l3:~> lttng start
Tracing started for session auto-20131113-092537
pwoegere@atv-pwoegere-l3:~> LD_PRELOAD=liblttng-ust-dl.so /usr/bin/glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
301 frames in 5.0 seconds = 60.060 FPS
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
      after 1515 requests (1515 known processed) with 0 events remaining.
pwoegere@atv-pwoegere-l3:~> lttng stop
Waiting for data availability.
Tracing stopped for session auto-20131113-092537
pwoegere@atv-pwoegere-l3:~> lttng view
Trace directory: /home/pwoegere/lttng-traces/auto-20131113-092537

[warning] Skipping directory 'index' found in trace
[09:27:04.774912693] (+?.?????????) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x400000, sopath = "/usr/lib64/mesa-demos/xdemos/glxgears", size = 23360, mtime = 1381596745 }
[09:27:04.774922939] (+0.000010246) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FFF8A1DD000, sopath = "[linux-vdso.so.1]", size = 0, mtime = -1 }
[09:27:04.774930406] (+0.000007467) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2AA4E000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0", size = 21500, mtime = 1384181281 }
[09:27:04.774936424] (+0.000006018) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2A7F0000, sopath = "/usr/lib64/libGL.so.1.2.0", size = 380976, mtime = 1382866191 }
[09:27:04.774940192] (+0.000003768) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2A4F2000, sopath = "/lib64/libm-2.17.so", size = 1109606, mtime = 1379513990 }
[09:27:04.774945488] (+0.000005296) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2A1B6000, sopath = "/usr/lib64/libX11.so.6.3.0", size = 1294064, mtime = 1380577077 }
[09:27:04.774948793] (+0.000003305) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E29E08000, sopath = "/lib64/libc-2.17.so", size = 1996294, mtime = 1379513989 }
[09:27:04.774955069] (+0.000006276) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E29BBF000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0", size = 1611934, mtime = 1384181281 }
[09:27:04.774961151] (+0.000006082) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E299A5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384181280 }
[09:27:04.774964667] (+0.000003516) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2979D000, sopath = "/lib64/librt-2.17.so", size = 42706, mtime = 1379513990 }
[09:27:04.774967809] (+0.000003142) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E29599000, sopath = "/lib64/libdl-2.17.so", size = 19016, mtime = 1379513990 }
[09:27:04.774973714] (+0.000005905) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E29392000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0", size = 108574, mtime = 1381992197 }
[09:27:04.774979504] (+0.000005790) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2918A000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0", size = 162940, mtime = 1381992197 }
[09:27:04.774985314] (+0.000005810) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E28F86000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0", size = 86456, mtime = 1381992197 }
[09:27:04.774988677] (+0.000003363) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E28D6A000, sopath = "/lib64/libpthread-2.17.so", size = 131133, mtime = 1379513990 }
[09:27:04.774992806] (+0.000004129) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E28B44000, sopath = "/usr/lib64/libglapi.so.0.0.0", size = 150016, mtime = 1382866195 }
[09:27:04.774996621] (+0.000003815) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E28932000, sopath = "/usr/lib64/libXext.so.6.4.0", size = 73864, mtime = 1380578949 }
[09:27:04.775000324] (+0.000003703) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2872F000, sopath = "/usr/lib64/libXdamage.so.1.1.0", size = 10424, mtime = 1380582326 }
[09:27:04.775004059] (+0.000003735) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E28529000, sopath = "/usr/lib64/libXfixes.so.3.1.0", size = 22736, mtime = 1380579302 }
[09:27:04.775008109] (+0.000004050) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E28327000, sopath = "/usr/lib64/libX11-xcb.so.1.0.0", size = 6160, mtime = 1380577076 }
[09:27:04.775013524] (+0.000005415) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2810F000, sopath = "/usr/lib64/libxcb-glx.so.0.0.0", size = 96464, mtime = 1382344054 }
[09:27:04.775017240] (+0.000003716) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E27F0A000, sopath = "/usr/lib64/libxcb-dri2.so.0.0.0", size = 18656, mtime = 1382344054 }
[09:27:04.775022385] (+0.000005145) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E27CEA000, sopath = "/usr/lib64/libxcb.so.1.1.0", size = 129920, mtime = 1382344056 }
[09:27:04.775026302] (+0.000003917) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E27AE4000, sopath = "/usr/lib64/libXxf86vm.so.1.0.0", size = 22912, mtime = 1380582136 }
[09:27:04.775030152] (+0.000003850) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E278D8000, sopath = "/usr/lib64/libdrm.so.2.4.0", size = 47696, mtime = 1382865247 }
[09:27:04.775033421] (+0.000003269) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E2AC51000, sopath = "/lib64/ld-2.17.so", size = 163493, mtime = 1379513989 }
[09:27:04.775037205] (+0.000003784) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E276D4000, sopath = "/usr/lib64/libXau.so.6.0.0", size = 14640, mtime = 1380536554 }
[09:27:04.775042540] (+0.000005335) atv-pwoegere-l3.atv.mentorg.com ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7F8E26100000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 77469, mtime = 1384181281 }
[09:27:04.776345452] (+0.001302912) atv-pwoegere-l3.atv.mentorg.com ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7F8E2A7F0000, sopath = "/usr/lib64/libGL.so.1.2.0", size = 380976, mtime = 1382866191 }
[09:27:04.795393509] (+0.019048057) atv-pwoegere-l3.atv.mentorg.com ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7F8E256DD000, sopath = "/usr/lib64/dri/r600_dri.so", size = 6560344, mtime = 1382866182 }
[09:27:04.795397917] (+0.000004408) atv-pwoegere-l3.atv.mentorg.com ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7F8E2A7F0000 }
pwoegere@atv-pwoegere-l3:~> lttng destroy
Session auto-20131113-092537 destroyed


[-- Attachment #3: server_sample.csv --]
[-- Type: text/csv, Size: 34540 bytes --]

1h 35m 42.232342134s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4489,$procname=server_sample
1h 35m 42.232357497s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4489,$procname=server_sample
1h 35m 42.232368742s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232375096s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232380789s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232389337s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4489,$procname=server_sample
1h 35m 42.232394982s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232398777s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4489,$procname=server_sample
1h 35m 42.232401855s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4489,$procname=server_sample
1h 35m 42.232407498s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4489,$procname=server_sample
1h 35m 42.232410590s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4489,$procname=server_sample
1h 35m 42.232416073s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4489,$procname=server_sample
1h 35m 42.232421604s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4489,$procname=server_sample
1h 35m 42.232427497s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4489,$procname=server_sample
1h 35m 42.232430848s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4489,$procname=server_sample
1h 35m 42.232433943s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4489,$procname=server_sample
1h 35m 42.232438810s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232692010s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x401E78,call_site=0x7F7956332A15,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232697707s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402E52,call_site=0x401ECC,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232712279s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402E12,call_site=0x402ECB,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232714008s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402E12,call_site=0x402ECB,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232715439s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402E52,call_site=0x401ECC,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232722715s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402542,call_site=0x402162,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 47.990936990s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4583,$procname=server_sample
1h 35m 47.990949418s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4583,$procname=server_sample
1h 35m 47.990963601s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.990971319s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.990978454s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.990989415s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4583,$procname=server_sample
1h 35m 47.990996861s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.991007134s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4583,$procname=server_sample
1h 35m 47.991011156s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4583,$procname=server_sample
1h 35m 47.991018438s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4583,$procname=server_sample
1h 35m 47.991022400s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4583,$procname=server_sample
1h 35m 47.991029267s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4583,$procname=server_sample
1h 35m 47.991036181s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4583,$procname=server_sample
1h 35m 47.991043088s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4583,$procname=server_sample
1h 35m 47.991047148s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4583,$procname=server_sample
1h 35m 47.991050854s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4583,$procname=server_sample
1h 35m 47.991059055s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.991134466s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=0x402375,call_site=0x402769,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991165738s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=0x402190,call_site=0x402511,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991169619s,ust.server_request:start,CPU 6,url=/run_hello,$pid=4583,$procname=server_sample,trace_context.ip=0x40221E
1h 35m 47.991177452s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=0x402AF2,call_site=0x402299,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991180017s,ust.server_request:module_open,CPU 6,soname=run_hello.so,$pid=4583,$procname=server_sample,trace_context.ip=0x402B63
1h 35m 47.991180969s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=0x402E12,call_site=0x402BB0,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991182842s,ust.lttng_ust_cyg_profile:func_exit,CPU 6,addr=0x402E12,call_site=0x402BB0,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991563919s,ust.ust_baddr:push,CPU 0,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_hello.so,size=88660,mtime=1384181347,$pid=4583,$procname=server_sample
1h 35m 47.991571874s,ust.server_request:module_open_success,CPU 0,soname=run_hello.so,$pid=4583,$procname=server_sample,trace_context.ip=0x402C2B
1h 35m 47.991578000s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402E12,call_site=0x402C74,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991581609s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402E12,call_site=0x402C74,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991582301s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402D72,call_site=0x402C82,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991584122s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402D72,call_site=0x402C82,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991584539s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402AF2,call_site=0x402299,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991630159s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x7F79542B6190,call_site=0x402303,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991632412s,ust.server_request:send_response,CPU 0,options=,$pid=4583,$procname=server_sample,trace_context.ip=0x7F79542B6222
1h 35m 47.991644261s,ust.server_request:send_response_done,CPU 0,$pid=4583,$procname=server_sample,trace_context.ip=0x7F79542B628F
1h 35m 47.991644766s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x7F79542B6190,call_site=0x402303,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991645324s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402A98,call_site=0x40230B,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991656322s,ust.ust_baddr:pop,CPU 0,baddr=0x7F79542B5000,$pid=4583,$procname=server_sample
1h 35m 47.991683799s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402A98,call_site=0x40230B,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991684696s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402190,call_site=0x402511,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991685079s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402375,call_site=0x402769,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.992247329s,ust.lttng_ust_cyg_profile:func_entry,CPU 5,addr=0x40279B,call_site=0x7F7956346450,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 47.992267134s,ust.lttng_ust_cyg_profile:func_exit,CPU 5,addr=0x40279B,call_site=0x7F7956346450,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 51.762484533s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4669,$procname=server_sample
1h 35m 51.762497943s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4669,$procname=server_sample
1h 35m 51.762527960s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762535962s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762543161s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762554347s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4669,$procname=server_sample
1h 35m 51.762561783s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762566398s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4669,$procname=server_sample
1h 35m 51.762570124s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4669,$procname=server_sample
1h 35m 51.762577601s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4669,$procname=server_sample
1h 35m 51.762581516s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4669,$procname=server_sample
1h 35m 51.762588688s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4669,$procname=server_sample
1h 35m 51.762595835s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4669,$procname=server_sample
1h 35m 51.762603101s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4669,$procname=server_sample
1h 35m 51.762607046s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4669,$procname=server_sample
1h 35m 51.762610897s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4669,$procname=server_sample
1h 35m 51.762619364s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762715395s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402375,call_site=0x402769,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762752436s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402190,call_site=0x402511,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762755854s,ust.server_request:start,CPU 7,url=/run_cmd?/usr/bin/df,$pid=4669,$procname=server_sample,trace_context.ip=0x40221E
1h 35m 51.762764086s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402AF2,call_site=0x402299,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762766657s,ust.server_request:module_open,CPU 7,soname=run_cmd.so,$pid=4669,$procname=server_sample,trace_context.ip=0x402B63
1h 35m 51.762767570s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402E12,call_site=0x402BB0,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762769237s,ust.lttng_ust_cyg_profile:func_exit,CPU 7,addr=0x402E12,call_site=0x402BB0,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763560936s,ust.ust_baddr:push,CPU 0,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_cmd.so,size=90326,mtime=1384181347,$pid=4669,$procname=server_sample
1h 35m 51.763568461s,ust.server_request:module_open_success,CPU 0,soname=run_cmd.so,$pid=4669,$procname=server_sample,trace_context.ip=0x402C2B
1h 35m 51.763574005s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402E12,call_site=0x402C74,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763577332s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402E12,call_site=0x402C74,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763577952s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402D72,call_site=0x402C82,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763579463s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402D72,call_site=0x402C82,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763579850s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402AF2,call_site=0x402299,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763621495s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x7F79542B6430,call_site=0x402303,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763622343s,ust.server_request:send_response,CPU 0,options=/usr/bin/df,$pid=4669,$procname=server_sample,trace_context.ip=0x7F79542B6494
1h 35m 51.814596840s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4750,$procname=server_sample
1h 35m 51.814607365s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4750,$procname=server_sample
1h 35m 51.814620947s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814629113s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814636537s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814646928s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4750,$procname=server_sample
1h 35m 51.814654124s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814658280s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 51.814662168s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 51.814669557s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4750,$procname=server_sample
1h 35m 51.814674004s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 51.814680849s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 51.814688256s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 51.814695041s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 51.814699672s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 51.814703920s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 51.814710735s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814721766s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_cmd.so,size=90326,mtime=1384181347,$pid=4750,$procname=server_sample
1h 35m 52.062159384s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x400000,sopath=/usr/bin/df,size=81120,mtime=1359275285,$pid=4750,$procname=server_sample
1h 35m 52.062171222s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FFF985FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4750,$procname=server_sample
1h 35m 52.062182205s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E3768000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062188193s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E3564000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062193818s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E3361000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062197487s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2FB3000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 52.062202944s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2D6A000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062208630s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2B50000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4750,$procname=server_sample
1h 35m 52.062211928s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2948000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 52.062214794s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2744000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 52.062220346s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E253D000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 52.062225720s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2335000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 52.062231136s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2131000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 52.062234279s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E1F15000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 52.062237238s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E396B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 52.062241934s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E0D0D000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.063675099s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x40279B,call_site=0x7F7956346450,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063691096s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x40279B,call_site=0x7F7956346450,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063826184s,ust.server_request:send_response_done,CPU 0,$pid=4669,$procname=server_sample,trace_context.ip=0x7F79542B6645
1h 35m 52.063827827s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x7F79542B6430,call_site=0x402303,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063831771s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402A98,call_site=0x40230B,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063844778s,ust.ust_baddr:pop,CPU 0,baddr=0x7F79542B5000,$pid=4669,$procname=server_sample
1h 35m 52.063885313s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402A98,call_site=0x40230B,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063886055s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402190,call_site=0x402511,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063886477s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402375,call_site=0x402769,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.064362625s,ust.lttng_ust_cyg_profile:func_entry,CPU 2,addr=0x40279B,call_site=0x7F7956346450,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 52.064369779s,ust.lttng_ust_cyg_profile:func_exit,CPU 2,addr=0x40279B,call_site=0x7F7956346450,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 36m 00.028400114s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4915,$procname=server_sample
1h 36m 00.028413058s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4915,$procname=server_sample
1h 36m 00.028426256s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028433486s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028440068s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028450474s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4915,$procname=server_sample
1h 36m 00.028457300s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028461479s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4915,$procname=server_sample
1h 36m 00.028465256s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4915,$procname=server_sample
1h 36m 00.028472156s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4915,$procname=server_sample
1h 36m 00.028476006s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4915,$procname=server_sample
1h 36m 00.028482749s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4915,$procname=server_sample
1h 36m 00.028489415s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4915,$procname=server_sample
1h 36m 00.028496021s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4915,$procname=server_sample
1h 36m 00.028499819s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4915,$procname=server_sample
1h 36m 00.028503427s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4915,$procname=server_sample
1h 36m 00.028511061s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028551002s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402375,call_site=0x402769,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028582597s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402190,call_site=0x402511,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028585890s,ust.server_request:start,CPU 7,url=/run_time,$pid=4915,$procname=server_sample,trace_context.ip=0x40221E
1h 36m 00.028594130s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402AF2,call_site=0x402299,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028596473s,ust.server_request:module_open,CPU 7,soname=run_time.so,$pid=4915,$procname=server_sample,trace_context.ip=0x402B63
1h 36m 00.028597254s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=0x402E12,call_site=0x402BB0,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028598573s,ust.lttng_ust_cyg_profile:func_exit,CPU 7,addr=0x402E12,call_site=0x402BB0,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029041911s,ust.ust_baddr:push,CPU 0,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_time.so,size=90162,mtime=1384181348,$pid=4915,$procname=server_sample
1h 36m 00.029047219s,ust.server_request:module_open_success,CPU 0,soname=run_time.so,$pid=4915,$procname=server_sample,trace_context.ip=0x402C2B
1h 36m 00.029061773s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402E12,call_site=0x402C74,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029065309s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402E12,call_site=0x402C74,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029065901s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402D72,call_site=0x402C82,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029067739s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402D72,call_site=0x402C82,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029068156s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402AF2,call_site=0x402299,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029119314s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x7F79542B6280,call_site=0x402303,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029177510s,ust.server_request:send_response,CPU 0,options=,$pid=4915,$procname=server_sample,trace_context.ip=0x7F79542B634C
1h 36m 00.029192302s,ust.server_request:send_response_done,CPU 0,$pid=4915,$procname=server_sample,trace_context.ip=0x7F79542B63BD
1h 36m 00.029192976s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x7F79542B6280,call_site=0x402303,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029193606s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=0x402A98,call_site=0x40230B,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029196437s,ust.ust_baddr:pop,CPU 0,baddr=0x7F79542B5000,$pid=4915,$procname=server_sample
1h 36m 00.029222113s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402A98,call_site=0x40230B,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029222894s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402190,call_site=0x402511,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029223284s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=0x402375,call_site=0x402769,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029770182s,ust.lttng_ust_cyg_profile:func_entry,CPU 2,addr=0x40279B,call_site=0x7F7956346450,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 36m 00.029777599s,ust.lttng_ust_cyg_profile:func_exit,CPU 2,addr=0x40279B,call_site=0x7F7956346450,$pid=4489,$procname=server_sample,trace_context.vtid=4489


[-- Attachment #4: server_sample_resolved.csv --]
[-- Type: text/csv, Size: 35382 bytes --]

1h 35m 42.232342134s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4489,$procname=server_sample
1h 35m 42.232357497s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4489,$procname=server_sample
1h 35m 42.232368742s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232375096s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232380789s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232389337s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4489,$procname=server_sample
1h 35m 42.232394982s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232398777s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4489,$procname=server_sample
1h 35m 42.232401855s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4489,$procname=server_sample
1h 35m 42.232407498s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4489,$procname=server_sample
1h 35m 42.232410590s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4489,$procname=server_sample
1h 35m 42.232416073s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4489,$procname=server_sample
1h 35m 42.232421604s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4489,$procname=server_sample
1h 35m 42.232427497s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4489,$procname=server_sample
1h 35m 42.232430848s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4489,$procname=server_sample
1h 35m 42.232433943s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4489,$procname=server_sample
1h 35m 42.232438810s,ust.ust_baddr_statedump:soinfo,CPU 5,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4489,$procname=server_sample
1h 35m 42.232692010s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=main,call_site=__libc_start_main+0xF5,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232697707s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=get_self_executable_directory,call_site=main+0x54,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232712279s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=xmalloc,call_site=get_self_executable_directory+0x79,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232714008s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=xmalloc,call_site=get_self_executable_directory+0x79,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232715439s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=get_self_executable_directory,call_site=main+0x54,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 42.232722715s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=server_run,call_site=main+0x2EA,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 47.990936990s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4583,$procname=server_sample
1h 35m 47.990949418s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4583,$procname=server_sample
1h 35m 47.990963601s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.990971319s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.990978454s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.990989415s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4583,$procname=server_sample
1h 35m 47.990996861s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.991007134s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4583,$procname=server_sample
1h 35m 47.991011156s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4583,$procname=server_sample
1h 35m 47.991018438s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4583,$procname=server_sample
1h 35m 47.991022400s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4583,$procname=server_sample
1h 35m 47.991029267s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4583,$procname=server_sample
1h 35m 47.991036181s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4583,$procname=server_sample
1h 35m 47.991043088s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4583,$procname=server_sample
1h 35m 47.991047148s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4583,$procname=server_sample
1h 35m 47.991050854s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4583,$procname=server_sample
1h 35m 47.991059055s,ust.ust_baddr_statedump:soinfo,CPU 7,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4583,$procname=server_sample
1h 35m 47.991134466s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=handle_connection,call_site=server_run+0x227,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991165738s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=handle_get,call_site=handle_connection+0x19C,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991169619s,ust.server_request:start,CPU 6,url=/run_hello,$pid=4583,$procname=server_sample,trace_context.ip=handle_get+0x8E
1h 35m 47.991177452s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=module_open,call_site=handle_get+0x109,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991180017s,ust.server_request:module_open,CPU 6,soname=run_hello.so,$pid=4583,$procname=server_sample,trace_context.ip=module_open+0x71
1h 35m 47.991180969s,ust.lttng_ust_cyg_profile:func_entry,CPU 6,addr=xmalloc,call_site=module_open+0xBE,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991182842s,ust.lttng_ust_cyg_profile:func_exit,CPU 6,addr=xmalloc,call_site=module_open+0xBE,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991563919s,ust.ust_baddr:push,CPU 0,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_hello.so,size=88660,mtime=1384181347,$pid=4583,$procname=server_sample
1h 35m 47.991571874s,ust.server_request:module_open_success,CPU 0,soname=run_hello.so,$pid=4583,$procname=server_sample,trace_context.ip=module_open+0x139
1h 35m 47.991578000s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=xmalloc,call_site=module_open+0x182,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991581609s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=xmalloc,call_site=module_open+0x182,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991582301s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=xstrdup,call_site=module_open+0x190,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991584122s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=xstrdup,call_site=module_open+0x190,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991584539s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_open,call_site=handle_get+0x109,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991630159s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=module_generate,call_site=handle_get+0x173,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991632412s,ust.server_request:send_response,CPU 0,options=,$pid=4583,$procname=server_sample,trace_context.ip=module_generate+0x92
1h 35m 47.991644261s,ust.server_request:send_response_done,CPU 0,$pid=4583,$procname=server_sample,trace_context.ip=module_generate+0xFF
1h 35m 47.991644766s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_generate,call_site=handle_get+0x173,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991645324s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=module_close,call_site=handle_get+0x17B,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991656322s,ust.ust_baddr:pop,CPU 0,baddr=0x7F79542B5000,$pid=4583,$procname=server_sample
1h 35m 47.991683799s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_close,call_site=handle_get+0x17B,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991684696s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=handle_get,call_site=handle_connection+0x19C,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.991685079s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=handle_connection,call_site=server_run+0x227,$pid=4583,$procname=server_sample,trace_context.vtid=4583
1h 35m 47.992247329s,ust.lttng_ust_cyg_profile:func_entry,CPU 5,addr=clean_up_child_process,call_site=__restore_rt,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 47.992267134s,ust.lttng_ust_cyg_profile:func_exit,CPU 5,addr=clean_up_child_process,call_site=__restore_rt,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 51.762484533s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4669,$procname=server_sample
1h 35m 51.762497943s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4669,$procname=server_sample
1h 35m 51.762527960s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762535962s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762543161s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762554347s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4669,$procname=server_sample
1h 35m 51.762561783s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762566398s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4669,$procname=server_sample
1h 35m 51.762570124s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4669,$procname=server_sample
1h 35m 51.762577601s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4669,$procname=server_sample
1h 35m 51.762581516s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4669,$procname=server_sample
1h 35m 51.762588688s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4669,$procname=server_sample
1h 35m 51.762595835s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4669,$procname=server_sample
1h 35m 51.762603101s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4669,$procname=server_sample
1h 35m 51.762607046s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4669,$procname=server_sample
1h 35m 51.762610897s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4669,$procname=server_sample
1h 35m 51.762619364s,ust.ust_baddr_statedump:soinfo,CPU 2,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4669,$procname=server_sample
1h 35m 51.762715395s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=handle_connection,call_site=server_run+0x227,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762752436s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=handle_get,call_site=handle_connection+0x19C,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762755854s,ust.server_request:start,CPU 7,url=/run_cmd?/usr/bin/df,$pid=4669,$procname=server_sample,trace_context.ip=handle_get+0x8E
1h 35m 51.762764086s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=module_open,call_site=handle_get+0x109,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762766657s,ust.server_request:module_open,CPU 7,soname=run_cmd.so,$pid=4669,$procname=server_sample,trace_context.ip=module_open+0x71
1h 35m 51.762767570s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=xmalloc,call_site=module_open+0xBE,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.762769237s,ust.lttng_ust_cyg_profile:func_exit,CPU 7,addr=xmalloc,call_site=module_open+0xBE,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763560936s,ust.ust_baddr:push,CPU 0,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_cmd.so,size=90326,mtime=1384181347,$pid=4669,$procname=server_sample
1h 35m 51.763568461s,ust.server_request:module_open_success,CPU 0,soname=run_cmd.so,$pid=4669,$procname=server_sample,trace_context.ip=module_open+0x139
1h 35m 51.763574005s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=xmalloc,call_site=module_open+0x182,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763577332s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=xmalloc,call_site=module_open+0x182,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763577952s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=xstrdup,call_site=module_open+0x190,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763579463s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=xstrdup,call_site=module_open+0x190,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763579850s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_open,call_site=handle_get+0x109,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763621495s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=module_generate,call_site=handle_get+0x173,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 51.763622343s,ust.server_request:send_response,CPU 0,options=/usr/bin/df,$pid=4669,$procname=server_sample,trace_context.ip=module_generate+0x64
1h 35m 51.814596840s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4750,$procname=server_sample
1h 35m 51.814607365s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4750,$procname=server_sample
1h 35m 51.814620947s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814629113s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814636537s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814646928s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4750,$procname=server_sample
1h 35m 51.814654124s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814658280s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 51.814662168s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 51.814669557s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4750,$procname=server_sample
1h 35m 51.814674004s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 51.814680849s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 51.814688256s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 51.814695041s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 51.814699672s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 51.814703920s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 51.814710735s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 51.814721766s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_cmd.so,size=90326,mtime=1384181347,$pid=4750,$procname=server_sample
1h 35m 52.062159384s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x400000,sopath=/usr/bin/df,size=81120,mtime=1359275285,$pid=4750,$procname=server_sample
1h 35m 52.062171222s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FFF985FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4750,$procname=server_sample
1h 35m 52.062182205s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E3768000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062188193s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E3564000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062193818s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E3361000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062197487s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2FB3000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 52.062202944s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.062208630s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2B50000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4750,$procname=server_sample
1h 35m 52.062211928s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2948000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 52.062214794s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2744000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 52.062220346s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 52.062225720s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2335000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 52.062231136s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E2131000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4750,$procname=server_sample
1h 35m 52.062234279s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E1F15000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4750,$procname=server_sample
1h 35m 52.062237238s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E396B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4750,$procname=server_sample
1h 35m 52.062241934s,ust.ust_baddr_statedump:soinfo,CPU 6,baddr=0x7FD2E0D0D000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4750,$procname=server_sample
1h 35m 52.063675099s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=clean_up_child_process,call_site=__restore_rt,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063691096s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=clean_up_child_process,call_site=__restore_rt,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063826184s,ust.server_request:send_response_done,CPU 0,$pid=4669,$procname=server_sample,trace_context.ip=module_generate+0x215
1h 35m 52.063827827s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_generate,call_site=handle_get+0x173,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063831771s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=module_close,call_site=handle_get+0x17B,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063844778s,ust.ust_baddr:pop,CPU 0,baddr=0x7F79542B5000,$pid=4669,$procname=server_sample
1h 35m 52.063885313s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_close,call_site=handle_get+0x17B,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063886055s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=handle_get,call_site=handle_connection+0x19C,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.063886477s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=handle_connection,call_site=server_run+0x227,$pid=4669,$procname=server_sample,trace_context.vtid=4669
1h 35m 52.064362625s,ust.lttng_ust_cyg_profile:func_entry,CPU 2,addr=clean_up_child_process,call_site=__restore_rt,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 35m 52.064369779s,ust.lttng_ust_cyg_profile:func_exit,CPU 2,addr=clean_up_child_process,call_site=__restore_rt,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 36m 00.028400114s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x400000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample,size=162591,mtime=1384181347,$pid=4915,$procname=server_sample
1h 36m 00.028413058s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7FFF457FE000,sopath=[linux-vdso.so.1],size=0,mtime=-1,$pid=4915,$procname=server_sample
1h 36m 00.028426256s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7957118000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0,size=20700,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028433486s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956F14000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0,size=45245,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028440068s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956D11000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0,size=21500,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028450474s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956B0C000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so,size=164908,mtime=1384181347,$pid=4915,$procname=server_sample
1h 36m 00.028457300s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79568C3000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0,size=1611934,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028461479s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79566BF000,sopath=/lib64/libdl-2.17.so,size=19016,mtime=1379513990,$pid=4915,$procname=server_sample
1h 36m 00.028465256s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7956311000,sopath=/lib64/libc-2.17.so,size=1996294,mtime=1379513989,$pid=4915,$procname=server_sample
1h 36m 00.028472156s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79560F7000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0,size=138864,mtime=1384181280,$pid=4915,$procname=server_sample
1h 36m 00.028476006s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7955EEF000,sopath=/lib64/librt-2.17.so,size=42706,mtime=1379513990,$pid=4915,$procname=server_sample
1h 36m 00.028482749s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7955CE8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0,size=108574,mtime=1381992197,$pid=4915,$procname=server_sample
1h 36m 00.028489415s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F7955AE0000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0,size=162940,mtime=1381992197,$pid=4915,$procname=server_sample
1h 36m 00.028496021s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79558DC000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0,size=86456,mtime=1381992197,$pid=4915,$procname=server_sample
1h 36m 00.028499819s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79556C0000,sopath=/lib64/libpthread-2.17.so,size=131133,mtime=1379513990,$pid=4915,$procname=server_sample
1h 36m 00.028503427s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F795731B000,sopath=/lib64/ld-2.17.so,size=163493,mtime=1379513989,$pid=4915,$procname=server_sample
1h 36m 00.028511061s,ust.ust_baddr_statedump:soinfo,CPU 0,baddr=0x7F79544B8000,sopath=/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0,size=77469,mtime=1384181281,$pid=4915,$procname=server_sample
1h 36m 00.028551002s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=handle_connection,call_site=server_run+0x227,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028582597s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=handle_get,call_site=handle_connection+0x19C,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028585890s,ust.server_request:start,CPU 7,url=/run_time,$pid=4915,$procname=server_sample,trace_context.ip=handle_get+0x8E
1h 36m 00.028594130s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=module_open,call_site=handle_get+0x109,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028596473s,ust.server_request:module_open,CPU 7,soname=run_time.so,$pid=4915,$procname=server_sample,trace_context.ip=module_open+0x71
1h 36m 00.028597254s,ust.lttng_ust_cyg_profile:func_entry,CPU 7,addr=xmalloc,call_site=module_open+0xBE,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.028598573s,ust.lttng_ust_cyg_profile:func_exit,CPU 7,addr=xmalloc,call_site=module_open+0xBE,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029041911s,ust.ust_baddr:push,CPU 0,baddr=0x7F79542B5000,sopath=/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_time.so,size=90162,mtime=1384181348,$pid=4915,$procname=server_sample
1h 36m 00.029047219s,ust.server_request:module_open_success,CPU 0,soname=run_time.so,$pid=4915,$procname=server_sample,trace_context.ip=module_open+0x139
1h 36m 00.029061773s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=xmalloc,call_site=module_open+0x182,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029065309s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=xmalloc,call_site=module_open+0x182,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029065901s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=xstrdup,call_site=module_open+0x190,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029067739s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=xstrdup,call_site=module_open+0x190,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029068156s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_open,call_site=handle_get+0x109,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029119314s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=module_generate,call_site=handle_get+0x173,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029177510s,ust.server_request:send_response,CPU 0,options=,$pid=4915,$procname=server_sample,trace_context.ip=module_generate+0xCC
1h 36m 00.029192302s,ust.server_request:send_response_done,CPU 0,$pid=4915,$procname=server_sample,trace_context.ip=module_generate+0x13D
1h 36m 00.029192976s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_generate,call_site=handle_get+0x173,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029193606s,ust.lttng_ust_cyg_profile:func_entry,CPU 0,addr=module_close,call_site=handle_get+0x17B,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029196437s,ust.ust_baddr:pop,CPU 0,baddr=0x7F79542B5000,$pid=4915,$procname=server_sample
1h 36m 00.029222113s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=module_close,call_site=handle_get+0x17B,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029222894s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=handle_get,call_site=handle_connection+0x19C,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029223284s,ust.lttng_ust_cyg_profile:func_exit,CPU 0,addr=handle_connection,call_site=server_run+0x227,$pid=4915,$procname=server_sample,trace_context.vtid=4915
1h 36m 00.029770182s,ust.lttng_ust_cyg_profile:func_entry,CPU 2,addr=clean_up_child_process,call_site=__restore_rt,$pid=4489,$procname=server_sample,trace_context.vtid=4489
1h 36m 00.029777599s,ust.lttng_ust_cyg_profile:func_exit,CPU 2,addr=clean_up_child_process,call_site=__restore_rt,$pid=4489,$procname=server_sample,trace_context.vtid=4489


[-- Attachment #5: Type: text/plain, Size: 155 bytes --]

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH lttng-ust 0/2] Shared object base address tracing
       [not found]   ` <52834DB8.5030004@mentor.com>
@ 2013-11-13 13:19     ` Mathieu Desnoyers
  2013-11-13 18:09     ` Alexandre Montplaisir
  1 sibling, 0 replies; 11+ messages in thread
From: Mathieu Desnoyers @ 2013-11-13 13:19 UTC (permalink / raw)
  To: Paul Woegerer; +Cc: lttng-dev

----- Original Message -----
> From: "Paul Woegerer" <Paul_Woegerer@mentor.com>
> To: "Alexandre Montplaisir" <alexmonthy@voxpopuli.im>, "mathieu desnoyers" <mathieu.desnoyers@efficios.com>, "Matthew
> Khouzam" <matthew.khouzam@ericsson.com>
> Cc: lttng-dev@lists.lttng.org
> Sent: Wednesday, November 13, 2013 5:00:24 AM
> Subject: Re: [lttng-dev] [PATCH lttng-ust 0/2] Shared object base address tracing
> 
> On 11/12/2013 08:59 PM, Alexandre Montplaisir wrote:
> > Hi Paul,
> >
> > I tried your patches. It seems to work quite well!
> 
> Glad to hear that :)
> 
> > - The events are called "ust_baddr:push" and "ust_baddr:pop". To be
> > consistent with the other wrapper libraries in UST, perhaps they should
> > be called "ust_dl:dlopen" and "ust_dl:dlclose" or similar?
> 
> I leave this up to Mathieu.
> I don't mind changing the names to whatever makes most sense for LTTng.

Since we're really talking about base addresses here, and that when we have multiple dlopen of the same library, I think it really makes sense to talk of "push/pop" of base address rather than to explicitly tie this to dlopen/dlclose.

> 
> > - Why does the "statedump" event seem to give many more libs than the
> > "push" events? Could we be missing some dlopen's? For example, I traced
> > glxgears by preloading liblttng-ust-dl.so: http://pastebin.com/HKVa9a4T
> 
> Since ust_baddr:push/pop is based on LD_PRELOAD'ing dlopen/dlclose it
> can only tell you what shared libraries were opened/closed during the
> time you are actually tracing the application. Whatever is
> dlopen'ed/dlclose'ed before the tracing infrastructure that is part of
> the userspace application (lttng-ust) is becoming fully functional
> therefore cannot be captured as ust_baddr:push/pop events.
> 
> For that reason we have the statedump mechanism (*) that complements
> shared object tracing by telling us what was happening (in respect to
> shared library loading) *before* we started (or before we were able) to
> trace calls to dlopen/dlclose. Only the two complementary approaches
> combined together give you the full picture of shared library loading.
> 
> (*) The statedump mechanism iterates the currently open shared objects
> with dl_iterate_phdr (see: http://linux.die.net/man/3/dl_iterate_phdr).
> 
> BTW, I get a slight different result when I trace glxgears (see attached
> glxgears_baddr.txt). I wonder what the reason is.
> 
> > - As Matthew suggested, we could also hijack dlsym(), and with its
> > parameters we could match a symbol name to an address. This becomes
> > immensely useful when coupled with the ust-cyg-profile instrumentation,
> > so we can get information about about function names directly in the
> > trace! (but ironically, only for the dlopened libraries, and not the
> > main binary). What do you think of this approach?
> 
> IMHO, hijacking dlsym() is not helping. The only thing you would know is
> that somewhere in your code for some reason the address for some symbol
> was requested via dlsym(). This will not help you to get symbol
> resolution for ust-cyg-profile instrumentation.

Agreed. AFAIK, instrumenting dlsym() is useless.

Thanks,

Mathieu

> 
> In fact, the solution I present already contains all the information
> needed to provide full symbol resolution for any address during the
> whole lifetime of the traced application. To prove that I have attached
> a dump of our trace viewer that shows all the symbols resolved for a
> small forking web server example (traced with ust-cyg-profile and custom
> tracepoints + ip context enabled) . See attached server_sample.csv and
> server_sample_resolved.csv.
> 
> > In any case, it's quite interesting!
> 
> Thanks!
> 
> --
> Paul
> 
> >
> > Cheers,
> > Alexandre
> >
> >
> >
> > On 13-11-11 10:28 AM, Paul Woegerer wrote:
> >> The following two patches implement https://bugs.lttng.org/issues/474
> >>
> >> The first patch provides tracing of dlopen/dlclose calls with the use of
> >> an
> >> LD_PRELOAD library (liblttng-ust-dl.so) using the following events:
> >>
> >>  ust_baddr:push(void *baddr, const char*sopath, int64_t size, int64_t
> >>  mtime)
> >>  ust_baddr:pop(void *baddr)
> >>
> >> The second patch adds support for tracing the whole state of currently
> >> loaded
> >> shared objects at session-enable time. The corresponding events are only
> >> emitted into the session that got enabled. The following event is used:
> >>
> >>  ust_baddr_statedump (same args as ust_baddr:push)
> >>
> >>
> >> Paul Woegerer (2):
> >>   Base-address tracing for dlopen and dlclose
> >>   Implement base-address-state tracing
> >>
> >>  Makefile.am                              |   2 +
> >>  configure.ac                             |   2 +
> >>  include/Makefile.am                      |   1 +
> >>  include/lttng/tracepoint.h               |  12 +--
> >>  include/lttng/ust-dl.h                   |  54 ++++++++++++
> >>  include/lttng/ust-tracepoint-event.h     |  14 +++
> >>  liblttng-ust-baddr/Makefile.am           |  20 +++++
> >>  liblttng-ust-baddr/lttng-ust-baddr.c     | 111 ++++++++++++++++++++++++
> >>  liblttng-ust-baddr/ust_baddr.c           |  20 +++++
> >>  liblttng-ust-baddr/ust_baddr.h           |  66 ++++++++++++++
> >>  liblttng-ust-baddr/ust_baddr_statedump.c |  21 +++++
> >>  liblttng-ust-baddr/ust_baddr_statedump.h |  60 +++++++++++++
> >>  liblttng-ust-dl/Makefile.am              |  17 ++++
> >>  liblttng-ust-dl/ustdl.c                  | 144
> >>  +++++++++++++++++++++++++++++++
> >>  liblttng-ust/lttng-events.c              |  10 +++
> >>  liblttng-ust/lttng-tracer-core.h         |   2 +
> >>  liblttng-ust/lttng-ust-comm.c            |  52 +++++++++++
> >>  17 files changed, 603 insertions(+), 5 deletions(-)
> >>  create mode 100644 include/lttng/ust-dl.h
> >>  create mode 100644 liblttng-ust-baddr/Makefile.am
> >>  create mode 100644 liblttng-ust-baddr/lttng-ust-baddr.c
> >>  create mode 100644 liblttng-ust-baddr/ust_baddr.c
> >>  create mode 100644 liblttng-ust-baddr/ust_baddr.h
> >>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.c
> >>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.h
> >>  create mode 100644 liblttng-ust-dl/Makefile.am
> >>  create mode 100644 liblttng-ust-dl/ustdl.c
> >>
> 
> 
> --
> Paul Woegerer, SW Development Engineer
> Sourcery Analyzer <http://go.mentor.com/sourceryanalyzer>
> Mentor Graphics, Embedded Software Division
> 
> 

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] Base-address tracing for dlopen and dlclose
       [not found] ` <1384183688-19038-2-git-send-email-paul_woegerer@mentor.com>
  2013-11-12 20:10   ` [PATCH 1/2] Base-address tracing for dlopen and dlclose Matthew Khouzam
@ 2013-11-13 13:25   ` Mathieu Desnoyers
       [not found]   ` <318817448.66208.1384349143345.JavaMail.zimbra@efficios.com>
  2 siblings, 0 replies; 11+ messages in thread
From: Mathieu Desnoyers @ 2013-11-13 13:25 UTC (permalink / raw)
  To: Paul Woegerer; +Cc: lttng-dev

----- Original Message -----
> From: "Paul Woegerer" <paul_woegerer@mentor.com>
> To: lttng-dev@lists.lttng.org, "mathieu desnoyers" <mathieu.desnoyers@efficios.com>
> Sent: Monday, November 11, 2013 10:28:07 AM
> Subject: [PATCH 1/2] Base-address tracing for dlopen and dlclose
> 
> Provide an LD_PRELOAD library to allow tracing of calls to dlopen and
> dlclose.  Tracing the lttng-ust internal use of dlopen and dlclose is
> prevented.

Why do we need to prevent tracing lttng-ust internal use of dlopen/dlclose ?

> 
> Signed-off-by: Paul Woegerer <paul_woegerer@mentor.com>
> ---
>  Makefile.am                          |   2 +
>  configure.ac                         |   2 +
>  include/Makefile.am                  |   1 +
>  include/lttng/tracepoint.h           |  12 +--
>  include/lttng/ust-dl.h               |  54 +++++++++++++
>  liblttng-ust-baddr/Makefile.am       |  18 +++++
>  liblttng-ust-baddr/lttng-ust-baddr.c |  64 ++++++++++++++++
>  liblttng-ust-baddr/ust_baddr.c       |  20 +++++
>  liblttng-ust-baddr/ust_baddr.h       |  66 ++++++++++++++++
>  liblttng-ust-dl/Makefile.am          |  17 +++++
>  liblttng-ust-dl/ustdl.c              | 144
>  +++++++++++++++++++++++++++++++++++
>  11 files changed, 395 insertions(+), 5 deletions(-)
>  create mode 100644 include/lttng/ust-dl.h
>  create mode 100644 liblttng-ust-baddr/Makefile.am
>  create mode 100644 liblttng-ust-baddr/lttng-ust-baddr.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr.h
>  create mode 100644 liblttng-ust-dl/Makefile.am
>  create mode 100644 liblttng-ust-dl/ustdl.c
> 
> diff --git a/Makefile.am b/Makefile.am
> index dc88c46..6a82e4d 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -4,6 +4,8 @@ SUBDIRS = . include snprintf libringbuffer liblttng-ust-comm
> \
>  		liblttng-ust \
>  		liblttng-ust-ctl \
>  		liblttng-ust-fork \
> +		liblttng-ust-baddr \
> +		liblttng-ust-dl \
>  		liblttng-ust-libc-wrapper \
>  		liblttng-ust-cyg-profile \
>  		tools \
> diff --git a/configure.ac b/configure.ac
> index cc28205..bac6030 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -282,6 +282,8 @@ AC_CONFIG_FILES([
>  	liblttng-ust/Makefile
>  	liblttng-ust-ctl/Makefile
>  	liblttng-ust-fork/Makefile
> +	liblttng-ust-baddr/Makefile
> +	liblttng-ust-dl/Makefile
>  	liblttng-ust-java/Makefile
>  	liblttng-ust-libc-wrapper/Makefile
>  	liblttng-ust-cyg-profile/Makefile
> diff --git a/include/Makefile.am b/include/Makefile.am
> index 4f028db..b3243bf 100644
> --- a/include/Makefile.am
> +++ b/include/Makefile.am
> @@ -13,6 +13,7 @@ nobase_include_HEADERS = \
>  	lttng/ringbuffer-abi.h \
>  	lttng/ust-tracer.h \
>  	lttng/ust-compiler.h \
> +	lttng/ust-dl.h \
>  	lttng/ust.h \
>  	lttng/ust-endian.h \
>  	lttng/ringbuffer-config.h \
> diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h
> index 66e2abd..c1550ec 100644
> --- a/include/lttng/tracepoint.h
> +++ b/include/lttng/tracepoint.h
> @@ -28,10 +28,10 @@
>  #include <lttng/tracepoint-types.h>
>  #include <lttng/tracepoint-rcu.h>
>  #include <urcu/compiler.h>
> -#include <dlfcn.h>	/* for dlopen */
>  #include <string.h>	/* for memset */
>  #include <lttng/ust-config.h>	/* for sdt */
>  #include <lttng/ust-compiler.h>
> +#include <lttng/ust-dl.h>	/* for lttng_ust_dlopen */
>  
>  #ifdef LTTNG_UST_HAVE_SDT_INTEGRATION
>  #define SDT_USE_VARIADIC
> @@ -278,7 +278,8 @@ __tracepoints__init(void)
>  
>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		tracepoint_dlopen.liblttngust_handle =
> -			dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
> +			lttng_ust_dlopen("liblttng-ust-tracepoint.so.0",
> +				RTLD_NOW | RTLD_GLOBAL);

Any change to tracepoint.h is changing the application ABI (requires application to be recompiled). Is lttng_ust_dlopen/dlclose() really needed ? If so, can we find a way to achieve this without changing tracepoint.h ?

>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		return;
>  	__tracepoint__init_urcu_sym();
> @@ -294,7 +295,7 @@ __tracepoints__destroy(void)
>  	if (--__tracepoint_registered)
>  		return;
>  	if (tracepoint_dlopen.liblttngust_handle && !__tracepoint_ptrs_registered)
>  	{
> -		ret = dlclose(tracepoint_dlopen.liblttngust_handle);
> +		ret = lttng_ust_dlclose(tracepoint_dlopen.liblttngust_handle);
>  		if (ret) {
>  			fprintf(stderr, "Error (%d) in dlclose\n", ret);
>  			abort();
> @@ -367,7 +368,8 @@ __tracepoints__ptrs_init(void)
>  		return;
>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		tracepoint_dlopen.liblttngust_handle =
> -			dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
> +			lttng_ust_dlopen("liblttng-ust-tracepoint.so.0",
> +				RTLD_NOW | RTLD_GLOBAL);
>  	if (!tracepoint_dlopen.liblttngust_handle)
>  		return;
>  	tracepoint_dlopen.tracepoint_register_lib =
> @@ -398,7 +400,7 @@ __tracepoints__ptrs_destroy(void)
>  	if (tracepoint_dlopen.tracepoint_unregister_lib)
>  		tracepoint_dlopen.tracepoint_unregister_lib(__start___tracepoints_ptrs);
>  	if (tracepoint_dlopen.liblttngust_handle && !__tracepoint_registered) {
> -		ret = dlclose(tracepoint_dlopen.liblttngust_handle);
> +		ret = lttng_ust_dlclose(tracepoint_dlopen.liblttngust_handle);
>  		if (ret) {
>  			fprintf(stderr, "Error (%d) in dlclose\n", ret);
>  			abort();
> diff --git a/include/lttng/ust-dl.h b/include/lttng/ust-dl.h
> new file mode 100644
> index 0000000..f447ff4
> --- /dev/null
> +++ b/include/lttng/ust-dl.h
> @@ -0,0 +1,54 @@
> +#ifndef _LTTNG_UST_DL_H
> +#define _LTTNG_UST_DL_H
> +
> +/*
> + * Copyright (C) 2013 - Paul Woegerer <paul.woegerer@mentor.com>
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> copy
> + * of this software and associated documentation files (the "Software"), to
> deal
> + * in the Software without restriction, including without limitation the
> rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included
> in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE
> + * SOFTWARE.
> + */
> +
> +#include <dlfcn.h>
> +#include <lttng/ust-compiler.h>
> +
> +void *__attribute__((weak)) lttng_ust_notrace
> +_lttng_ust_dl_libc_dlopen(const char *filename, int flag);
> +int __attribute__((weak)) lttng_ust_notrace
> +_lttng_ust_dl_libc_dlclose(void *handle);
> +
> +static inline __attribute__((always_inline)) lttng_ust_notrace void *
> +lttng_ust_dlopen(const char *filename, int flag);
> +static void *
> +lttng_ust_dlopen(const char *filename, int flag)
> +{
> +	if (_lttng_ust_dl_libc_dlopen)
> +		return _lttng_ust_dl_libc_dlopen(filename, flag);
> +	return dlopen(filename, flag);
> +}
> +
> +static inline __attribute__((always_inline)) lttng_ust_notrace int
> +lttng_ust_dlclose(void *handle);
> +static int
> +lttng_ust_dlclose(void *handle)
> +{
> +	if (_lttng_ust_dl_libc_dlclose)
> +		return _lttng_ust_dl_libc_dlclose(handle);
> +	return dlclose(handle);
> +}
> +
> +#endif	/* _LTTNG_UST_DL_H */
> diff --git a/liblttng-ust-baddr/Makefile.am b/liblttng-ust-baddr/Makefile.am
> new file mode 100644
> index 0000000..afa9489
> --- /dev/null
> +++ b/liblttng-ust-baddr/Makefile.am
> @@ -0,0 +1,18 @@
> +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include
> +AM_CFLAGS = -fno-strict-aliasing
> +
> +lib_LTLIBRARIES = liblttng-ust-baddr.la
> +liblttng_ust_baddr_la_SOURCES = \
> +	lttng-ust-baddr.c \
> +	ust_baddr.c \
> +	ust_baddr.h
> +liblttng_ust_baddr_la_LIBADD = \
> +	-L$(top_builddir)/liblttng-ust/.libs \
> +	-llttng-ust
> +
> +if LTTNG_UST_BUILD_WITH_LIBDL
> +liblttng_ust_baddr_la_LIBADD += -ldl
> +endif
> +if LTTNG_UST_BUILD_WITH_LIBC_DL
> +liblttng_ust_baddr_la_LIBADD += -lc
> +endif
> diff --git a/liblttng-ust-baddr/lttng-ust-baddr.c
> b/liblttng-ust-baddr/lttng-ust-baddr.c
> new file mode 100644
> index 0000000..21c22a2
> --- /dev/null
> +++ b/liblttng-ust-baddr/lttng-ust-baddr.c
> @@ -0,0 +1,64 @@
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
> USA
> + */
> +
> +#define _GNU_SOURCE
> +#include <dlfcn.h>
> +#include <link.h>
> +
> +#include <sys/types.h>
> +#include <sys/stat.h>
> +#include <sys/stat.h>
> +#include <unistd.h>
> +#include <limits.h>
> +#include <stdlib.h>
> +#include <errno.h>
> +#include <stdint.h>
> +#include <stddef.h>
> +#include <stdio.h>
> +#include "usterr.h"
> +
> +#define TRACEPOINT_DEFINE
> +#include "ust_baddr.h"
> +
> +int
> +push_baddr(void *so_base, const char *so_name)
> +{
> +	char resolved_path[PATH_MAX];
> +	struct stat sostat;
> +
> +	if (!realpath(so_name, resolved_path)) {
> +		ERR("could not resolve path '%s'", so_name);
> +		return 0;
> +	}
> +
> +	if (stat(resolved_path, &sostat)) {
> +		ERR("could not access file status for %s", resolved_path);
> +		return 0;
> +	}
> +
> +	tracepoint(ust_baddr, push,
> +		so_base, resolved_path, sostat.st_size, sostat.st_mtime);
> +	return 0;
> +}
> +
> +int
> +pop_baddr(void *so_base)
> +{
> +	tracepoint(ust_baddr, pop, so_base);
> +	return 0;
> +}
> diff --git a/liblttng-ust-baddr/ust_baddr.c b/liblttng-ust-baddr/ust_baddr.c
> new file mode 100644
> index 0000000..bfbb7bf
> --- /dev/null
> +++ b/liblttng-ust-baddr/ust_baddr.c
> @@ -0,0 +1,20 @@
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
> USA
> + */
> +
> +#define TRACEPOINT_CREATE_PROBES
> +#include "ust_baddr.h"
> diff --git a/liblttng-ust-baddr/ust_baddr.h b/liblttng-ust-baddr/ust_baddr.h
> new file mode 100644
> index 0000000..2c757f7
> --- /dev/null
> +++ b/liblttng-ust-baddr/ust_baddr.h
> @@ -0,0 +1,66 @@
> +#undef TRACEPOINT_PROVIDER
> +#define TRACEPOINT_PROVIDER ust_baddr
> +
> +#if !defined(_TRACEPOINT_UST_BADDR_H) ||
> defined(TRACEPOINT_HEADER_MULTI_READ)
> +#define _TRACEPOINT_UST_BADDR_H
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> copy
> + * of this software and associated documentation files (the "Software"), to
> deal
> + * in the Software without restriction, including without limitation the
> rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included
> in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE
> + * SOFTWARE.
> + */
> +
> +#include <stdint.h>
> +#include <unistd.h>
> +
> +#define LTTNG_UST_BADDR_PROVIDER
> +#include <lttng/tracepoint.h>
> +
> +TRACEPOINT_EVENT(ust_baddr, push,
> +	TP_ARGS(void *, baddr, const char*, sopath, int64_t, size, int64_t, mtime),
> +	TP_FIELDS(
> +		ctf_integer_hex(void *, baddr, baddr)
> +		ctf_string(sopath, sopath)
> +		ctf_integer(int64_t, size, size)
> +		ctf_integer(int64_t, mtime, mtime)
> +	)
> +)
> +
> +TRACEPOINT_EVENT(ust_baddr, pop,
> +	TP_ARGS(void *, baddr),
> +	TP_FIELDS(
> +		ctf_integer_hex(void *, baddr, baddr)
> +	)
> +)
> +
> +#endif /* _TRACEPOINT_UST_BADDR_H */
> +
> +#undef TRACEPOINT_INCLUDE
> +#define TRACEPOINT_INCLUDE "./ust_baddr.h"
> +
> +/* This part must be outside ifdef protection */
> +#include <lttng/tracepoint-event.h>
> +
> +#ifdef __cplusplus
> +}
> +#endif
> diff --git a/liblttng-ust-dl/Makefile.am b/liblttng-ust-dl/Makefile.am
> new file mode 100644
> index 0000000..14d8abf
> --- /dev/null
> +++ b/liblttng-ust-dl/Makefile.am
> @@ -0,0 +1,17 @@
> +AM_CPPFLAGS = -I$(top_srcdir)/include
> +AM_CFLAGS = -fno-strict-aliasing
> +
> +lib_LTLIBRARIES = liblttng-ust-dl.la
> +liblttng_ust_dl_la_SOURCES = ustdl.c
> +liblttng_ust_dl_la_LIBADD = \
> +	$(top_builddir)/liblttng-ust/liblttng-ust.la
> +
> +if LTTNG_UST_BUILD_WITH_LIBDL
> +liblttng_ust_dl_la_LIBADD += -ldl
> +endif
> +if LTTNG_UST_BUILD_WITH_LIBC_DL
> +liblttng_ust_dl_la_LIBADD += -lc
> +endif
> +
> +libustdl_CFLAGS = -DUST_COMPONENT=liblttng-ust-dl -fno-strict-aliasing
> +
> diff --git a/liblttng-ust-dl/ustdl.c b/liblttng-ust-dl/ustdl.c
> new file mode 100644
> index 0000000..314e272
> --- /dev/null
> +++ b/liblttng-ust-dl/ustdl.c
> @@ -0,0 +1,144 @@
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul.woegerer@mentor.com>
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; version 2.1 of
> + * the License.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
> USA
> + */
> +
> +#define _GNU_SOURCE
> +#include <inttypes.h>
> +#include <dlfcn.h>
> +#include <link.h>
> +#include <unistd.h>
> +#include <stdio.h>
> +#include <signal.h>
> +#include <sched.h>
> +#include <stdarg.h>
> +#include "usterr.h"
> +
> +#include <lttng/ust-compiler.h>
> +#include <lttng/ust.h>
> +
> +static void *(*__lttng_ust_plibc_dlopen)(const char *filename, int flag);
> +static int (*__lttng_ust_plibc_dlclose)(void *handle);
> +static void *__lttng_ust_baddr_handle;
> +
> +void *_lttng_ust_dl_libc_dlopen(const char *filename, int flag)
> +{
> +	if (!__lttng_ust_plibc_dlopen) {
> +		__lttng_ust_plibc_dlopen = dlsym(RTLD_NEXT, "dlopen");
> +		if (__lttng_ust_plibc_dlopen == NULL) {
> +			fprintf(stderr, "%s\n", dlerror());
> +			return NULL;
> +		}
> +	}
> +	return __lttng_ust_plibc_dlopen(filename, flag);
> +}
> +
> +int _lttng_ust_dl_libc_dlclose(void *handle)
> +{
> +	if (!__lttng_ust_plibc_dlclose) {
> +		__lttng_ust_plibc_dlclose = dlsym(RTLD_NEXT, "dlclose");
> +		if (__lttng_ust_plibc_dlclose == NULL) {
> +			fprintf(stderr, "%s\n", dlerror());
> +			return -1;
> +		}
> +	}
> +	return __lttng_ust_plibc_dlclose(handle);
> +}
> +
> +static
> +void *lttng_ust_baddr_handle(void)
> +{
> +	if (!__lttng_ust_baddr_handle) {
> +		__lttng_ust_baddr_handle = _lttng_ust_dl_libc_dlopen(
> +			"liblttng-ust-baddr.so.0", RTLD_NOW | RTLD_GLOBAL);
> +		if (__lttng_ust_baddr_handle == NULL)
> +			fprintf(stderr, "%s\n", dlerror());
> +	}
> +	return __lttng_ust_baddr_handle;
> +}
> +
> +static
> +int lttng_ust_baddr_push(void *so_base, const char *so_name)
> +{
> +	static int
> +	(*lttng_ust_baddr_push_fn)(void *so_base, const char *so_name);
> +	if (!lttng_ust_baddr_push_fn) {
> +		void *baddr_handle = lttng_ust_baddr_handle();
> +		if (baddr_handle) {
> +			lttng_ust_baddr_push_fn = dlsym(baddr_handle,
> +				"push_baddr");
> +			if (lttng_ust_baddr_push_fn == NULL)
> +				fprintf(stderr, "%s\n", dlerror());
> +		}
> +		if (!lttng_ust_baddr_push_fn)
> +			return -1;
> +	}
> +	return lttng_ust_baddr_push_fn(so_base, so_name);
> +}
> +
> +static
> +int lttng_ust_baddr_pop(void *so_base)
> +{
> +	static int
> +	(*lttng_ust_baddr_pop_fn)(void *so_base);
> +	if (!lttng_ust_baddr_pop_fn) {
> +		void *baddr_handle = lttng_ust_baddr_handle();
> +		if (baddr_handle) {
> +			lttng_ust_baddr_pop_fn = dlsym(baddr_handle,
> +				"pop_baddr");
> +			if (lttng_ust_baddr_pop_fn == NULL)
> +				fprintf(stderr, "%s\n", dlerror());
> +		}
> +		if (!lttng_ust_baddr_pop_fn)
> +			return -1;
> +	}
> +	return lttng_ust_baddr_pop_fn(so_base);
> +}
> +
> +void *dlopen(const char *filename, int flag)
> +{
> +	void *handle = _lttng_ust_dl_libc_dlopen(filename, flag);
> +	if (handle) {
> +		struct link_map *p = NULL;
> +		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
> +			&& p->l_addr != 0)

Maybe add one extra tab above for readability.

> +			lttng_ust_baddr_push((void *) p->l_addr, p->l_name);
> +	}
> +	return handle;
> +}
> +
> +int dlclose(void *handle)
> +{
> +	if (handle) {
> +		struct link_map *p = NULL;
> +		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
> +			&& p->l_addr != 0)

Same here.

Thanks,

Mathieu

> +			lttng_ust_baddr_pop((void *) p->l_addr);
> +	}
> +	return _lttng_ust_dl_libc_dlclose(handle);
> +}
> +
> +static void __attribute__((destructor))
> +lttng_ust_baddr_handle_fini(void);
> +static void
> +lttng_ust_baddr_handle_fini(void)
> +{
> +	if (__lttng_ust_baddr_handle) {
> +		int ret = _lttng_ust_dl_libc_dlclose(__lttng_ust_baddr_handle);
> +		if (ret)
> +			fprintf(stderr, "%s\n", dlerror());
> +	}
> +}
> --
> 1.8.4.2
> 
> 

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] Base-address tracing for dlopen and dlclose
       [not found]   ` <318817448.66208.1384349143345.JavaMail.zimbra@efficios.com>
@ 2013-11-13 13:46     ` Woegerer, Paul
       [not found]     ` <528382D0.3030202@mentor.com>
  1 sibling, 0 replies; 11+ messages in thread
From: Woegerer, Paul @ 2013-11-13 13:46 UTC (permalink / raw)
  To: Mathieu Desnoyers; +Cc: lttng-dev

[-- Attachment #1: Type: text/plain, Size: 1797 bytes --]

Hi Mathieu,

Thanks for the review.
Comments see below:

On 11/13/2013 02:25 PM, Mathieu Desnoyers wrote:
> ----- Original Message -----
>> Provide an LD_PRELOAD library to allow tracing of calls to dlopen and
>> dlclose.  Tracing the lttng-ust internal use of dlopen and dlclose is
>> prevented.
> Why do we need to prevent tracing lttng-ust internal use of dlopen/dlclose ?

I assumed this would be beneficial to have (less noise in  the trace
data). But if you don't like that we can also leave it out. You will see
lots of

ust_baddr:push: { cpu_id = X }, { baddr = 0xXXXXXXXX, sopath =
"/.../liblttng-ust-tracepoint.so.0.0.0", size = A, mtime = B }

events in the trace though (I attached a sample to demonstrate this).

>> +void *dlopen(const char *filename, int flag)
>> +{
>> +	void *handle = _lttng_ust_dl_libc_dlopen(filename, flag);
>> +	if (handle) {
>> +		struct link_map *p = NULL;
>> +		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
>> +			&& p->l_addr != 0)
> Maybe add one extra tab above for readability.

No problem. I can do that.

Do you want me to resend the patch without lttng_ust_dlopen/close handling ?

--
Paul

> Same here.
>
> Thanks,
>
> Mathieu
>
>> +			lttng_ust_baddr_pop((void *) p->l_addr);
>> +	}
>> +	return _lttng_ust_dl_libc_dlclose(handle);
>> +}
>> +
>> +static void __attribute__((destructor))
>> +lttng_ust_baddr_handle_fini(void);
>> +static void
>> +lttng_ust_baddr_handle_fini(void)
>> +{
>> +	if (__lttng_ust_baddr_handle) {
>> +		int ret = _lttng_ust_dl_libc_dlclose(__lttng_ust_baddr_handle);
>> +		if (ret)
>> +			fprintf(stderr, "%s\n", dlerror());
>> +	}
>> +}
>> --
>> 1.8.4.2
>>
>>


-- 
Paul Woegerer, SW Development Engineer
Sourcery Analyzer <http://go.mentor.com/sourceryanalyzer>
Mentor Graphics, Embedded Software Division


[-- Attachment #2: server_sample_with_internal_dlopen.txt --]
[-- Type: text/plain, Size: 48701 bytes --]

[14:30:27.730734832] (+?.?????????) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr:push: { cpu_id = 6 }, { baddr = 0x7FA4E4F85000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:27.730756922] (+0.000022090) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x400000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample", size = 162202, mtime = 1384349418 }
[14:30:27.730764542] (+0.000007620) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FFF173FE000, sopath = "[linux-vdso.so.1]", size = 0, mtime = -1 }
[14:30:27.730771237] (+0.000006695) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E7BE5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0", size = 20700, mtime = 1384349413 }
[14:30:27.730777713] (+0.000006476) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E79E1000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0", size = 44808, mtime = 1384349414 }
[14:30:27.730783951] (+0.000006238) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E77DE000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0", size = 21500, mtime = 1384349414 }
[14:30:27.730793199] (+0.000009248) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E75D9000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so", size = 164519, mtime = 1384349418 }
[14:30:27.730799561] (+0.000006362) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E7390000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0", size = 1611481, mtime = 1384349413 }
[14:30:27.730803465] (+0.000003904) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E718C000, sopath = "/lib64/libdl-2.17.so", size = 19016, mtime = 1379513990 }
[14:30:27.730806834] (+0.000003369) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E6DDE000, sopath = "/lib64/libc-2.17.so", size = 1996294, mtime = 1379513989 }
[14:30:27.730812156] (+0.000005322) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:27.730815689] (+0.000003533) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E69BC000, sopath = "/lib64/librt-2.17.so", size = 42706, mtime = 1379513990 }
[14:30:27.730821705] (+0.000006016) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E67B5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0", size = 108574, mtime = 1381992197 }
[14:30:27.730827619] (+0.000005914) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E65AD000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0", size = 162940, mtime = 1381992197 }
[14:30:27.730833773] (+0.000006154) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E63A9000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0", size = 86456, mtime = 1381992197 }
[14:30:27.730837148] (+0.000003375) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E618D000, sopath = "/lib64/libpthread-2.17.so", size = 131133, mtime = 1379513990 }
[14:30:27.730840421] (+0.000003273) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E7DE8000, sopath = "/lib64/ld-2.17.so", size = 163493, mtime = 1379513989 }
[14:30:27.730845590] (+0.000005169) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E4F85000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:27.730958476] (+0.000112886) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr:push: { cpu_id = 7 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:27.731227493] (+0.000269017) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr:push: { cpu_id = 7 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:27.731294992] (+0.000067499) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 ust_baddr:push: { cpu_id = 7 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:27.731304592] (+0.000009600) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_entry: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x401D98, call_site = 0x7FA4E6DFFA15 }
[14:30:27.731310807] (+0.000006215) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_entry: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x402D12, call_site = 0x401DEC }
[14:30:27.731326261] (+0.000015454) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_entry: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x402CD2, call_site = 0x402D8B }
[14:30:27.731328041] (+0.000001780) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_exit: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x402CD2, call_site = 0x402D8B }
[14:30:27.731329258] (+0.000001217) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_exit: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x402D12, call_site = 0x401DEC }
[14:30:27.731336640] (+0.000007382) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_entry: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x402462, call_site = 0x402082 }
[14:30:37.070733177] (+9.339396537) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x400000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample", size = 162202, mtime = 1384349418 }
[14:30:37.070745432] (+0.000012255) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FFF173FE000, sopath = "[linux-vdso.so.1]", size = 0, mtime = -1 }
[14:30:37.070759666] (+0.000014234) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7BE5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0", size = 20700, mtime = 1384349413 }
[14:30:37.070767724] (+0.000008058) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E79E1000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0", size = 44808, mtime = 1384349414 }
[14:30:37.070775031] (+0.000007307) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E77DE000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0", size = 21500, mtime = 1384349414 }
[14:30:37.070786243] (+0.000011212) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E75D9000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so", size = 164519, mtime = 1384349418 }
[14:30:37.070793929] (+0.000007686) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7390000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0", size = 1611481, mtime = 1384349413 }
[14:30:37.070798603] (+0.000004674) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E718C000, sopath = "/lib64/libdl-2.17.so", size = 19016, mtime = 1379513990 }
[14:30:37.070802526] (+0.000003923) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E6DDE000, sopath = "/lib64/libc-2.17.so", size = 1996294, mtime = 1379513989 }
[14:30:37.070809745] (+0.000007219) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:37.070813835] (+0.000004090) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E69BC000, sopath = "/lib64/librt-2.17.so", size = 42706, mtime = 1379513990 }
[14:30:37.070820851] (+0.000007016) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E67B5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0", size = 108574, mtime = 1381992197 }
[14:30:37.070827882] (+0.000007031) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E65AD000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0", size = 162940, mtime = 1381992197 }
[14:30:37.070835093] (+0.000007211) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E63A9000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0", size = 86456, mtime = 1381992197 }
[14:30:37.070839172] (+0.000004079) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E618D000, sopath = "/lib64/libpthread-2.17.so", size = 131133, mtime = 1379513990 }
[14:30:37.070843200] (+0.000004028) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7DE8000, sopath = "/lib64/ld-2.17.so", size = 163493, mtime = 1379513989 }
[14:30:37.070851736] (+0.000008536) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E4F85000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:37.070899535] (+0.000047799) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402295, call_site = 0x402689 }
[14:30:37.070929059] (+0.000029524) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x4020B0, call_site = 0x402431 }
[14:30:37.070934320] (+0.000005261) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 server_request:start: { cpu_id = 4 }, { ip = 0x40213E }, { url = "/run_time" }
[14:30:37.070942209] (+0.000007889) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x4029A6, call_site = 0x4021B9 }
[14:30:37.070943151] (+0.000000942) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 server_request:module_open: { cpu_id = 4 }, { ip = 0x402A17 }, { soname = "run_time.so" }
[14:30:37.070944087] (+0.000000936) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402CD2, call_site = 0x402A64 }
[14:30:37.070945948] (+0.000001861) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402CD2, call_site = 0x402A64 }
[14:30:37.071080174] (+0.000134226) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:37.071124964] (+0.000044790) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7FA4E4D82000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_time.so", size = 89805, mtime = 1384349418 }
[14:30:37.071127527] (+0.000002563) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 server_request:module_open_success: { cpu_id = 4 }, { ip = 0x402ADF }, { soname = "run_time.so" }
[14:30:37.071129146] (+0.000001619) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402CD2, call_site = 0x402B28 }
[14:30:37.071130036] (+0.000000890) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402CD2, call_site = 0x402B28 }
[14:30:37.071130529] (+0.000000493) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402C32, call_site = 0x402B36 }
[14:30:37.071132188] (+0.000001659) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402C32, call_site = 0x402B36 }
[14:30:37.071132596] (+0.000000408) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x4029A6, call_site = 0x4021B9 }
[14:30:37.071174022] (+0.000041426) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x7FA4E4D831A0, call_site = 0x402223 }
[14:30:37.071234731] (+0.000060709) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 server_request:send_response: { cpu_id = 4 }, { ip = 0x7FA4E4D8326C }, { options = "" }
[14:30:37.071250532] (+0.000015801) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 server_request:send_response_done: { cpu_id = 4 }, { ip = 0x7FA4E4D832DD }, { }
[14:30:37.071251238] (+0.000000706) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x7FA4E4D831A0, call_site = 0x402223 }
[14:30:37.071251906] (+0.000000668) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x40294C, call_site = 0x40222B }
[14:30:37.071258129] (+0.000006223) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E4D82000 }
[14:30:37.071269210] (+0.000011081) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:37.071284174] (+0.000014964) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x40294C, call_site = 0x40222B }
[14:30:37.071284982] (+0.000000808) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x4020B0, call_site = 0x402431 }
[14:30:37.071285389] (+0.000000407) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 22969 }, { addr = 0x402295, call_site = 0x402689 }
[14:30:37.071307281] (+0.000021892) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:37.071315751] (+0.000008470) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:37.071320041] (+0.000004290) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:37.071325136] (+0.000005095) atv-pwoegere-l3.atv.mentorg.com:server_sample:22969 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:37.071853595] (+0.000528459) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_entry: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }
[14:30:37.071868407] (+0.000014812) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_exit: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }
[14:30:41.657603518] (+4.585735111) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x400000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample", size = 162202, mtime = 1384349418 }
[14:30:41.657617422] (+0.000013904) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FFF173FE000, sopath = "[linux-vdso.so.1]", size = 0, mtime = -1 }
[14:30:41.657633736] (+0.000016314) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7BE5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0", size = 20700, mtime = 1384349413 }
[14:30:41.657642949] (+0.000009213) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E79E1000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0", size = 44808, mtime = 1384349414 }
[14:30:41.657651290] (+0.000008341) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E77DE000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0", size = 21500, mtime = 1384349414 }
[14:30:41.657663949] (+0.000012659) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E75D9000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so", size = 164519, mtime = 1384349418 }
[14:30:41.657672782] (+0.000008833) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7390000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0", size = 1611481, mtime = 1384349413 }
[14:30:41.657677957] (+0.000005175) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E718C000, sopath = "/lib64/libdl-2.17.so", size = 19016, mtime = 1379513990 }
[14:30:41.657682455] (+0.000004498) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E6DDE000, sopath = "/lib64/libc-2.17.so", size = 1996294, mtime = 1379513989 }
[14:30:41.657690738] (+0.000008283) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:41.657695328] (+0.000004590) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E69BC000, sopath = "/lib64/librt-2.17.so", size = 42706, mtime = 1379513990 }
[14:30:41.657703372] (+0.000008044) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E67B5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0", size = 108574, mtime = 1381992197 }
[14:30:41.657711371] (+0.000007999) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E65AD000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0", size = 162940, mtime = 1381992197 }
[14:30:41.657719294] (+0.000007923) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E63A9000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0", size = 86456, mtime = 1381992197 }
[14:30:41.657723778] (+0.000004484) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E618D000, sopath = "/lib64/libpthread-2.17.so", size = 131133, mtime = 1379513990 }
[14:30:41.657728118] (+0.000004340) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7DE8000, sopath = "/lib64/ld-2.17.so", size = 163493, mtime = 1379513989 }
[14:30:41.657737433] (+0.000009315) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E4F85000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:41.657805542] (+0.000068109) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402295, call_site = 0x402689 }
[14:30:41.657843147] (+0.000037605) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x4020B0, call_site = 0x402431 }
[14:30:41.657849162] (+0.000006015) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 server_request:start: { cpu_id = 4 }, { ip = 0x40213E }, { url = "/run_cmd?/usr/bin/df" }
[14:30:41.657859368] (+0.000010206) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x4029A6, call_site = 0x4021B9 }
[14:30:41.657860497] (+0.000001129) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 server_request:module_open: { cpu_id = 4 }, { ip = 0x402A17 }, { soname = "run_cmd.so" }
[14:30:41.657861589] (+0.000001092) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402CD2, call_site = 0x402A64 }
[14:30:41.657863617] (+0.000002028) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402CD2, call_site = 0x402A64 }
[14:30:41.658006483] (+0.000142866) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:41.658047264] (+0.000040781) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7FA4E4D82000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_cmd.so", size = 89969, mtime = 1384349418 }
[14:30:41.658050410] (+0.000003146) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 server_request:module_open_success: { cpu_id = 4 }, { ip = 0x402ADF }, { soname = "run_cmd.so" }
[14:30:41.658052347] (+0.000001937) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402CD2, call_site = 0x402B28 }
[14:30:41.658053378] (+0.000001031) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402CD2, call_site = 0x402B28 }
[14:30:41.658053951] (+0.000000573) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402C32, call_site = 0x402B36 }
[14:30:41.658055622] (+0.000001671) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402C32, call_site = 0x402B36 }
[14:30:41.658056154] (+0.000000532) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x4029A6, call_site = 0x4021B9 }
[14:30:41.658121741] (+0.000065587) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x7FA4E4D83350, call_site = 0x402223 }
[14:30:41.658123276] (+0.000001535) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 server_request:send_response: { cpu_id = 4 }, { ip = 0x7FA4E4D833B4 }, { options = "/usr/bin/df" }
[14:30:41.716574179] (+0.058450903) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x400000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample", size = 162202, mtime = 1384349418 }
[14:30:41.716586097] (+0.000011918) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FFF173FE000, sopath = "[linux-vdso.so.1]", size = 0, mtime = -1 }
[14:30:41.716600933] (+0.000014836) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E7BE5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0", size = 20700, mtime = 1384349413 }
[14:30:41.716609636] (+0.000008703) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E79E1000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0", size = 44808, mtime = 1384349414 }
[14:30:41.716617798] (+0.000008162) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E77DE000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0", size = 21500, mtime = 1384349414 }
[14:30:41.716629079] (+0.000011281) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E75D9000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so", size = 164519, mtime = 1384349418 }
[14:30:41.716636627] (+0.000007548) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E7390000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0", size = 1611481, mtime = 1384349413 }
[14:30:41.716641115] (+0.000004488) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E718C000, sopath = "/lib64/libdl-2.17.so", size = 19016, mtime = 1379513990 }
[14:30:41.716645553] (+0.000004438) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E6DDE000, sopath = "/lib64/libc-2.17.so", size = 1996294, mtime = 1379513989 }
[14:30:41.716653492] (+0.000007939) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:41.716658129] (+0.000004637) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E69BC000, sopath = "/lib64/librt-2.17.so", size = 42706, mtime = 1379513990 }
[14:30:41.716665334] (+0.000007205) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E67B5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0", size = 108574, mtime = 1381992197 }
[14:30:41.716673227] (+0.000007893) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E65AD000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0", size = 162940, mtime = 1381992197 }
[14:30:41.716680567] (+0.000007340) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E63A9000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0", size = 86456, mtime = 1381992197 }
[14:30:41.716685265] (+0.000004698) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E618D000, sopath = "/lib64/libpthread-2.17.so", size = 131133, mtime = 1379513990 }
[14:30:41.716689714] (+0.000004449) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E7DE8000, sopath = "/lib64/ld-2.17.so", size = 163493, mtime = 1379513989 }
[14:30:41.716697033] (+0.000007319) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E4F85000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:41.716708897] (+0.000011864) atv-pwoegere-l3.atv.mentorg.com:server_sample:23135 ust_baddr_statedump:soinfo: { cpu_id = 6 }, { baddr = 0x7FA4E4D82000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_cmd.so", size = 89969, mtime = 1384349418 }
[14:30:41.968421391] (+0.251712494) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr:push: { cpu_id = 1 }, { baddr = 0x7F1D8D748000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:41.968432259] (+0.000010868) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x400000, sopath = "/usr/bin/df", size = 81120, mtime = 1359275285 }
[14:30:41.968440035] (+0.000007776) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7FFF69EF6000, sopath = "[linux-vdso.so.1]", size = 0, mtime = -1 }
[14:30:41.968446319] (+0.000006284) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D901A3000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0", size = 20700, mtime = 1384349413 }
[14:30:41.968452570] (+0.000006251) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8FF9F000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0", size = 44808, mtime = 1384349414 }
[14:30:41.968458507] (+0.000005937) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8FD9C000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0", size = 21500, mtime = 1384349414 }
[14:30:41.968462313] (+0.000003806) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8F9EE000, sopath = "/lib64/libc-2.17.so", size = 1996294, mtime = 1379513989 }
[14:30:41.968467798] (+0.000005485) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8F7A5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0", size = 1611481, mtime = 1384349413 }
[14:30:41.968472769] (+0.000004971) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8F58B000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:41.968476186] (+0.000003417) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8F383000, sopath = "/lib64/librt-2.17.so", size = 42706, mtime = 1379513990 }
[14:30:41.968479085] (+0.000002899) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8F17F000, sopath = "/lib64/libdl-2.17.so", size = 19016, mtime = 1379513990 }
[14:30:41.968484887] (+0.000005802) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8EF78000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0", size = 108574, mtime = 1381992197 }
[14:30:41.968490563] (+0.000005676) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8ED70000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0", size = 162940, mtime = 1381992197 }
[14:30:41.968496066] (+0.000005503) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8EB6C000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0", size = 86456, mtime = 1381992197 }
[14:30:41.968499241] (+0.000003175) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8E950000, sopath = "/lib64/libpthread-2.17.so", size = 131133, mtime = 1379513990 }
[14:30:41.968502327] (+0.000003086) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D903A6000, sopath = "/lib64/ld-2.17.so", size = 163493, mtime = 1379513989 }
[14:30:41.968507063] (+0.000004736) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr_statedump:soinfo: { cpu_id = 1 }, { baddr = 0x7F1D8D748000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:41.968589764] (+0.000082701) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr:push: { cpu_id = 6 }, { baddr = 0x7F1D8F58B000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:41.969353433] (+0.000763669) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr:pop: { cpu_id = 6 }, { baddr = 0x7F1D8F58B000 }
[14:30:41.969357502] (+0.000004069) atv-pwoegere-l3.atv.mentorg.com:df:23135 ust_baddr:pop: { cpu_id = 6 }, { baddr = 0x7F1D8F58B000 }
[14:30:41.969860469] (+0.000502967) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }
[14:30:41.969877301] (+0.000016832) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }
[14:30:41.970116834] (+0.000239533) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 server_request:send_response_done: { cpu_id = 4 }, { ip = 0x7FA4E4D83565 }, { }
[14:30:41.970118737] (+0.000001903) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x7FA4E4D83350, call_site = 0x402223 }
[14:30:41.970122185] (+0.000003448) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x40294C, call_site = 0x40222B }
[14:30:41.970138831] (+0.000016646) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E4D82000 }
[14:30:41.970165868] (+0.000027037) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:41.970183864] (+0.000017996) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x40294C, call_site = 0x40222B }
[14:30:41.970184674] (+0.000000810) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x4020B0, call_site = 0x402431 }
[14:30:41.970185301] (+0.000000627) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23054 }, { addr = 0x402295, call_site = 0x402689 }
[14:30:41.970211417] (+0.000026116) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:41.970222721] (+0.000011304) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:41.970228774] (+0.000006053) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:41.970235991] (+0.000007217) atv-pwoegere-l3.atv.mentorg.com:server_sample:23054 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:41.970700404] (+0.000464413) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_entry: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }
[14:30:41.970706171] (+0.000005767) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_exit: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }
[14:30:46.592967562] (+4.622261391) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x400000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/server_sample", size = 162202, mtime = 1384349418 }
[14:30:46.592982568] (+0.000015006) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FFF173FE000, sopath = "[linux-vdso.so.1]", size = 0, mtime = -1 }
[14:30:46.592999569] (+0.000017001) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7BE5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-fork.so.0.0.0", size = 20700, mtime = 1384349413 }
[14:30:46.593009044] (+0.000009475) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E79E1000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-cyg-profile.so.0.0.0", size = 44808, mtime = 1384349414 }
[14:30:46.593017632] (+0.000008588) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E77DE000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-dl.so.0.0.0", size = 21500, mtime = 1384349414 }
[14:30:46.593030920] (+0.000013288) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E75D9000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/libtrace_requests.so", size = 164519, mtime = 1384349418 }
[14:30:46.593039943] (+0.000009023) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7390000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust.so.0.0.0", size = 1611481, mtime = 1384349413 }
[14:30:46.593045127] (+0.000005184) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E718C000, sopath = "/lib64/libdl-2.17.so", size = 19016, mtime = 1379513990 }
[14:30:46.593049625] (+0.000004498) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E6DDE000, sopath = "/lib64/libc-2.17.so", size = 1996294, mtime = 1379513989 }
[14:30:46.593065066] (+0.000015441) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:46.593069992] (+0.000004926) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E69BC000, sopath = "/lib64/librt-2.17.so", size = 42706, mtime = 1379513990 }
[14:30:46.593078353] (+0.000008361) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E67B5000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-bp.so.2.0.0", size = 108574, mtime = 1381992197 }
[14:30:46.593087085] (+0.000008732) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E65AD000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-cds.so.2.0.0", size = 162940, mtime = 1381992197 }
[14:30:46.593095454] (+0.000008369) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E63A9000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liburcu-common.so.2.0.0", size = 86456, mtime = 1381992197 }
[14:30:46.593100116] (+0.000004662) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E618D000, sopath = "/lib64/libpthread-2.17.so", size = 131133, mtime = 1379513990 }
[14:30:46.593104558] (+0.000004442) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E7DE8000, sopath = "/lib64/ld-2.17.so", size = 163493, mtime = 1379513989 }
[14:30:46.593114405] (+0.000009847) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr_statedump:soinfo: { cpu_id = 5 }, { baddr = 0x7FA4E4F85000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-baddr.so.0.0.0", size = 76664, mtime = 1384349413 }
[14:30:46.593193293] (+0.000078888) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402295, call_site = 0x402689 }
[14:30:46.593231739] (+0.000038446) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x4020B0, call_site = 0x402431 }
[14:30:46.593238151] (+0.000006412) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 server_request:start: { cpu_id = 4 }, { ip = 0x40213E }, { url = "/run_hello" }
[14:30:46.593248822] (+0.000010671) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x4029A6, call_site = 0x4021B9 }
[14:30:46.593249920] (+0.000001098) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 server_request:module_open: { cpu_id = 4 }, { ip = 0x402A17 }, { soname = "run_hello.so" }
[14:30:46.593251071] (+0.000001151) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402CD2, call_site = 0x402A64 }
[14:30:46.593253138] (+0.000002067) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402CD2, call_site = 0x402A64 }
[14:30:46.593397473] (+0.000144335) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000, sopath = "/home/pwoegere/MGC/lttng2_stack_latest_install/lib64/liblttng-ust-tracepoint.so.0.0.0", size = 138864, mtime = 1384349413 }
[14:30:46.593440180] (+0.000042707) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:push: { cpu_id = 4 }, { baddr = 0x7FA4E4D82000, sopath = "/home/pwoegere/MGC/SA/git-trunk/source/systems/ust/features/com.mentor.embedded.profiler.feature.system.ust.samples/server_sample/run_hello.so", size = 88303, mtime = 1384349418 }
[14:30:46.593443314] (+0.000003134) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 server_request:module_open_success: { cpu_id = 4 }, { ip = 0x402ADF }, { soname = "run_hello.so" }
[14:30:46.593445547] (+0.000002233) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402CD2, call_site = 0x402B28 }
[14:30:46.593446587] (+0.000001040) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402CD2, call_site = 0x402B28 }
[14:30:46.593447200] (+0.000000613) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402C32, call_site = 0x402B36 }
[14:30:46.593449007] (+0.000001807) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402C32, call_site = 0x402B36 }
[14:30:46.593449600] (+0.000000593) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x4029A6, call_site = 0x4021B9 }
[14:30:46.593495968] (+0.000046368) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x7FA4E4D830B0, call_site = 0x402223 }
[14:30:46.593498592] (+0.000002624) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 server_request:send_response: { cpu_id = 4 }, { ip = 0x7FA4E4D83142 }, { options = "" }
[14:30:46.593511740] (+0.000013148) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 server_request:send_response_done: { cpu_id = 4 }, { ip = 0x7FA4E4D831AF }, { }
[14:30:46.593512381] (+0.000000641) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x7FA4E4D830B0, call_site = 0x402223 }
[14:30:46.593513025] (+0.000000644) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_entry: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x40294C, call_site = 0x40222B }
[14:30:46.593522697] (+0.000009672) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E4D82000 }
[14:30:46.593536139] (+0.000013442) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:46.593563856] (+0.000027717) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x40294C, call_site = 0x40222B }
[14:30:46.593564769] (+0.000000913) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x4020B0, call_site = 0x402431 }
[14:30:46.593565232] (+0.000000463) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 lttng_ust_cyg_profile:func_exit: { cpu_id = 4 }, { vtid = 23300 }, { addr = 0x402295, call_site = 0x402689 }
[14:30:46.593591526] (+0.000026294) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:46.593599751] (+0.000008225) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:46.593604299] (+0.000004548) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:46.593610159] (+0.000005860) atv-pwoegere-l3.atv.mentorg.com:server_sample:23300 ust_baddr:pop: { cpu_id = 4 }, { baddr = 0x7FA4E6BC4000 }
[14:30:46.594189988] (+0.000579829) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_entry: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }
[14:30:46.594199485] (+0.000009497) atv-pwoegere-l3.atv.mentorg.com:server_sample:22844 lttng_ust_cyg_profile:func_exit: { cpu_id = 7 }, { vtid = 22844 }, { addr = 0x4026BB, call_site = 0x7FA4E6E13450 }

[-- Attachment #3: Type: text/plain, Size: 155 bytes --]

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] Implement base-address-state tracing
       [not found] ` <1384183688-19038-3-git-send-email-paul_woegerer@mentor.com>
@ 2013-11-13 13:48   ` Mathieu Desnoyers
  0 siblings, 0 replies; 11+ messages in thread
From: Mathieu Desnoyers @ 2013-11-13 13:48 UTC (permalink / raw)
  To: Paul Woegerer; +Cc: lttng-dev

----- Original Message -----
> From: "Paul Woegerer" <paul_woegerer@mentor.com>
> To: lttng-dev@lists.lttng.org, "mathieu desnoyers" <mathieu.desnoyers@efficios.com>
> Sent: Monday, November 11, 2013 10:28:08 AM
> Subject: [PATCH 2/2] Implement base-address-state tracing
> 
> Dump the base-address state (executable and shared objects) into session
> on session-enable (per-session events).
> 
> Signed-off-by: Paul Woegerer <paul_woegerer@mentor.com>
> ---
>  include/lttng/ust-tracepoint-event.h     | 14 ++++++++
>  liblttng-ust-baddr/Makefile.am           |  4 ++-
>  liblttng-ust-baddr/lttng-ust-baddr.c     | 47 +++++++++++++++++++++++++
>  liblttng-ust-baddr/ust_baddr_statedump.c | 21 +++++++++++
>  liblttng-ust-baddr/ust_baddr_statedump.h | 60
>  ++++++++++++++++++++++++++++++++
>  liblttng-ust/lttng-events.c              | 10 ++++++
>  liblttng-ust/lttng-tracer-core.h         |  2 ++
>  liblttng-ust/lttng-ust-comm.c            | 52 +++++++++++++++++++++++++++
>  8 files changed, 209 insertions(+), 1 deletion(-)
>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.c
>  create mode 100644 liblttng-ust-baddr/ust_baddr_statedump.h
> 
> diff --git a/include/lttng/ust-tracepoint-event.h
> b/include/lttng/ust-tracepoint-event.h
> index bb3a05d..be58030 100644
> --- a/include/lttng/ust-tracepoint-event.h
> +++ b/include/lttng/ust-tracepoint-event.h
> @@ -480,6 +480,18 @@ size_t
> __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args))      \
>  #define TP_FIELDS(...) __VA_ARGS__
>  
>  /*
> + * For state dump, check that "session" argument (mandatory) matches the
> + * session this event belongs to. Ensures that we write state dump data only
> + * into the started session, not into all sessions.
> + */
> +#undef _TP_SESSION_CHECK
> +#ifdef TP_SESSION_CHECK
> +#define _TP_SESSION_CHECK(session, csession)   (session == csession)
> +#else /* TP_SESSION_CHECK */
> +#define _TP_SESSION_CHECK(session, csession)   1
> +#endif /* TP_SESSION_CHECK */
> +
> +/*
>   * Using twice size for filter stack data to hold size and pointer for
>   * each field (worse case). For integers, max size required is 64-bit.
>   * Same for double-precision floats. Those fit within
> @@ -506,6 +518,8 @@ void
> __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))	      \
>  									      \
>  	if (0)								      \
>  		(void) __dynamic_len_idx;	/* don't warn if unused */    \
> +	if (!_TP_SESSION_CHECK(session, __chan->session))		      \
> +		return;							      \
>  	if (caa_unlikely(!CMM_ACCESS_ONCE(__chan->session->active)))	      \
>  		return;							      \
>  	if (caa_unlikely(!CMM_ACCESS_ONCE(__chan->enabled)))		      \
> diff --git a/liblttng-ust-baddr/Makefile.am b/liblttng-ust-baddr/Makefile.am
> index afa9489..0d3cf28 100644
> --- a/liblttng-ust-baddr/Makefile.am
> +++ b/liblttng-ust-baddr/Makefile.am
> @@ -5,7 +5,9 @@ lib_LTLIBRARIES = liblttng-ust-baddr.la
>  liblttng_ust_baddr_la_SOURCES = \
>  	lttng-ust-baddr.c \
>  	ust_baddr.c \
> -	ust_baddr.h
> +	ust_baddr.h \
> +	ust_baddr_statedump.c \
> +	ust_baddr_statedump.h
>  liblttng_ust_baddr_la_LIBADD = \
>  	-L$(top_builddir)/liblttng-ust/.libs \
>  	-llttng-ust
> diff --git a/liblttng-ust-baddr/lttng-ust-baddr.c
> b/liblttng-ust-baddr/lttng-ust-baddr.c
> index 21c22a2..92b5cca 100644
> --- a/liblttng-ust-baddr/lttng-ust-baddr.c
> +++ b/liblttng-ust-baddr/lttng-ust-baddr.c
> @@ -34,6 +34,7 @@
>  
>  #define TRACEPOINT_DEFINE
>  #include "ust_baddr.h"
> +#include "ust_baddr_statedump.h"
>  
>  int
>  push_baddr(void *so_base, const char *so_name)
> @@ -62,3 +63,49 @@ pop_baddr(void *so_base)
>  	tracepoint(ust_baddr, pop, so_base);
>  	return 0;
>  }
> +
> +static int
> +_dl_iterate_write_memregion(struct dl_phdr_info *info, size_t size, void
> *data)
> +{
> +	int j;
> +	int num_loadable_segment = 0;
> +
> +	for (j = 0; j < info->dlpi_phnum; j++) {
> +		if (info->dlpi_phdr[j].p_type == PT_LOAD) {

  if (info->dlpi_phdr[j].p_type != PT_LOAD)
       continue;

will save us one indentation level.

> +			char resolved_path[PATH_MAX];
> +			struct stat sostat;
> +			void *base_addr_ptr = (void *) info->dlpi_addr
> +				+ info->dlpi_phdr[j].p_vaddr;
> +
> +			num_loadable_segment += 1;
> +			if ((info->dlpi_name == NULL || info->dlpi_name[0] == 0)
> +				&& num_loadable_segment == 1) {
> +				Dl_info dl_info = { 0 };
> +				if (!dladdr(base_addr_ptr, &dl_info))
> +					return 0;
> +				if (!realpath(dl_info.dli_fname, resolved_path))
> +					return 0;
> +			} else if (!realpath(info->dlpi_name, resolved_path))
> +				snprintf(resolved_path, PATH_MAX - 1, "[%s]",
> +					info->dlpi_name);

We have if and else if. What about the else ? We tend to leave at least a comment in these cases, just in case it is forgotten.

> +
> +			if (stat(resolved_path, &sostat)) {
> +				sostat.st_size = 0;
> +				sostat.st_mtime = -1;
> +			}
> +
> +			tracepoint(ust_baddr_statedump, soinfo,
> +				(struct lttng_session *) data, base_addr_ptr,
> +				resolved_path, sostat.st_size, sostat.st_mtime);
> +			break;

Why are we breaking after the first object's loaded ELF segment ?

> +		}
> +	}
> +	return 0;
> +}
> +

Adding a comment that explains in human readable text what this function is doing would be useful here.

> +int
> +baddr_statedump(struct lttng_session *session)
> +{
> +	dl_iterate_phdr(_dl_iterate_write_memregion, session);
> +	return 0;
> +}
> diff --git a/liblttng-ust-baddr/ust_baddr_statedump.c
> b/liblttng-ust-baddr/ust_baddr_statedump.c
> new file mode 100644
> index 0000000..75f74ca
> --- /dev/null
> +++ b/liblttng-ust-baddr/ust_baddr_statedump.c
> @@ -0,0 +1,21 @@
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
> USA
> + */
> +
> +#define TRACEPOINT_CREATE_PROBES
> +#define TP_SESSION_CHECK
> +#include "ust_baddr_statedump.h"
> diff --git a/liblttng-ust-baddr/ust_baddr_statedump.h
> b/liblttng-ust-baddr/ust_baddr_statedump.h
> new file mode 100644
> index 0000000..77a9af4
> --- /dev/null
> +++ b/liblttng-ust-baddr/ust_baddr_statedump.h
> @@ -0,0 +1,60 @@
> +#undef TRACEPOINT_PROVIDER
> +#define TRACEPOINT_PROVIDER ust_baddr_statedump
> +
> +#if !defined(_TRACEPOINT_UST_BADDR_STATEDUMP_H) ||
> defined(TRACEPOINT_HEADER_MULTI_READ)
> +#define _TRACEPOINT_UST_BADDR_STATEDUMP_H
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/*
> + * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> copy
> + * of this software and associated documentation files (the "Software"), to
> deal
> + * in the Software without restriction, including without limitation the
> rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included
> in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE
> + * SOFTWARE.
> + */
> +
> +#include <stdint.h>
> +#include <unistd.h>
> +#include <lttng/ust-events.h>
> +
> +#define LTTNG_UST_BADDR_STATEDUMP_PROVIDER
> +#include <lttng/tracepoint.h>
> +
> +TRACEPOINT_EVENT(ust_baddr_statedump, soinfo,
> +	TP_ARGS(struct lttng_session *, session, void *, baddr, const char*,
> sopath, int64_t, size, int64_t, mtime),
> +	TP_FIELDS(
> +		ctf_integer_hex(void *, baddr, baddr)
> +		ctf_string(sopath, sopath)
> +		ctf_integer(int64_t, size, size)
> +		ctf_integer(int64_t, mtime, mtime)
> +	)
> +)
> +
> +#endif /* _TRACEPOINT_UST_BADDR_STATEDUMP_H */
> +
> +#undef TRACEPOINT_INCLUDE
> +#define TRACEPOINT_INCLUDE "./ust_baddr_statedump.h"
> +
> +/* This part must be outside ifdef protection */
> +#include <lttng/tracepoint-event.h>
> +
> +#ifdef __cplusplus
> +}
> +#endif
> diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c
> index 26601a6..814549e 100644
> --- a/liblttng-ust/lttng-events.c
> +++ b/liblttng-ust/lttng-events.c
> @@ -86,6 +86,14 @@ void lttng_session_sync_enablers(struct lttng_session
> *session);
>  static
>  void lttng_enabler_destroy(struct lttng_enabler *enabler);
>  
> +static struct lttng_session *_lttng_session_enabled_transition;
> +struct lttng_session *lttng_session_enabled_transition(void)

Not sure I like the fct vs data naming that only differs from a single underscore. 

Locking is also not documented here.

How about we move this pointer into struct sock_info ? It would therefore be associated with either the "per-user" or "global" sessiond, and therefore we'd have an easier time synchronizing it. There is no actual reason why it should need the ust_lock().

the struct lttng_session "owner" pointer can be casted to a struct sock_info (e.g. lttng_get_notify_socket). You can implement the "getter" function in lttng-ust-comm.c that takes the void *owner as parameter.

Thanks,

Mathieu

> +{
> +	struct lttng_session *ret = _lttng_session_enabled_transition;
> +	_lttng_session_enabled_transition = NULL;
> +	return ret;
> +}
> +
>  /*
>   * Called with ust lock held.
>   */
> @@ -293,6 +301,8 @@ int lttng_session_enable(struct lttng_session *session)
>  	/* Set atomically the state to "active" */
>  	CMM_ACCESS_ONCE(session->active) = 1;
>  	CMM_ACCESS_ONCE(session->been_active) = 1;
> +
> +	_lttng_session_enabled_transition = session;
>  end:
>  	return ret;
>  }
> diff --git a/liblttng-ust/lttng-tracer-core.h
> b/liblttng-ust/lttng-tracer-core.h
> index f643a7e..f77ebaf 100644
> --- a/liblttng-ust/lttng-tracer-core.h
> +++ b/liblttng-ust/lttng-tracer-core.h
> @@ -45,4 +45,6 @@ const char *lttng_ust_obj_get_name(int id);
>  
>  int lttng_get_notify_socket(void *owner);
>  
> +struct lttng_session *lttng_session_enabled_transition(void);
> +
>  #endif /* _LTTNG_TRACER_CORE_H */
> diff --git a/liblttng-ust/lttng-ust-comm.c b/liblttng-ust/lttng-ust-comm.c
> index a6e4ba3..a0f1b42 100644
> --- a/liblttng-ust/lttng-ust-comm.c
> +++ b/liblttng-ust/lttng-ust-comm.c
> @@ -43,6 +43,7 @@
>  #include <lttng/ust.h>
>  #include <lttng/ust-error.h>
>  #include <lttng/ust-ctl.h>
> +#include <lttng/ust-dl.h>
>  #include <urcu/tls-compat.h>
>  #include <ust-comm.h>
>  #include <usterr-signal-safe.h>
> @@ -176,6 +177,7 @@ static const char *cmd_name_mapping[] = {
>  
>  static const char *str_timeout;
>  static int got_timeout_env;
> +static void *ust_baddr_handle;
>  
>  extern void lttng_ring_buffer_client_overwrite_init(void);
>  extern void lttng_ring_buffer_client_overwrite_rt_init(void);
> @@ -235,6 +237,51 @@ void print_cmd(int cmd, int handle)
>  }
>  
>  static
> +void *lttng_ust_baddr_handle(void)
> +{
> +	if (!ust_baddr_handle) {
> +		ust_baddr_handle = lttng_ust_dlopen(
> +			"liblttng-ust-baddr.so.0", RTLD_NOW | RTLD_GLOBAL);
> +		if (ust_baddr_handle == NULL)
> +			ERR("%s", dlerror());
> +	}
> +	return ust_baddr_handle;
> +}
> +
> +static void __attribute__((destructor))
> +lttng_ust_baddr_handle_fini(void);
> +static void
> +lttng_ust_baddr_handle_fini(void)
> +{
> +	if (ust_baddr_handle) {
> +		int ret = lttng_ust_dlclose(ust_baddr_handle);
> +		if (ret)
> +			ERR("%s", dlerror());
> +	}
> +}
> +
> +static
> +int lttng_ust_baddr_statedump(struct lttng_session *session)
> +{
> +	static
> +	int (*lttng_ust_baddr_init_fn)(struct lttng_session *);
> +
> +	if (!lttng_ust_baddr_init_fn) {
> +		void *baddr_handle = lttng_ust_baddr_handle();
> +		if (baddr_handle) {
> +			lttng_ust_baddr_init_fn = dlsym(baddr_handle,
> +				"baddr_statedump");
> +			if (lttng_ust_baddr_init_fn == NULL)
> +				ERR("%s", dlerror());
> +		}
> +		if (!lttng_ust_baddr_init_fn)
> +			return -1;
> +	}
> +
> +	return lttng_ust_baddr_init_fn(session);
> +}
> +
> +static
>  int setup_local_apps(void)
>  {
>  	const char *home_dir;
> @@ -1143,6 +1190,11 @@ restart:
>  			ret = handle_message(sock_info, sock, &lum);
>  			if (ret) {
>  				ERR("Error handling message for %s socket", sock_info->name);
> +			} else {
> +				struct lttng_session *session =
> +					lttng_session_enabled_transition();
> +				if (session)
> +					lttng_ust_baddr_statedump(session);
>  			}
>  			continue;
>  		default:
> --
> 1.8.4.2
> 
> 

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] Base-address tracing for dlopen and dlclose
       [not found]     ` <528382D0.3030202@mentor.com>
@ 2013-11-13 13:51       ` Mathieu Desnoyers
  0 siblings, 0 replies; 11+ messages in thread
From: Mathieu Desnoyers @ 2013-11-13 13:51 UTC (permalink / raw)
  To: Paul Woegerer; +Cc: lttng-dev



----- Original Message -----
> From: "Paul Woegerer" <Paul_Woegerer@mentor.com>
> To: "Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>
> Cc: lttng-dev@lists.lttng.org
> Sent: Wednesday, November 13, 2013 8:46:56 AM
> Subject: Re: [PATCH 1/2] Base-address tracing for dlopen and dlclose
> 
> Hi Mathieu,
> 
> Thanks for the review.
> Comments see below:
> 
> On 11/13/2013 02:25 PM, Mathieu Desnoyers wrote:
> > ----- Original Message -----
> >> Provide an LD_PRELOAD library to allow tracing of calls to dlopen and
> >> dlclose.  Tracing the lttng-ust internal use of dlopen and dlclose is
> >> prevented.
> > Why do we need to prevent tracing lttng-ust internal use of dlopen/dlclose
> > ?
> 
> I assumed this would be beneficial to have (less noise in  the trace
> data). But if you don't like that we can also leave it out. You will see
> lots of
> 
> ust_baddr:push: { cpu_id = X }, { baddr = 0xXXXXXXXX, sopath =
> "/.../liblttng-ust-tracepoint.so.0.0.0", size = A, mtime = B }
> 
> events in the trace though (I attached a sample to demonstrate this).

I try not to hide anything from the users. If the viewer cares about this, they can always filter out when they read the traces.

Moreover, I'd really like not to modify tracepoint.h if possible for instrumentation ABI compatibility reasons.

> 
> >> +void *dlopen(const char *filename, int flag)
> >> +{
> >> +	void *handle = _lttng_ust_dl_libc_dlopen(filename, flag);
> >> +	if (handle) {
> >> +		struct link_map *p = NULL;
> >> +		if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL
> >> +			&& p->l_addr != 0)
> > Maybe add one extra tab above for readability.
> 
> No problem. I can do that.
> 
> Do you want me to resend the patch without lttng_ust_dlopen/close handling ?

Yes, please,

Thanks!

Mathieu

> 
> --
> Paul
> 
> > Same here.
> >
> > Thanks,
> >
> > Mathieu
> >
> >> +			lttng_ust_baddr_pop((void *) p->l_addr);
> >> +	}
> >> +	return _lttng_ust_dl_libc_dlclose(handle);
> >> +}
> >> +
> >> +static void __attribute__((destructor))
> >> +lttng_ust_baddr_handle_fini(void);
> >> +static void
> >> +lttng_ust_baddr_handle_fini(void)
> >> +{
> >> +	if (__lttng_ust_baddr_handle) {
> >> +		int ret = _lttng_ust_dl_libc_dlclose(__lttng_ust_baddr_handle);
> >> +		if (ret)
> >> +			fprintf(stderr, "%s\n", dlerror());
> >> +	}
> >> +}
> >> --
> >> 1.8.4.2
> >>
> >>
> 
> 
> --
> Paul Woegerer, SW Development Engineer
> Sourcery Analyzer <http://go.mentor.com/sourceryanalyzer>
> Mentor Graphics, Embedded Software Division
> 
> 

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH lttng-ust 0/2] Shared object base address tracing
       [not found]   ` <52834DB8.5030004@mentor.com>
  2013-11-13 13:19     ` Mathieu Desnoyers
@ 2013-11-13 18:09     ` Alexandre Montplaisir
  1 sibling, 0 replies; 11+ messages in thread
From: Alexandre Montplaisir @ 2013-11-13 18:09 UTC (permalink / raw)
  To: Woegerer, Paul, mathieu.desnoyers, Matthew Khouzam; +Cc: lttng-dev

On 13-11-13 05:00 AM, Woegerer, Paul wrote:
>> - Why does the "statedump" event seem to give many more libs than the
>> "push" events? Could we be missing some dlopen's? For example, I traced
>> glxgears by preloading liblttng-ust-dl.so: http://pastebin.com/HKVa9a4T
> Since ust_baddr:push/pop is based on LD_PRELOAD'ing dlopen/dlclose it
> can only tell you what shared libraries were opened/closed during the
> time you are actually tracing the application. Whatever is
> dlopen'ed/dlclose'ed before the tracing infrastructure that is part of
> the userspace application (lttng-ust) is becoming fully functional
> therefore cannot be captured as ust_baddr:push/pop events.

Ah true, it's possible for the application to dlopen libraries before
it's even registered to UST. In my glxgears example I was expecting to
see the dlopen of libGL, but I would only get it in the statedump.
Although you do see it in your log, I wonder why too. I'll try to run
some more tests to see how repeatable the behavior is.

>> - As Matthew suggested, we could also hijack dlsym(), and with its
>> parameters we could match a symbol name to an address. This becomes
>> immensely useful when coupled with the ust-cyg-profile instrumentation,
>> so we can get information about about function names directly in the
>> trace! (but ironically, only for the dlopened libraries, and not the
>> main binary). What do you think of this approach?
> IMHO, hijacking dlsym() is not helping. The only thing you would know is
> that somewhere in your code for some reason the address for some symbol
> was requested via dlsym(). This will not help you to get symbol
> resolution for ust-cyg-profile instrumentation.

I was thinking of the case where you cyg-profile the dynamic libraries
also. But yeah, I didn't realize it would only give us the function
names for one call "deep". If the library calls others of its own
functions (which it does most of the time), then we would still need
standard symbol resolution to get the function names for those calls.
And since standard symbol resolution gives us all the information,
dlsym() doesn't bring anything new in that case.

But I think we all agree that it would be much easier for us (and for
the users) if the function name information was directly in the trace ;)


Thanks for your explanations!
Alexandre

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2013-11-13 18:09 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1384183688-19038-1-git-send-email-paul_woegerer@mentor.com>
2013-11-11 15:28 ` [PATCH 1/2] Base-address tracing for dlopen and dlclose Paul Woegerer
2013-11-11 15:28 ` [PATCH 2/2] Implement base-address-state tracing Paul Woegerer
2013-11-12 19:59 ` [PATCH lttng-ust 0/2] Shared object base address tracing Alexandre Montplaisir
     [not found] ` <52828889.6030403@voxpopuli.im>
2013-11-13 10:00   ` Woegerer, Paul
     [not found]   ` <52834DB8.5030004@mentor.com>
2013-11-13 13:19     ` Mathieu Desnoyers
2013-11-13 18:09     ` Alexandre Montplaisir
     [not found] ` <1384183688-19038-2-git-send-email-paul_woegerer@mentor.com>
2013-11-12 20:10   ` [PATCH 1/2] Base-address tracing for dlopen and dlclose Matthew Khouzam
2013-11-13 13:25   ` Mathieu Desnoyers
     [not found]   ` <318817448.66208.1384349143345.JavaMail.zimbra@efficios.com>
2013-11-13 13:46     ` Woegerer, Paul
     [not found]     ` <528382D0.3030202@mentor.com>
2013-11-13 13:51       ` Mathieu Desnoyers
     [not found] ` <1384183688-19038-3-git-send-email-paul_woegerer@mentor.com>
2013-11-13 13:48   ` [PATCH 2/2] Implement base-address-state tracing Mathieu Desnoyers

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.