Fix valgrind crash in LXC & avoid probing unneccessarily

This commit is contained in:
Daniel P. Berrange 2009-01-30 16:51:33 +00:00
parent d8637214a4
commit 05436ab7ff
2 changed files with 20 additions and 3 deletions

View File

@ -1,3 +1,8 @@
Fri Jan 30 16:51:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
* 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 <berrange@redhat.com> Fri Jan 30 16:48:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
* src/storage_conf.c: Fix leak of volume objects when free'ing * src/storage_conf.c: Fix leak of volume objects when free'ing

View File

@ -80,14 +80,14 @@ static virDrvOpenStatus lxcOpen(virConnectPtr conn,
virConnectAuthPtr auth ATTRIBUTE_UNUSED, virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED) int flags ATTRIBUTE_UNUSED)
{ {
if (!lxcProbe())
goto declineConnection;
if (lxc_driver == NULL) if (lxc_driver == NULL)
goto declineConnection; goto declineConnection;
/* Verify uri was specified */ /* Verify uri was specified */
if (conn->uri == NULL) { if (conn->uri == NULL) {
if (!lxcProbe())
goto declineConnection;
conn->uri = xmlParseURI("lxc:///"); conn->uri = xmlParseURI("lxc:///");
if (!conn->uri) { if (!conn->uri) {
virReportOOMError(conn); virReportOOMError(conn);
@ -96,8 +96,11 @@ static virDrvOpenStatus lxcOpen(virConnectPtr conn,
} else if (conn->uri->scheme == NULL || } else if (conn->uri->scheme == NULL ||
STRNEQ(conn->uri->scheme, "lxc")) { STRNEQ(conn->uri->scheme, "lxc")) {
goto declineConnection; goto declineConnection;
} else if (!lxcProbe()) {
goto declineConnection;
} }
conn->privateData = lxc_driver; conn->privateData = lxc_driver;
return VIR_DRV_OPEN_SUCCESS; return VIR_DRV_OPEN_SUCCESS;
@ -1119,6 +1122,15 @@ static int lxcStartup(void)
{ {
uid_t uid = getuid(); uid_t uid = getuid();
unsigned int i; 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 */ /* Check that the user is root */
if (0 != uid) { if (0 != uid) {