Fix: syscall event rule: emission sites not compared in is_equal
[lttng-tools.git] / src / common / error.cpp
index 0ec467bcd7d282323a59ea4c2b275eeaa040f7d2..32704548c655dd379f8eec7970c352472aa4dcbd 100644 (file)
@@ -6,30 +6,35 @@
  */
 
 #define _LGPL_SOURCE
+#include "error.hpp"
+
+#include <common/common.hpp>
+#include <common/compat/errno.hpp>
+#include <common/compat/getenv.hpp>
+#include <common/thread.hpp>
+
+#include <lttng/lttng-error.h>
+
 #include <inttypes.h>
+#include <iostream>
 #include <pthread.h>
 #include <stdlib.h>
 #include <string.h>
 
-#include <common/common.h>
-#include <common/thread.h>
-#include <common/compat/errno.h>
-#include <common/compat/getenv.h>
-#include <lttng/lttng-error.h>
-
-#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();
+}
This page took 0.026088 seconds and 4 git commands to generate.