Created attachment 7720 [details] Test VM definition Действия: 1. Определяем VM, в качестве образа диска указываем путь, которого не существует: $ virsh define crashme.xml 2. Запускаем VM: $ virsh start crashme Ожидания: Ошибка вида "не удалось запустить crashme, т.к. отсутствует файл /var/empty/nonexistent.iso" Реальность: error: Disconnected from qemu:///system due to end of file error: Failed to start domain crashme error: End of file while reading data: Input/output error В dmesg появляется сообщение [1551630.055809] libvirtd[32283]: segfault at 10 ip 00007f5e102d0234 sp 00007f5e1813c800 error 4 in libvirt_driver_storage.so[7f5e102bf000+2f000]
(gdb) bt #0 virStorageFileReportBrokenChain (errcode=2, src=src@entry=0x7fffdc072640, parent=0x7fffdc072640) at storage/storage_source.c:422 #1 0x00007fffe6652bd6 in qemuDomainDetermineDiskChain (driver=driver@entry=0x7fffdc122e60, vm=vm@entry=0x7fffdc037d10, disk=disk@entry=0x7fffdc1159a0, force_probe=force_probe@entry=true, report_broken=report_broken@entry=true) at qemu/qemu_domain.c:6383 #2 0x00007fffe667ac9a in qemuProcessPrepareHostStorage (flags=17, vm=0x7fffdc037d10, driver=0x7fffdc122e60) at qemu/qemu_process.c:5562 #3 qemuProcessPrepareHost (driver=driver@entry=0x7fffdc122e60, vm=vm@entry=0x7fffdc037d10, flags=flags@entry=17) at qemu/qemu_process.c:5668 #4 0x00007fffe6680865 in qemuProcessStart (conn=conn@entry=0x7fffb4000b20, driver=driver@entry=0x7fffdc122e60, vm=vm@entry=0x7fffdc037d10, updatedCPU=updatedCPU@entry=0x0, asyncJob=asyncJob@entry=QEMU_ASYNC_JOB_START, migrateFrom=migrateFrom@entry=0x0, migrateFd=-1, migratePath=0x0, snapshot=0x0, vmop=VIR_NETDEV_VPORT_PROFILE_OP_CREATE, flags=17) at qemu/qemu_process.c:6128 #5 0x00007fffe66e05ff in qemuDomainObjStart (conn=0x7fffb4000b20, driver=driver@entry=0x7fffdc122e60, vm=0x7fffdc037d10, flags=flags@entry=0, asyncJob=QEMU_ASYNC_JOB_START) at qemu/qemu_driver.c:7283 #6 0x00007fffe66e0cf6 in qemuDomainCreateWithFlags (dom=0x7fffc4000990, flags=0) at qemu/qemu_driver.c:7337 #7 0x00007ffff778113f in virDomainCreate (domain=domain@entry=0x7fffc4000990) at libvirt-domain.c:6531 #8 0x000055555559b643 in remoteDispatchDomainCreate (server=0x5555558369a0, msg=0x555555836850, args=<optimized out>, rerr=0x7fffee0c5c00, client=0x55555583fcf0) at remote_dispatch.h:4222 #9 remoteDispatchDomainCreateHelper (server=0x5555558369a0, client=0x55555583fcf0, msg=0x555555836850, rerr=0x7fffee0c5c00, args=<optimized out>, ret=0x7fffc40008e0) at remote_dispatch.h:4198 #10 0x00007ffff77eaaa9 in virNetServerProgramDispatchCall (msg=0x555555836850, client=0x55555583fcf0, server=0x5555558369a0, prog=0x55555583ccd0) at rpc/virnetserverprogram.c:437 #11 virNetServerProgramDispatch (prog=0x55555583ccd0, server=server@entry=0x5555558369a0, client=0x55555583fcf0, msg=0x555555836850) at rpc/virnetserverprogram.c:307 #12 0x00005555555ab248 in virNetServerProcessMsg (msg=<optimized out>, prog=<optimized out>, client=<optimized out>, srv=0x5555558369a0) at rpc/virnetserver.c:148 #13 virNetServerHandleJob (jobOpaque=<optimized out>, opaque=0x5555558369a0) at rpc/virnetserver.c:169 #14 0x00007ffff76d02eb in virThreadPoolWorker (opaque=opaque@entry=0x555555843470) at util/virthreadpool.c:167 #15 0x00007ffff76cf698 in virThreadHelper (data=<optimized out>) at util/virthread.c:206 #16 0x00007ffff66ab414 in start_thread (arg=0x7fffee0c6700) at pthread_create.c:333 #17 0x00007ffff63e93ad in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffee0c6700 (LWP 20275)] virStorageFileReportBrokenChain (errcode=2, src=src@entry=0x7fffdc072640, parent=0x7fffdc072640) at storage/storage_source.c:422 422 unsigned int access_user = src->drv->uid; (gdb) print src->drv $3 = (virStorageDriverDataPtr) 0x0
Эта же проблема в Red Hat bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1522682
patch: https://github.com/libvirt/libvirt/commit/2d07f1f0ebd44b0348daa61afa0de34f3f838c22
Бэкпортировать из сизифа новую версию или просто приложить патч к существующей версии?
libvirt-3.10.0-alt2 -> p8: Mon Nov 19 2018 Grigory Ustinov <grenka@altlinux> 3.10.0-alt2 - Cherry-picked commit 2d07f1f (Closes: #35299). Fri Dec 08 2017 Alexey Shabalin <shaba@altlinux.ru> 3.10.0-alt1 - 3.10.0 Mon Oct 30 2017 Alexey Shabalin <shaba@altlinux.ru> 3.8.0-alt1 - 3.8.0 - fixed CVE-2017-1000256 Mon Sep 04 2017 Alexey Shabalin <shaba@altlinux.ru> 3.7.0-alt1 - 3.7.0 Tue Aug 08 2017 Alexey Shabalin <shaba@altlinux.ru> 3.6.0-alt1 - 3.6.0