X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ferror.cpp;h=6ca5557f473b3008a3eb1638f3b8a71bc10df474;hp=0ec467bcd7d282323a59ea4c2b275eeaa040f7d2;hb=HEAD;hpb=c922647daed3dd022be11980063b5fb816d8c091 diff --git a/src/common/error.cpp b/src/common/error.cpp index 0ec467bcd..32704548c 100644 --- a/src/common/error.cpp +++ b/src/common/error.cpp @@ -6,30 +6,35 @@ */ #define _LGPL_SOURCE +#include "error.hpp" + +#include +#include +#include +#include + +#include + #include +#include #include #include #include -#include -#include -#include -#include -#include - -#include "error.h" - +namespace { /* * lttng_opt_abort_on_error: unset: -1, disabled: 0, enabled: 1. * Controlled by the LTTNG_ABORT_ON_ERROR environment variable. */ -static int lttng_opt_abort_on_error = -1; +int lttng_opt_abort_on_error = -1; /* TLS variable that contains the time of one single log entry. */ -DEFINE_URCU_TLS(struct log_time, error_log_time); -DEFINE_URCU_TLS(const char *, logger_thread_name); +thread_local struct log_time error_log_time; +} /* namespace */ + +thread_local const char *logger_thread_name; -const char *log_add_time(void) +const char *log_add_time() { int ret; struct tm tm, *res; @@ -49,15 +54,19 @@ const char *log_add_time(void) } /* Format time in the TLS variable. */ - ret = snprintf(URCU_TLS(error_log_time).str, sizeof(URCU_TLS(error_log_time).str), - "%02d:%02d:%02d.%09ld", - tm.tm_hour, tm.tm_min, tm.tm_sec, tp.tv_nsec); + ret = snprintf(error_log_time.str, + sizeof(error_log_time.str), + "%02d:%02d:%02d.%09ld", + tm.tm_hour, + tm.tm_min, + tm.tm_sec, + tp.tv_nsec); if (ret < 0) { goto error; } errno = errsv; - return URCU_TLS(error_log_time).str; + return error_log_time.str; error: /* Return an empty string on error so logging is not affected. */ @@ -70,7 +79,7 @@ void logger_set_thread_name(const char *name, bool set_pthread_name) int ret; LTTNG_ASSERT(name); - URCU_TLS(logger_thread_name) = name; + logger_thread_name = name; if (set_pthread_name) { ret = lttng_thread_setname(name); @@ -84,8 +93,7 @@ void logger_set_thread_name(const char *name, bool set_pthread_name) /* * Human readable error message. */ -static -const char *lttng_error_code_str(lttng_error_code code) +static const char *lttng_error_code_str(lttng_error_code code) { switch (code) { case LTTNG_OK: @@ -107,7 +115,7 @@ const char *lttng_error_code_str(lttng_error_code code) case LTTNG_ERR_FATAL: return "Fatal error of the session daemon"; case LTTNG_ERR_SELECT_SESS: - return "A session MUST be selected"; + return "A session must be selected"; case LTTNG_ERR_EXIST_SESS: return "Session name already exists"; case LTTNG_ERR_NO_EVENT: @@ -153,45 +161,45 @@ const char *lttng_error_code_str(lttng_error_code code) case LTTNG_ERR_KERN_LIST_FAIL: return "Listing kernel events failed"; case LTTNG_ERR_UST_CALIBRATE_FAIL: - return "UST calibration failed"; + return "User space tracer calibration failed"; case LTTNG_ERR_UST_SESS_FAIL: - return "UST create session failed"; + return "User space tracer session creation failed"; case LTTNG_ERR_UST_CHAN_FAIL: - return "UST create channel failed"; + return "User space tracer channel creation failed"; case LTTNG_ERR_UST_CHAN_EXIST: - return "UST channel already exist"; + return "User space tracer channel already exist"; case LTTNG_ERR_UST_CHAN_NOT_FOUND: - return "UST channel not found"; + return "User space tracer channel not found"; case LTTNG_ERR_UST_CHAN_DISABLE_FAIL: - return "Disable UST channel failed"; + return "Disabling user space tracer channel failed"; case LTTNG_ERR_UST_CHAN_ENABLE_FAIL: - return "Enable UST channel failed"; + return "Enabling user space tracer channel failed"; case LTTNG_ERR_UST_ENABLE_FAIL: - return "Enable UST event failed"; + return "Enabling user space event failed"; case LTTNG_ERR_UST_DISABLE_FAIL: - return "Disable UST event failed"; + return "Disabling user space event failed"; case LTTNG_ERR_UST_META_FAIL: return "Opening metadata failed"; case LTTNG_ERR_UST_START_FAIL: - return "Starting UST trace failed"; + return "Starting user space tracer session failed"; case LTTNG_ERR_UST_STOP_FAIL: - return "Stopping UST trace failed"; + return "Stopping user space tracer session trace failed"; case LTTNG_ERR_UST_CONSUMER64_FAIL: - return "64-bit UST consumer start failed"; + return "64-bit user space trace consumer start failed"; case LTTNG_ERR_UST_CONSUMER32_FAIL: - return "32-bit UST consumer start failed"; + return "32-bit user space trace consumer start failed"; case LTTNG_ERR_UST_STREAM_FAIL: - return "UST create stream failed"; + return "User space tracer stream creation failed"; case LTTNG_ERR_UST_LIST_FAIL: - return "Listing UST events failed"; + return "Listing of user space tracer events failed"; case LTTNG_ERR_UST_EVENT_EXIST: - return "UST event already exist"; + return "User space event already exist"; case LTTNG_ERR_UST_EVENT_NOT_FOUND: - return "UST event not found"; + return "User space event not found"; case LTTNG_ERR_UST_CONTEXT_EXIST: - return "UST context already exist"; + return "User space tracing context already exists"; case LTTNG_ERR_UST_CONTEXT_INVAL: - return "UST invalid context"; + return "Invalid user space tracing context"; case LTTNG_ERR_NEED_ROOT_SESSIOND: return "Tracing the kernel requires a root lttng-sessiond daemon, as well as \"tracing\" group membership or root user ID for the lttng client"; case LTTNG_ERR_NO_UST: @@ -241,7 +249,7 @@ const char *lttng_error_code_str(lttng_error_code code) case LTTNG_ERR_NOT_SUPPORTED: return "Operation not supported"; case LTTNG_ERR_UST_EVENT_ENABLED: - return "UST event already enabled"; + return "User space event rule already enabled"; case LTTNG_ERR_SET_URL: return "Error setting URL"; case LTTNG_ERR_URL_EXIST: @@ -445,3 +453,12 @@ void lttng_abort_on_error(void) abort(); } } + +[[noreturn]] void +lttng::logging::details::die_formatting_exception(const char *format, + const std::exception& formatting_exception) +{ + std::cerr << "Error occurred while formatting logging message: msg=`" << format + << "`: " << formatting_exception.what(); + abort(); +}