lttng-tools: bump version to 2.9.0

Drop sha256 hash. The combination of md5 and sha1 hashes is enough.

Remove upstream patches:

 - 0001-Fix-snapshot-del-output-with-name-on-musl.patch
   07f5023712

 - 0002-Fix-strerror_r-behavior-is-glibc-specific.patch
   b6dacfe27a

 - 0003-Set-thread-stack-size-to-ulimit-soft-value.patch
   1a1a34b40a

Release notes:
  https://lists.lttng.org/pipermail/lttng-dev/2016-November/026763.html

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Vicente Olivert Riera 2016-11-30 17:04:42 +00:00 committed by Thomas Petazzoni
parent c72cca94b8
commit 4277fbaec2
5 changed files with 4 additions and 500 deletions

View file

@ -1,32 +0,0 @@
From: mjeanson@efficios.com Michael Jeanson
Date: Wed, 15 Jun 2016 17:18:02 -0400
Subject: [lttng-dev] [PATCH] Fix: snapshot del-output with name on musl
Some implementations of strtol() like the one in musl will
return EINVAL in perror when no valid number was found in
the string.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
[Philippe: grabbed from the mailing list:
https://lists.lttng.org/pipermail/lttng-dev/2016-June/026192.html
and adapted to 2.8.2.]
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
---
src/bin/lttng/commands/snapshot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/bin/lttng/commands/snapshot.c b/src/bin/lttng/commands/snapshot.c
index d948226..00aa5b7 100644
--- a/src/bin/lttng/commands/snapshot.c
+++ b/src/bin/lttng/commands/snapshot.c
@@ -447,7 +447,7 @@ static int cmd_del_output(int argc, const char **argv)
errno = 0;
id = strtol(argv[1], &name, 10);
- if (id == 0 && errno == 0) {
+ if (id == 0 && (errno == 0 || errno == EINVAL)) {
if (lttng_opt_mi) {
ret = mi_del_output(UINT32_MAX, name);
} else {
--
2.7.4

View file

@ -1,30 +0,0 @@
From fc743b22fc26eab9f9dbf48e4505ed2394924bba Mon Sep 17 00:00:00 2001
From: Michael Jeanson <mjeanson@efficios.com>
Date: Mon, 13 Jun 2016 18:44:17 -0400
Subject: [PATCH lttng-tools] Fix: strerror_r behavior is glibc specific
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
[Philippe: grabbed from the mailing list:
https://lists.lttng.org/pipermail/lttng-dev/2016-June/026194.html
]
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
---
src/common/error.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/common/error.h b/src/common/error.h
index 0fbd3a2..e8c811e 100644
--- a/src/common/error.h
+++ b/src/common/error.h
@@ -198,7 +198,7 @@ static inline void __lttng_print_check_abort(enum lttng_error_level type)
#define _PERROR(fmt, args...) _ERRMSG("PERROR", PRINT_ERR, fmt, ## args)
-#if !defined(__linux__) || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !defined(_GNU_SOURCE))
+#if !defined(__GLIBC__) || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !defined(_GNU_SOURCE))
/*
* Version using XSI strerror_r.
--
2.7.4

View file

@ -1,431 +0,0 @@
From 451f4d875537c073a966d6ccfb2fe08a497fbd7b Mon Sep 17 00:00:00 2001
From: Michael Jeanson <mjeanson@efficios.com>
Date: Wed, 15 Jun 2016 11:01:08 -0500
Subject: [PATCH] Set thread stack size to ulimit soft value
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
[Philippe: grabbed from the mailing list:
https://lists.lttng.org/pipermail/lttng-dev/2016-June/026196.html
]
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
---
src/bin/lttng-consumerd/lttng-consumerd.c | 17 ++++++----
src/bin/lttng-relayd/live.c | 10 +++---
src/bin/lttng-relayd/live.h | 2 +-
src/bin/lttng-relayd/main.c | 14 +++++---
src/bin/lttng-sessiond/main.c | 27 +++++++++------
src/common/utils.c | 56 +++++++++++++++++++++++++++++++
src/common/utils.h | 1 +
7 files changed, 99 insertions(+), 28 deletions(-)
diff --git a/src/bin/lttng-consumerd/lttng-consumerd.c b/src/bin/lttng-consumerd/lttng-consumerd.c
index 00660fc..2f1d01c 100644
--- a/src/bin/lttng-consumerd/lttng-consumerd.c
+++ b/src/bin/lttng-consumerd/lttng-consumerd.c
@@ -57,6 +57,8 @@
static pthread_t channel_thread, data_thread, metadata_thread,
sessiond_thread, metadata_timer_thread, health_thread;
+static pthread_attr_t *tattr;
+
/* to count the number of times the user pressed ctrl+c */
static int sigintcount = 0;
@@ -351,6 +353,9 @@ int main(int argc, char **argv)
}
}
+ /* Get stacksize limit */
+ tattr = get_pthread_attr_stacksize();
+
/*
* Starting from here, we can create threads. This needs to be after
* lttng_daemonize due to RCU.
@@ -498,7 +503,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage the client socket */
- ret = pthread_create(&health_thread, NULL,
+ ret = pthread_create(&health_thread, tattr,
thread_manage_health, (void *) NULL);
if (ret) {
errno = ret;
@@ -517,7 +522,7 @@ int main(int argc, char **argv)
cmm_smp_mb(); /* Read ready before following operations */
/* Create thread to manage channels */
- ret = pthread_create(&channel_thread, NULL,
+ ret = pthread_create(&channel_thread, tattr,
consumer_thread_channel_poll,
(void *) ctx);
if (ret) {
@@ -528,7 +533,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage the polling/writing of trace metadata */
- ret = pthread_create(&metadata_thread, NULL,
+ ret = pthread_create(&metadata_thread, tattr,
consumer_thread_metadata_poll,
(void *) ctx);
if (ret) {
@@ -539,7 +544,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage the polling/writing of trace data */
- ret = pthread_create(&data_thread, NULL, consumer_thread_data_poll,
+ ret = pthread_create(&data_thread, tattr, consumer_thread_data_poll,
(void *) ctx);
if (ret) {
errno = ret;
@@ -549,7 +554,7 @@ int main(int argc, char **argv)
}
/* Create the thread to manage the receive of fd */
- ret = pthread_create(&sessiond_thread, NULL,
+ ret = pthread_create(&sessiond_thread, tattr,
consumer_thread_sessiond_poll,
(void *) ctx);
if (ret) {
@@ -563,7 +568,7 @@ int main(int argc, char **argv)
* Create the thread to manage the UST metadata periodic timer and
* live timer.
*/
- ret = pthread_create(&metadata_timer_thread, NULL,
+ ret = pthread_create(&metadata_timer_thread, tattr,
consumer_timer_thread, (void *) ctx);
if (ret) {
errno = ret;
diff --git a/src/bin/lttng-relayd/live.c b/src/bin/lttng-relayd/live.c
index e2096ec..32efab1 100644
--- a/src/bin/lttng-relayd/live.c
+++ b/src/bin/lttng-relayd/live.c
@@ -2147,13 +2147,13 @@ int relayd_live_join(void)
/*
* main
*/
-int relayd_live_create(struct lttng_uri *uri)
+int relayd_live_create(struct lttng_uri *uri, const pthread_attr_t *tattr)
{
int ret = 0, retval = 0;
void *status;
int is_root;
- if (!uri) {
+ if (!uri || !tattr) {
retval = -1;
goto exit_init_data;
}
@@ -2186,7 +2186,7 @@ int relayd_live_create(struct lttng_uri *uri)
}
/* Setup the dispatcher thread */
- ret = pthread_create(&live_dispatcher_thread, NULL,
+ ret = pthread_create(&live_dispatcher_thread, tattr,
thread_dispatcher, (void *) NULL);
if (ret) {
errno = ret;
@@ -2196,7 +2196,7 @@ int relayd_live_create(struct lttng_uri *uri)
}
/* Setup the worker thread */
- ret = pthread_create(&live_worker_thread, NULL,
+ ret = pthread_create(&live_worker_thread, tattr,
thread_worker, NULL);
if (ret) {
errno = ret;
@@ -2206,7 +2206,7 @@ int relayd_live_create(struct lttng_uri *uri)
}
/* Setup the listener thread */
- ret = pthread_create(&live_listener_thread, NULL,
+ ret = pthread_create(&live_listener_thread, tattr,
thread_listener, (void *) NULL);
if (ret) {
errno = ret;
diff --git a/src/bin/lttng-relayd/live.h b/src/bin/lttng-relayd/live.h
index 2b8a3a0..6cd85e9 100644
--- a/src/bin/lttng-relayd/live.h
+++ b/src/bin/lttng-relayd/live.h
@@ -24,7 +24,7 @@
#include "lttng-relayd.h"
-int relayd_live_create(struct lttng_uri *live_uri);
+int relayd_live_create(struct lttng_uri *live_uri, const pthread_attr_t *tattr);
int relayd_live_stop(void);
int relayd_live_join(void);
diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c
index 6ad6566..505e884 100644
--- a/src/bin/lttng-relayd/main.c
+++ b/src/bin/lttng-relayd/main.c
@@ -119,6 +119,8 @@ static pthread_t dispatcher_thread;
static pthread_t worker_thread;
static pthread_t health_thread;
+static pthread_attr_t *tattr;
+
/*
* last_relay_stream_id_lock protects last_relay_stream_id increment
* atomicity on 32-bit architectures.
@@ -2778,6 +2780,8 @@ int main(int argc, char **argv)
}
}
+ /* Get stack size limit */
+ tattr = get_pthread_attr_stacksize();
/* Initialize thread health monitoring */
health_relayd = health_app_create(NR_HEALTH_RELAYD_TYPES);
@@ -2840,7 +2844,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage the client socket */
- ret = pthread_create(&health_thread, NULL,
+ ret = pthread_create(&health_thread, tattr,
thread_manage_health, (void *) NULL);
if (ret) {
errno = ret;
@@ -2850,7 +2854,7 @@ int main(int argc, char **argv)
}
/* Setup the dispatcher thread */
- ret = pthread_create(&dispatcher_thread, NULL,
+ ret = pthread_create(&dispatcher_thread, tattr,
relay_thread_dispatcher, (void *) NULL);
if (ret) {
errno = ret;
@@ -2860,7 +2864,7 @@ int main(int argc, char **argv)
}
/* Setup the worker thread */
- ret = pthread_create(&worker_thread, NULL,
+ ret = pthread_create(&worker_thread, tattr,
relay_thread_worker, NULL);
if (ret) {
errno = ret;
@@ -2870,7 +2874,7 @@ int main(int argc, char **argv)
}
/* Setup the listener thread */
- ret = pthread_create(&listener_thread, NULL,
+ ret = pthread_create(&listener_thread, tattr,
relay_thread_listener, (void *) NULL);
if (ret) {
errno = ret;
@@ -2879,7 +2883,7 @@ int main(int argc, char **argv)
goto exit_listener_thread;
}
- ret = relayd_live_create(live_uri);
+ ret = relayd_live_create(live_uri, tattr);
if (ret) {
ERR("Starting live viewer threads");
retval = -1;
diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c
index c8e4e53..b8f1bde 100644
--- a/src/bin/lttng-sessiond/main.c
+++ b/src/bin/lttng-sessiond/main.c
@@ -212,6 +212,8 @@ static pthread_t ht_cleanup_thread;
static pthread_t agent_reg_thread;
static pthread_t load_session_thread;
+static pthread_attr_t *tattr;
+
/*
* UST registration command queue. This queue is tied with a futex and uses a N
* wakers / 1 waiter implemented and detailed in futex.c/.h
@@ -2402,7 +2404,7 @@ static int spawn_consumer_thread(struct consumer_data *consumer_data)
goto error;
}
- ret = pthread_create(&consumer_data->thread, NULL, thread_manage_consumer,
+ ret = pthread_create(&consumer_data->thread, tattr, thread_manage_consumer,
consumer_data);
if (ret) {
errno = ret;
@@ -5638,6 +5640,9 @@ int main(int argc, char **argv)
goto exit_create_run_as_worker_cleanup;
}
+ /* Get stack size limit */
+ tattr = get_pthread_attr_stacksize();
+
/*
* Starting from here, we can create threads. This needs to be after
* lttng_daemonize due to RCU.
@@ -5672,7 +5677,7 @@ int main(int argc, char **argv)
}
/* Create thread to clean up RCU hash tables */
- ret = pthread_create(&ht_cleanup_thread, NULL,
+ ret = pthread_create(&ht_cleanup_thread, tattr,
thread_ht_cleanup, (void *) NULL);
if (ret) {
errno = ret;
@@ -6044,7 +6049,7 @@ int main(int argc, char **argv)
load_info->path = opt_load_session_path;
/* Create health-check thread */
- ret = pthread_create(&health_thread, NULL,
+ ret = pthread_create(&health_thread, tattr,
thread_manage_health, (void *) NULL);
if (ret) {
errno = ret;
@@ -6054,7 +6059,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage the client socket */
- ret = pthread_create(&client_thread, NULL,
+ ret = pthread_create(&client_thread, tattr,
thread_manage_clients, (void *) NULL);
if (ret) {
errno = ret;
@@ -6064,7 +6069,7 @@ int main(int argc, char **argv)
}
/* Create thread to dispatch registration */
- ret = pthread_create(&dispatch_thread, NULL,
+ ret = pthread_create(&dispatch_thread, tattr,
thread_dispatch_ust_registration, (void *) NULL);
if (ret) {
errno = ret;
@@ -6074,7 +6079,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage application registration. */
- ret = pthread_create(&reg_apps_thread, NULL,
+ ret = pthread_create(&reg_apps_thread, tattr,
thread_registration_apps, (void *) NULL);
if (ret) {
errno = ret;
@@ -6084,7 +6089,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage application socket */
- ret = pthread_create(&apps_thread, NULL,
+ ret = pthread_create(&apps_thread, tattr,
thread_manage_apps, (void *) NULL);
if (ret) {
errno = ret;
@@ -6094,7 +6099,7 @@ int main(int argc, char **argv)
}
/* Create thread to manage application notify socket */
- ret = pthread_create(&apps_notify_thread, NULL,
+ ret = pthread_create(&apps_notify_thread, tattr,
ust_thread_manage_notify, (void *) NULL);
if (ret) {
errno = ret;
@@ -6104,7 +6109,7 @@ int main(int argc, char **argv)
}
/* Create agent registration thread. */
- ret = pthread_create(&agent_reg_thread, NULL,
+ ret = pthread_create(&agent_reg_thread, tattr,
agent_thread_manage_registration, (void *) NULL);
if (ret) {
errno = ret;
@@ -6116,7 +6121,7 @@ int main(int argc, char **argv)
/* Don't start this thread if kernel tracing is not requested nor root */
if (is_root && !opt_no_kernel) {
/* Create kernel thread to manage kernel event */
- ret = pthread_create(&kernel_thread, NULL,
+ ret = pthread_create(&kernel_thread, tattr,
thread_manage_kernel, (void *) NULL);
if (ret) {
errno = ret;
@@ -6127,7 +6132,7 @@ int main(int argc, char **argv)
}
/* Create session loading thread. */
- ret = pthread_create(&load_session_thread, NULL, thread_load_session,
+ ret = pthread_create(&load_session_thread, tattr, thread_load_session,
load_info);
if (ret) {
errno = ret;
diff --git a/src/common/utils.c b/src/common/utils.c
index 1e52ae0..593d6cc 100644
--- a/src/common/utils.c
+++ b/src/common/utils.c
@@ -31,6 +31,8 @@
#include <pwd.h>
#include <sys/file.h>
#include <unistd.h>
+#include <stdbool.h>
+#include <sys/resource.h>
#include <common/common.h>
#include <common/runas.h>
@@ -1383,3 +1385,57 @@ int utils_show_man_page(int section, const char *page_name)
section_string, page_name, NULL);
return ret;
}
+
+static bool pthread_ss_done = false;
+static pthread_attr_t *tattr = NULL;
+static pthread_attr_t tattr_value;
+
+LTTNG_HIDDEN
+pthread_attr_t *get_pthread_attr_stacksize() {
+ int ret = 0;
+ size_t ptstacksize;
+ struct rlimit rlim;
+
+ /* Return cached value */
+ if (pthread_ss_done) {
+ goto end;
+ }
+
+ /* Get stack size limits */
+ ret = getrlimit(RLIMIT_STACK, &rlim);
+ if (ret < 0) {
+ PERROR("getrlimit");
+ goto end;
+ }
+ DBG("Stack size limits: soft %lld, hard %lld bytes",
+ (long long) rlim.rlim_cur,
+ (long long) rlim.rlim_max);
+
+ /* Get default thread stack size */
+ ret = pthread_attr_getstacksize(&tattr_value, &ptstacksize);
+ if (ret < 0) {
+ PERROR("pthread_attr_getstacksize");
+ goto end;
+ }
+ DBG("Default pthread stack size is %zu bytes", ptstacksize);
+
+ /* Check if default thread stack size respects ulimits */
+ if (ptstacksize < rlim.rlim_cur) {
+ DBG("Your libc doesn't honor stack size limits, setting thread stack size to soft limit (%lld bytes)", (long long) rlim.rlim_cur);
+
+ /* Create pthread_attr_t struct with ulimit stack size */
+ ret = pthread_attr_setstacksize(&tattr_value, rlim.rlim_cur);
+ if (ret < 0) {
+ PERROR("pthread_attr_setstacksize");
+ goto end;
+ }
+
+ /* Set pointer */
+ tattr = &tattr_value;
+ }
+
+ /* Enable cached value */
+ pthread_ss_done = true;
+end:
+ return tattr;
+}
diff --git a/src/common/utils.h b/src/common/utils.h
index 7285f5c..568c123 100644
--- a/src/common/utils.h
+++ b/src/common/utils.h
@@ -60,5 +60,6 @@ int utils_create_lock_file(const char *filepath);
int utils_recursive_rmdir(const char *path);
int utils_truncate_stream_file(int fd, off_t length);
int utils_show_man_page(int section, const char *page_name);
+pthread_attr_t *get_pthread_attr_stacksize();
#endif /* _COMMON_UTILS_H */
--
2.7.4

View file

@ -1,6 +1,3 @@
# From http://lttng.org/files/lttng-tools/lttng-tools-2.8.2.tar.bz2.{md5,sha1}
md5 cac8d64111711ae1b632d0dc12fe92c1 lttng-tools-2.8.2.tar.bz2
sha1 870874ba9644691de8e564a1fa1459aa5fef42ba lttng-tools-2.8.2.tar.bz2
# Locally generated
sha256 a07e00e9519dad2577d9330bcaf040ab3dc1b289fbcb8c702c39d520422e7565 lttng-tools-2.8.2.tar.bz2
# From http://lttng.org/files/lttng-tools/lttng-tools-2.9.0.tar.bz2.{md5,sha1}
md5 75b5feb18aa2a136ebf70a14d2a5a6e5 lttng-tools-2.9.0.tar.bz2
sha1 299158fd8614e45ee596d793696feb86cdea34b2 lttng-tools-2.9.0.tar.bz2

View file

@ -4,7 +4,7 @@
#
################################################################################
LTTNG_TOOLS_VERSION = 2.8.2
LTTNG_TOOLS_VERSION = 2.9.0
LTTNG_TOOLS_SITE = http://lttng.org/files/lttng-tools
LTTNG_TOOLS_SOURCE = lttng-tools-$(LTTNG_TOOLS_VERSION).tar.bz2
LTTNG_TOOLS_LICENSE = GPLv2+, LGPLv2.1+ (include/lttng/*, src/lib/lttng-ctl/*)