]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
put shared variables into thread-local storage
authorS.Çağlar Onur <caglar@10ur.org>
Fri, 7 Mar 2014 04:27:05 +0000 (23:27 -0500)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Fri, 7 Mar 2014 04:58:32 +0000 (22:58 -0600)
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 <caglar@10ur.org>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
src/lxc/log.c

index 2f880e2750b03845a54f0dda90e7488fdd078781..1dd1aa800127a12d92cbc1d5e8db0c0d254e3dcf 100644 (file)
 #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);