[Bug 1927519] Re: Mitigate libvirt: error : unable to set AppArmor profile 'libvirt-<vm-uuid>' for '/usr/bin/kvm-spice': No such file or directory
Christian Ehrhardt
1927519 at bugs.launchpad.net
Tue Nov 23 11:28:21 UTC 2021
Upgrades to proposed
root at b:~# apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libparted2 libvirt-clients libvirt-daemon libvirt-daemon-driver-storage-rbd libvirt-daemon-system libvirt0 libx11-6 libx11-data login parted passwd python3-software-properties
python3-update-manager software-properties-common uidmap update-manager-core
16 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 6239 kB of archives.
After this operation, 17.4 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 login amd64 1:4.5-1ubuntu2.1 [307 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libvirt-daemon-driver-storage-rbd amd64 4.0.0-1ubuntu8.20 [15.4 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 parted amd64 3.2-20ubuntu0.3 [42.5 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libparted2 amd64 3.2-20ubuntu0.3 [123 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libvirt-daemon-system amd64 4.0.0-1ubuntu8.20 [81.0 kB]
Get:6 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libvirt-daemon amd64 4.0.0-1ubuntu8.20 [2177 kB]
Get:7 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libvirt-clients amd64 4.0.0-1ubuntu8.20 [596 kB]
Get:8 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libvirt0 amd64 4.0.0-1ubuntu8.20 [1249 kB]
Get:9 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 passwd amd64 1:4.5-1ubuntu2.1 [819 kB]
Get:10 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libx11-data all 2:1.6.4-3ubuntu0.5 [114 kB]
Get:11 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libx11-6 amd64 2:1.6.4-3ubuntu0.5 [573 kB]
Get:12 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 python3-update-manager all 1:18.04.11.14 [35.0 kB]
Get:13 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 update-manager-core all 1:18.04.11.14 [8496 B]
Get:14 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 software-properties-common all 0.96.24.32.18 [10.1 kB]
Get:15 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-software-properties all 0.96.24.32.18 [23.8 kB]
Get:16 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 uidmap amd64 1:4.5-1ubuntu2.1 [65.6 kB]
Fetched 6239 kB in 1s (7160 kB/s)
Preconfiguring packages ...
(Reading database ... 33218 files and directories currently installed.)
Preparing to unpack .../login_1%3a4.5-1ubuntu2.1_amd64.deb ...
Unpacking login (1:4.5-1ubuntu2.1) over (1:4.5-1ubuntu2) ...
Setting up login (1:4.5-1ubuntu2.1) ...
(Reading database ... 33218 files and directories currently installed.)
Preparing to unpack .../0-libvirt-daemon-driver-storage-rbd_4.0.0-1ubuntu8.20_amd64.deb ...
Unpacking libvirt-daemon-driver-storage-rbd (4.0.0-1ubuntu8.20) over (4.0.0-1ubuntu8.20~bionicppa4) ...
Preparing to unpack .../1-parted_3.2-20ubuntu0.3_amd64.deb ...
Unpacking parted (3.2-20ubuntu0.3) over (3.2-20ubuntu0.2) ...
Preparing to unpack .../2-libparted2_3.2-20ubuntu0.3_amd64.deb ...
Unpacking libparted2:amd64 (3.2-20ubuntu0.3) over (3.2-20ubuntu0.2) ...
Preparing to unpack .../3-libvirt-daemon-system_4.0.0-1ubuntu8.20_amd64.deb ...
Unpacking libvirt-daemon-system (4.0.0-1ubuntu8.20) over (4.0.0-1ubuntu8.20~bionicppa4) ...
Preparing to unpack .../4-libvirt-daemon_4.0.0-1ubuntu8.20_amd64.deb ...
Unpacking libvirt-daemon (4.0.0-1ubuntu8.20) over (4.0.0-1ubuntu8.20~bionicppa4) ...
Preparing to unpack .../5-libvirt-clients_4.0.0-1ubuntu8.20_amd64.deb ...
Unpacking libvirt-clients (4.0.0-1ubuntu8.20) over (4.0.0-1ubuntu8.20~bionicppa4) ...
Preparing to unpack .../6-libvirt0_4.0.0-1ubuntu8.20_amd64.deb ...
Unpacking libvirt0:amd64 (4.0.0-1ubuntu8.20) over (4.0.0-1ubuntu8.20~bionicppa4) ...
Preparing to unpack .../7-passwd_1%3a4.5-1ubuntu2.1_amd64.deb ...
Unpacking passwd (1:4.5-1ubuntu2.1) over (1:4.5-1ubuntu2) ...
Setting up passwd (1:4.5-1ubuntu2.1) ...
(Reading database ... 33218 files and directories currently installed.)
Preparing to unpack .../0-libx11-data_2%3a1.6.4-3ubuntu0.5_all.deb ...
Unpacking libx11-data (2:1.6.4-3ubuntu0.5) over (2:1.6.4-3ubuntu0.4) ...
Preparing to unpack .../1-libx11-6_2%3a1.6.4-3ubuntu0.5_amd64.deb ...
Unpacking libx11-6:amd64 (2:1.6.4-3ubuntu0.5) over (2:1.6.4-3ubuntu0.4) ...
Preparing to unpack .../2-python3-update-manager_1%3a18.04.11.14_all.deb ...
Unpacking python3-update-manager (1:18.04.11.14) over (1:18.04.11.13) ...
Preparing to unpack .../3-update-manager-core_1%3a18.04.11.14_all.deb ...
Unpacking update-manager-core (1:18.04.11.14) over (1:18.04.11.13) ...
Preparing to unpack .../4-software-properties-common_0.96.24.32.18_all.deb ...
Unpacking software-properties-common (0.96.24.32.18) over (0.96.24.32.14) ...
Preparing to unpack .../5-python3-software-properties_0.96.24.32.18_all.deb ...
Unpacking python3-software-properties (0.96.24.32.18) over (0.96.24.32.14) ...
Preparing to unpack .../6-uidmap_1%3a4.5-1ubuntu2.1_amd64.deb ...
Unpacking uidmap (1:4.5-1ubuntu2.1) over (1:4.5-1ubuntu2) ...
Setting up libparted2:amd64 (3.2-20ubuntu0.3) ...
Setting up libvirt0:amd64 (4.0.0-1ubuntu8.20) ...
Setting up python3-update-manager (1:18.04.11.14) ...
Setting up parted (3.2-20ubuntu0.3) ...
Setting up uidmap (1:4.5-1ubuntu2.1) ...
Setting up libvirt-daemon (4.0.0-1ubuntu8.20) ...
Setting up python3-software-properties (0.96.24.32.18) ...
Setting up libvirt-clients (4.0.0-1ubuntu8.20) ...
Setting up libx11-data (2:1.6.4-3ubuntu0.5) ...
Setting up software-properties-common (0.96.24.32.18) ...
Setting up update-manager-core (1:18.04.11.14) ...
Setting up libvirt-daemon-system (4.0.0-1ubuntu8.20) ...
virtlockd.service is a disabled or a static unit, not starting it.
Setting up libvirt-daemon dnsmasq configuration.
Setting up libvirt-daemon-driver-storage-rbd (4.0.0-1ubuntu8.20) ...
Setting up libx11-6:amd64 (2:1.6.4-3ubuntu0.5) ...
Processing triggers for systemd (237-3ubuntu10.52) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for dbus (1.12.2-1ubuntu1.2) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for libc-bin (2.27-3ubuntu1.4) ...
--
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to Ubuntu Cloud Archive.
https://bugs.launchpad.net/bugs/1927519
Title:
Mitigate libvirt: error : unable to set AppArmor profile 'libvirt-<vm-
uuid>' for '/usr/bin/kvm-spice': No such file or directory
Status in Ubuntu Cloud Archive:
New
Status in Ubuntu Cloud Archive queens series:
New
Status in Ubuntu Cloud Archive stein series:
New
Status in Ubuntu Cloud Archive ussuri series:
New
Status in libvirt package in Ubuntu:
Fix Committed
Status in libvirt source package in Bionic:
Fix Committed
Status in libvirt source package in Focal:
Fix Committed
Status in libvirt source package in Hirsute:
Fix Committed
Status in libvirt source package in Impish:
Fix Committed
Status in libvirt source package in Jammy:
Fix Committed
Bug description:
[Impact]
Some times libvirt fails to start a vm with the following error :
libvirt: error : unable to set AppArmor profile 'libvirt-b05b297f-952f-42d6-b04e-f9a13767db54' for '/usr/bin/kvm-spice': No such file or directory
This happens because for some reason the apparmor profile for the
guest /etc/apparmor.d/libvirt/libvirt-<vm-uuid> has 0 size.
We do not now why the above file gets truncated to begin with and
therefore we do not know the root cause to fix it there. But the
condition is easy to detect and 100% broken, so we can detect and
recreate the file in those cases.
[Test case]
To reproduce this behaviour, create a vm and stop it, note the uuid.
For example:
$ uvt-simplestreams-libvirt --verbose sync --source http://cloud-images.ubuntu.com/daily arch=amd64 label=daily release=focal
$ uvt-kvm create --password=ubuntu f release=focal arch=amd64 label=daily
$ virsh dominfo f
...
Security label: libvirt-1ceac8db-c1e9-40b2-8ada-a60349454fc1 (enforcing)
$ virsh shutdown f
Then make the start apparmor profile an empty file.
On Bionic/Focal that file will be non-existant by default (cleaned on guest stop), on Hirsute/Impish it will be around for admin-edit but with content. Therefore "touch" isn't enough every time, instead really put nothing to it as that is how the real issue looks like).
$ cat /dev/null | sudo tee /etc/apparmor.d/libvirt/libvirt-1ceac8db-c1e9-40b2-8ada-a60349454fc1
# ensure it is size zero
$ ll /etc/apparmor.d/libvirt/libvirt-1ceac8db-c1e9-40b2-8ada-a60349454fc1
-rw-r--r-- 1 root root 0 Nov 18 09:01 /etc/apparmor.d/libvirt/libvirt-1ceac8db-c1e9-40b2-8ada-a60349454fc1
Next try to start the vm, it will try to use the file it found
(instead of creating a new one as it would when non-existing) and will
fail doing so:
$ virsh start f
error: internal error: Process exited prior to exec: libvirt: error : unable to set AppArmor profile 'libvirt-1ceac8db-c1e9-40b2-8ada-a60349454fc1' for '/usr/bin/qemu-system-x86_64': No such file or directory
To manually be able to start the vm again just delete the libvirt-<vm-uuid> file.
With the fix applied libvirt will recreate the file and guest start works again.
In addition (independent to the case) I'll run a set of common regression tests against <release>-proposed which didn't run for a while and would make us also spot if anything other slipped in from different places (like the dwarves hiccup we had). Since testing shall be on "the real build" and resources are limited I'd this time do so only on the builds in proposed.
[Regression Potential]
The new code is only active when the size of the file is zero which is
a 100% guarantee that the guest is broken and won't start.
Nevertheless if we made a mistake in the fix the area (of the many
things libvirt does) to look at is the generating and usage of
apparmor profiles.
[Other]
Similar reported bug : https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=890084
To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/1927519/+subscriptions
More information about the Ubuntu-openstack-bugs
mailing list