From: S.Çağlar Onur Date: Fri, 7 Mar 2014 04:27:05 +0000 (-0500) Subject: put shared variables into thread-local storage X-Git-Tag: lxc-1.1.0.alpha1~233 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc5406bbbd6d3a76c367082dcee7941d7cfb0e43;p=thirdparty%2Flxc.git 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 3afbcc4600a as we started to set lxc.loglevel and lxc.logfile with that commit. Signed-off-by: S.Çağlar Onur Signed-off-by: Serge Hallyn --- diff --git a/src/lxc/log.c b/src/lxc/log.c index 2f880e275..1dd1aa800 100644 --- a/src/lxc/log.c +++ b/src/lxc/log.c @@ -41,6 +41,15 @@ #define LXC_LOG_BUFFER_SIZE 512 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_fname = NULL; /* command line values for logfile or logpriority should always override @@ -48,6 +57,7 @@ static char *log_fname = NULL; */ static int lxc_logfile_specified = 0; static int lxc_loglevel_specified = 0; +#endif lxc_log_define(lxc_log, lxc);