I'm having the same issue on an upgraded 18.04 -> 20.04. This is bugging me immensely. Ready to help out in any way. I have also confirmed that if I disable apparmor it works. But that is not a solution. Here is an strace showing what it's up to starting at the socket access. $ VIRSH_DEBUG=0 strace virsh list ... access("/var/run/libvirt/virtqemud-sock", F_OK) = -1 ENOENT (No such file or directory) access("/var/run/libvirt/libvirt-sock", F_OK) = 0 socket(AF_UNIX, SOCK_STREAM, 0) = 6 connect(6, {sa_family=AF_UNIX, sun_path="/var/run/libvirt/libvirt-sock"}, 110) = 0 getsockname(6, {sa_family=AF_UNIX}, [128->2]) = 0 futex(0x7f22454da060, FUTEX_WAKE_PRIVATE, 2147483647) = 0 fcntl(6, F_GETFD) = 0 fcntl(6, F_SETFD, FD_CLOEXEC) = 0 fcntl(6, F_GETFL) = 0x2 (flags O_RDWR) fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0 futex(0x7f22454da180, FUTEX_WAKE_PRIVATE, 2147483647) = 0 pipe2([7, 8], O_CLOEXEC) = 0 write(5, "\0", 1) = 1 futex(0x7f22454d9320, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7f22454da078, FUTEX_WAKE_PRIVATE, 2147483647) = 0 futex(0x7f22454da150, FUTEX_WAKE_PRIVATE, 2147483647) = 0 write(5, "\0", 1) = 1 futex(0x7f22454d9320, FUTEX_WAKE_PRIVATE, 1) = 1 rt_sigprocmask(SIG_BLOCK, [PIPE CHLD WINCH], [], 8) = 0 poll([{fd=6, events=POLLOUT}, {fd=7, events=POLLIN}], 2, -1) = 1 ([{fd=6, revents=POLLOUT}]) rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 write(6, "\0\0\0\34 \0\200\206\0\0\0\1\0\0\0B\0\0\0\0\0\0\0\0\0\0\0\0", 28) = 28 rt_sigprocmask(SIG_BLOCK, [PIPE CHLD WINCH], [], 8) = 0 poll([{fd=6, events=POLLIN}, {fd=7, events=POLLIN}], 2, -1) = 1 ([{fd=6, revents=POLLIN|POLLHUP}]) rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 read(6, "", 4) = 0 openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 9 fstat(9, {st_mode=S_IFREG|0644, st_size=2996, ...}) = 0 read(9, "# Locale name alias data base.\n#"..., 4096) = 2996 read(9, "", 4096) = 0 close(9) = 0 openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libvirt.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libvirt.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libvirt.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libvirt.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/charset.alias", O_RDONLY) = -1 ENOENT (No such file or directory) write(5, "\0", 1) = 1 futex(0x7f22454d9320, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x55589445f510, FUTEX_WAKE_PRIVATE, 1) = 1 close(6) = 0 close(8) = 0 close(7) = 0 write(2, "error: ", 7error: ) = 7 write(2, "failed to connect to the hypervi"..., 36failed to connect to the hypervisor ) = 36 write(2, "error: ", 7error: ) = 7 write(2, "End of file while reading data: "..., 51End of file while reading data: Input/output error ) = 51 write(1, "\n", 1 ) = 1 write(5, "\0", 1) = 1 futex(0x7f22454d9320, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7fff571d7ca0, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7f2240d6b9d0, FUTEX_WAIT, 134641, NULL) = 0 exit_group(1) = ? +++ exited with 1 +++