OK, that is the problem.
in src/util/cgmanager.c, we are calling cgm_dbus_connect() from multiple
threads.
it in turn assigns 'cgroup_manager'.
but this is a global (static) var. So the threads fight over it, and corrupt.
static NihDBusProxy *cgroup_manager = NULL;
bool cgm_running = false;
VIR_LOG_INIT("util.cgmanager");
#define CGMANAGER_DBUS_SOCK "unix:path=/sys/fs/cgroup/cgmanager/sock"
bool cgm_dbus_connect(void)
{
DBusError dbus_error;
DBusConnection *connection;
dbus_error_init(&dbus_error);
connection = dbus_connection_open_private(CGMANAGER_DBUS_SOCK, &dbus_error);
if (!connection) {
dbus_error_free(&dbus_error);
return false;
}
dbus_connection_set_exit_on_disconnect(connection, FALSE);
dbus_error_free(&dbus_error);
cgroup_manager = nih_dbus_proxy_new(NULL, connection,
NULL /* p2p */,
"/org/linuxcontainers/cgmanager", NULL, NULL);
dbus_connection_unref(connection);
if (!cgroup_manager) {
NihError *nerr;
nerr = nih_error_get();
VIR_ERROR("cgmanager: Error opening proxy: %s", nerr->message);
nih_free(nerr);
return false;
}
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1367702
Title:
libvirt-bin terminated unexpectedly
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1367702/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs