Bug 35299 - segfault при запуске виртуальной машины, если файл виртуального диска отсутствует
Summary: segfault при запуске виртуальной машины, если файл виртуального диска отсутст...
Status: CLOSED FIXED
Alias: None
Product: Branch p8
Classification: Distributions
Component: libvirt-daemon (show other bugs)
Version: не указана
Hardware: all Linux
: P3 normal
Assignee: Grigory Ustinov
QA Contact: qa-p8@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-08-28 14:42 MSK by Alexey Sheplyakov
Modified: 2018-11-23 19:25 MSK (History)
2 users (show)

See Also:


Attachments
Test VM definition (891 bytes, application/xml)
2018-08-28 14:42 MSK, Alexey Sheplyakov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Sheplyakov 2018-08-28 14:42:49 MSK
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]
Comment 1 Alexey Sheplyakov 2018-08-31 10:41:49 MSK
(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
Comment 2 Alexey Sheplyakov 2018-08-31 10:43:36 MSK
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
Comment 3 Alexey Sheplyakov 2018-08-31 10:46:46 MSK
Эта же проблема в Red Hat bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1522682
Comment 5 Grigory Ustinov 2018-09-01 14:55:49 MSK
Бэкпортировать из сизифа новую версию или просто приложить патч к существующей версии?
Comment 6 Repository Robot 2018-11-23 19:25:11 MSK
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