Virt-Manager won't start due to problem with libxml2 not importing in python
1
vote
2
answers
1115
views
I have been happily using KVM and virt-manager on Arch Linux for about a year now. This morning, one of my VMs broke (that is another story which I don't think is related), and I decided that it would just be easiest to delete it and virt-install again.
However, after deleting this VM via the virt-manager interface, I was no longer able to start virt-manager:
$ virt-install
Traceback (most recent call last):
File "/usr/share/virt-manager/virt-install", line 15, in
import virtinst
File "/usr/share/virt-manager/virtinst/__init__.py", line 49, in
from virtinst.domain import * # pylint: disable=wildcard-import
File "/usr/share/virt-manager/virtinst/domain/__init__.py", line 5, in
from .blkiotune import DomainBlkiotune
File "/usr/share/virt-manager/virtinst/domain/blkiotune.py", line 8, in
from ..xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 16, in
from .xmlapi import XMLAPI
File "/usr/share/virt-manager/virtinst/xmlapi.py", line 7, in
import libxml2
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 671, in _load_unlocked
File "", line 779, in exec_module
File "", line 911, in get_code
File "", line 580, in _compile_bytecode
EOFError: marshal data too short
It seems that libxml2 is broken in some way:
Python 3.8.3 (default, May 17 2020, 18:15:42)
[GCC 10.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import libxml2
Traceback (most recent call last):
File "", line 1, in
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 671, in _load_unlocked
File "", line 779, in exec_module
File "", line 911, in get_code
File "", line 580, in _compile_bytecode
EOFError: marshal data too short
I have tried updating my system as well as removing and reinstalling the obvious packages, libvirt
, virt-manager
, libxml2
and libvirt-python
, and that has not helped, nor has the somewhat dangerous pacman -Syyu
.
Any ideas about what might be broken here?
I am using the LTS kernel, 5.4. Python version is 3.8. Virt-manager is 2.2.1
Also, if I just start python, I can load all the modules mentioned in the above error without any issue.
I'm close to just doing a clean reinstall, but that is a terrible bother, and I'd like to avoid it if I can just fix some dependencies in Arch
edit:
As suggested in the comment, I tried running strace and here is the output (perhaps if I look at it long enough I will have some insight about which file might be corrupted). File corruption does seem likely as I ran out of disk space on root.
~]$ strace python -c 'import libxml2'
#output was too big to paste in here, so I cut out everything but the last part, which is what seemed most likely to be relevant
###..........many lines deleted....####
###..........many lines deleted....####
###..........many lines deleted....####
getcwd("/home/boss", 1024) = 11
stat("/home/boss", {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0
stat("/home/boss", {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0
stat("/home/boss", {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0
openat(AT_FDCWD, "/home/boss", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
fstat(3, {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0
getdents64(3, /* 41 entries */, 32768) = 1416
getdents64(3, /* 0 entries */, 32768) = 0
close(3) = 0
stat("/usr/lib/python3.8", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat("/usr/lib/python3.8/lib-dynload", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat("/home/boss/.local/lib/python3.8/site-packages", {st_mode=S_IFDIR|0700, st_size=3488, ...}) = 0
stat("/usr/lib/python3.8/site-packages", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat("/usr/lib/python3.8/site-packages/libxml2.py", {st_mode=S_IFREG|0644, st_size=345896, ...}) = 0
stat("/usr/lib/python3.8/site-packages/libxml2.py", {st_mode=S_IFREG|0644, st_size=345896, ...}) = 0
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/__pycache__/libxml2.cpython-38.pyc", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=139264, ...}) = 0
ioctl(3, TCGETS, 0x7fffbe383200) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(3, 0, SEEK_CUR) = 0
lseek(3, 0, SEEK_CUR) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=139264, ...}) = 0
mmap(NULL, 143360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2172e15000
read(3, "U\r\r\n\0\0\0\0\203\224\246^(G\5\0\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 139265) = 139264
read(3, "", 1) = 0
close(3) = 0
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2172dd5000
write(2, "Traceback (most recent call last"..., 35Traceback (most recent call last):
) = 35
write(2, " File \"\", line 1, in ", line 1, in
) = 39
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python38.zip/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, " File \"", line 991, in _find_and_load
) = 68
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python38.zip/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, " File \"", line 975, in _find_and_load_unlocked
) = 77
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python38.zip/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, " File \"", line 671, in _load_unlocked
) = 68
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python38.zip/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, " File \"", line 779, in exec_module
) = 74
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python38.zip/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, " File \"", line 911, in get_code
) = 71
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python38.zip/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, " File \"", line 580, in _compile_bytecode
) = 80
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python38.zip/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "EOFError: marshal data too short"..., 33EOFError: marshal data too short
) = 33
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f21734763e0}, {sa_handler=0x7f21736ca3a2, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f21734763e0}, 8) = 0
munmap(0x7f2172dd5000, 262144) = 0
munmap(0x7f2172e15000, 143360) = 0
sigaltstack(NULL, {ss_sp=0x5610230bc580, ss_flags=0, ss_size=16384}) = 0
sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0
exit_group(1) = ?
+++ exited with 1 +++
edit:
This thread seems promising, but I have no idea where I would check to see if __init__.py
is missing.
Asked by Stonecraft
(869 rep)
May 31, 2020, 01:17 PM
Last activity: Mar 27, 2025, 11:22 AM
Last activity: Mar 27, 2025, 11:22 AM