[lxc-devel] [PATCH] put shared variables into thread-local storage
S.Çağlar Onur
caglar at 10ur.org
Fri Mar 7 04:27:05 UTC 2014
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 at 10ur.org>
---
src/lxc/log.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/lxc/log.c b/src/lxc/log.c
index 2f880e2..1dd1aa8 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);
--
1.8.3.2
More information about the lxc-devel
mailing list