[libvirt] 5.6.0 regression: "Some activation file descriptors are unclaimed"

Daniel P. Berrangé berrange at redhat.com
Tue Aug 20 13:57:09 UTC 2019


On Mon, Aug 19, 2019 at 12:35:15PM +0000, Allen, John wrote:
> On Mon, Aug 19, 2019 at 01:30:06PM +0100, Daniel P. Berrangé wrote:
> > On Mon, Aug 19, 2019 at 12:15:48PM +0000, Allen, John wrote:
> > > On Mon, Aug 19, 2019 at 12:24:43PM +0100, Daniel P. Berrangé wrote:
> > > > On Wed, Aug 14, 2019 at 01:30:26PM +0000, Allen, John wrote:
> > > > > After upgrading to v5.6.0, starting libvirtd fails with the following message
> > > > > in journalctl -xe:
> > > > > 
> > > > > libvirtd[186338]: internal error: Some activation file descriptors are unclaimed
> > > > > 
> > > > > 5b8569dd6e284b9159c701e8bffafb196983fc4a introduces the message. The commit
> > > > > message indicates that systemd version 227 is required, but my system seems to
> > > > > be running version 237.
> > > > > 
> > > > > Is this a known issue? Is there any other configuration for systemd needed to
> > > > > avoid the problem?
> > > > 
> > > > Can you tell me what operating system you are seeing this on ?
> > > 
> > > This is on Ubuntu 18.04.2
> > > 
> > > > 
> > > > Also, can you confirm that you're using the stock unit files that libvirt
> > > > distributes, with no local customizations ?
> > > 
> > > As far as I'm aware there are no modifications to the unit file. I produced
> > > the problem by just pulling libvirt 5.6.0 and running:
> > > 
> > > 	./autogen.sh --system
> > > 	make
> > > 	make install
> > > 	service libvirtd start
> > 
> > Ok, I'll try to reproduce myself.
> > 
> > One other question - did you have the official Ubuntu libvirt packages
> > installed at the time you did "make install", or did you uninstall them
> > first ?
> 
> Initially, I had installed over the ubuntu libvirt packages. However, I
> suspected that something may have "lingered" from the distro packages causing
> the issue, but I was able to produce the issue on a fresh install with no
> ubuntu libvirt packages installed as well.

I think I understand what's happening now.

Libvirt creates the libvirtd.socket unit file using a path of

  /var/run/libvirt/libvirt-sock

But /var/run is a symlink to /run, and IIUC, systemd will (helpfully?)
change the socket path we specify to be /run/libvirt/libvirt-sock

When libvirtd receives the activation FDs it calls getsockname() to
find out the path associated with the socket and so sees
/run/libvirt/libvirt-sock, but libvirt was expecting to instead
see the path it had requested /var/run/libvirt/libvirt-sock

If this theory is correct, then you should be able to workaround the
problem by editting /etc/libvirt/libvirtd.conf and setting

  unix_sock_dir = "/run/libvirt"

Can you confirm it that works for you ?

I'll assume it will, and thus work on a real long term fix for the it.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list