From 05436ab7ff0877121e0c8e517b201c70737d61af Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 30 Jan 2009 16:51:33 +0000 Subject: [PATCH] Fix valgrind crash in LXC & avoid probing unneccessarily --- ChangeLog | 5 +++++ src/lxc_driver.c | 18 +++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9caba2f43..a6deaf8712 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Jan 30 16:51:22 GMT 2009 Daniel P. Berrange + + * src/lxc_driver.c: Avoid probing for LXC until we know we're + going to try opening the connection. Disable when using valgrind + Fri Jan 30 16:48:22 GMT 2009 Daniel P. Berrange * src/storage_conf.c: Fix leak of volume objects when free'ing diff --git a/src/lxc_driver.c b/src/lxc_driver.c index e14229d2d7..87865053ff 100644 --- a/src/lxc_driver.c +++ b/src/lxc_driver.c @@ -80,14 +80,14 @@ static virDrvOpenStatus lxcOpen(virConnectPtr conn, virConnectAuthPtr auth ATTRIBUTE_UNUSED, int flags ATTRIBUTE_UNUSED) { - if (!lxcProbe()) - goto declineConnection; - if (lxc_driver == NULL) goto declineConnection; /* Verify uri was specified */ if (conn->uri == NULL) { + if (!lxcProbe()) + goto declineConnection; + conn->uri = xmlParseURI("lxc:///"); if (!conn->uri) { virReportOOMError(conn); @@ -96,8 +96,11 @@ static virDrvOpenStatus lxcOpen(virConnectPtr conn, } else if (conn->uri->scheme == NULL || STRNEQ(conn->uri->scheme, "lxc")) { goto declineConnection; + } else if (!lxcProbe()) { + goto declineConnection; } + conn->privateData = lxc_driver; return VIR_DRV_OPEN_SUCCESS; @@ -1119,6 +1122,15 @@ static int lxcStartup(void) { uid_t uid = getuid(); unsigned int i; + char *ld; + + /* Valgrind gets very annoyed when we clone containers, so + * disable LXC when under valgrind + * XXX remove this when valgrind is fixed + */ + ld = getenv("LD_PRELOAD"); + if (ld && strstr(ld, "vgpreload")) + return -1; /* Check that the user is root */ if (0 != uid) { -- GitLab