X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ust%2Flttng-ust-comm.c;h=2f96167e419601bf48e75c3ccc87f4b65a606ffa;hb=fca97dfd73a96bbf964c39e7f3a21fe70cccee96;hp=15cb555028d979ff656ddbcf9e3c66e98f190c10;hpb=6339062a5bbe886493d0691d13e28e37a7206362;p=lttng-ust.git diff --git a/src/lib/lttng-ust/lttng-ust-comm.c b/src/lib/lttng-ust/lttng-ust-comm.c index 15cb5550..2f96167e 100644 --- a/src/lib/lttng-ust/lttng-ust-comm.c +++ b/src/lib/lttng-ust/lttng-ust-comm.c @@ -25,7 +25,6 @@ #include #include #include -#include "futex.h" #include #include @@ -38,21 +37,23 @@ #include #include #include +#include #include +#include "common/compat/futex.h" #include "common/ustcomm.h" #include "common/ust-fd.h" #include "common/logging.h" #include "common/macros.h" -#include "tracepoint-internal.h" +#include "common/tracepoint.h" #include "lttng-tracer-core.h" #include "common/compat/pthread.h" #include "common/procname.h" #include "common/ringbuffer/rb-init.h" #include "lttng-ust-statedump.h" #include "clock.h" -#include "common/ringbuffer/getcpu.h" -#include "getenv.h" -#include "ust-events-internal.h" +#include "lib/lttng-ust/getcpu.h" +#include "common/getenv.h" +#include "lib/lttng-ust/events.h" #include "context-internal.h" #include "common/align.h" #include "lttng-counter-client.h" @@ -1727,7 +1728,7 @@ void wait_for_sessiond(struct sock_info *sock_info) "Please upgrade your kernel " "(fix is commit 9ea71503a8ed9184d2d0b8ccc4d269d05f7940ae in Linux kernel " "mainline). LTTng-UST will use polling mode fallback."); - if (ust_err_debug_enabled()) + if (lttng_ust_logging_debug_enabled()) PERROR("futex"); goto end_wait; } @@ -2061,7 +2062,7 @@ quit: * Weak symbol to call when the ust malloc wrapper is not loaded. */ __attribute__((weak)) -void lttng_ust_libc_wrapper_malloc_init(void) +void lttng_ust_libc_wrapper_malloc_ctor(void) { } @@ -2070,10 +2071,10 @@ void lttng_ust_libc_wrapper_malloc_init(void) * sessiond by polling the application common named pipe. */ static -void lttng_ust_init(void) +void lttng_ust_ctor(void) __attribute__((constructor)); static -void lttng_ust_init(void) +void lttng_ust_ctor(void) { struct timespec constructor_timeout; sigset_t sig_all_blocked, orig_parent_mask; @@ -2120,12 +2121,23 @@ void lttng_ust_init(void) * sessiond (otherwise leading to errors when trying to create * sessiond before the init functions are completed). */ - ust_err_init(); - lttng_ust_getenv_init(); /* Needs ust_err_init() to be completed. */ + + /* + * Both the logging and getenv lazy-initialization uses getenv() + * internally and thus needs to be explicitly initialized in + * liblttng-ust before we start any threads as an unsuspecting normally + * single threaded application using liblttng-ust could be using + * setenv() which is not thread-safe. + */ + lttng_ust_logging_init(); + lttng_ust_getenv_init(); + + /* Call the liblttng-ust-common constructor. */ + lttng_ust_common_ctor(); + lttng_ust_tp_init(); - lttng_ust_init_fd_tracker(); lttng_ust_clock_init(); - lttng_ust_getcpu_init(); + lttng_ust_getcpu_plugin_init(); lttng_ust_statedump_init(); lttng_ust_ring_buffer_clients_init(); lttng_ust_counter_clients_init(); @@ -2133,7 +2145,7 @@ void lttng_ust_init(void) /* * Invoke ust malloc wrapper init before starting other threads. */ - lttng_ust_libc_wrapper_malloc_init(); + lttng_ust_libc_wrapper_malloc_ctor(); timeout_mode = get_constructor_timeout(&constructor_timeout); @@ -2436,7 +2448,7 @@ void lttng_ust_after_fork_parent(sigset_t *restore_sigset) * After fork, in the child, we need to cleanup all the leftover state, * except the worker thread which already magically disappeared thanks * to the weird Linux fork semantics. After tyding up, we call - * lttng_ust_init() again to start over as a new PID. + * lttng_ust_ctor() again to start over as a new PID. * * This is meant for forks() that have tracing in the child between the * fork and following exec call (if there is any). @@ -2457,7 +2469,7 @@ void lttng_ust_after_fork_child(sigset_t *restore_sigset) lttng_ust_cleanup(0); /* Release mutexes and reenable signals */ ust_after_fork_common(restore_sigset); - lttng_ust_init(); + lttng_ust_ctor(); } void lttng_ust_after_setns(void)