Commit 6485e01d by S.Çağlar Onur Committed by Stéphane Graber

put shared variables into thread-local storage

This doesn't solve the general design problem of the log.c (eg; some log lines got lost or scattered into multiple files) but at least prevent multithreaded code from crashing. Before this change something like following; sudo src/tests/lxc-test-concurrent -i 10 -j 20 was crashing nearly all the time due to 3afbcc46 as we started to set lxc.loglevel and lxc.logfile with that commit. Signed-off-by: 's avatarS.Çağlar Onur <caglar@10ur.org> Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
parent 88895aba
...@@ -41,6 +41,15 @@ ...@@ -41,6 +41,15 @@
#define LXC_LOG_BUFFER_SIZE 512 #define LXC_LOG_BUFFER_SIZE 512
int lxc_log_fd = -1; int lxc_log_fd = -1;
#ifdef HAVE_TLS
static __thread char log_prefix[LXC_LOG_PREFIX_SIZE] = "lxc";
static __thread char *log_fname = NULL;
/* command line values for logfile or logpriority should always override
* values from the configuration file or defaults
*/
static __thread int lxc_logfile_specified = 0;
static __thread int lxc_loglevel_specified = 0;
#else
static char log_prefix[LXC_LOG_PREFIX_SIZE] = "lxc"; static char log_prefix[LXC_LOG_PREFIX_SIZE] = "lxc";
static char *log_fname = NULL; static char *log_fname = NULL;
/* command line values for logfile or logpriority should always override /* command line values for logfile or logpriority should always override
...@@ -48,6 +57,7 @@ static char *log_fname = NULL; ...@@ -48,6 +57,7 @@ static char *log_fname = NULL;
*/ */
static int lxc_logfile_specified = 0; static int lxc_logfile_specified = 0;
static int lxc_loglevel_specified = 0; static int lxc_loglevel_specified = 0;
#endif
lxc_log_define(lxc_log, lxc); lxc_log_define(lxc_log, lxc);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment