LINUX.ORG.RU

qemu-kvm виртуалка наглухо зависает после воспроизведения звука

 , ,


0

1

Если запускать с -soundhw all — зависает сразу же + выбрасывает следующий лог в консоль

audio: Failed to create voice `ac97.pi'
audio: Failed to create voice `ac97.mc'
audio: Failed to create voice `adc'
audio: Failed to create voice `ac97.pi'
audio: Failed to create voice `ac97.mc'

Если запускать с -soundhw hda — запускается, но при попытке проиграть звук, например aplay /dev/urandom виртуалка моментально зависает, наглухо, то есть действительно наглухо, спасает лишь killall -9, только он.

Перед запуском выбрасывает в консоль «audio: Failed to create voice `adc'». После зависания логов никаких.

Хост: gentoo

UPD: Копался в виртуалке, в один момент просто выключил, руками, после выключения заметил в консольке такой выхлоп:

^Cqemu-system-x86_64: terminating on signal 2
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.1/work/alsa-lib-1.1.1/src/pcm/pcm.c:7963:(snd_pcm_recover) underrun occurred

Возможно из за этого оно и зависает. Как лечить?



Последнее исправление: koriczi (всего исправлений: 4)

Попробовал поставить VirtualBox, там всё хорошо.

Попробовал поставить 2.5.1 вместо 2.6.0, по прежнему зависает.

Возможно проблема в USE-флагах? Что убрать/добавить?

[ebuild     U  ] app-emulation/qemu-2.6.0::gentoo [2.5.1::gentoo] 
USE="aio alsa caps curl fdt filecaps gtk gtk2 jpeg ncurses nls opengl pin-upstream-blobs png sdl sdl2 seccomp spice threads uuid vhost-net virgl vnc vte xattr -accessibility -bluetooth -debug -glusterfs -gnutls -infiniband -iscsi -lzo -nfs -numa -pulseaudio -python -rbd -sasl (-selinux) -smartcard -snappy -ssh -static -static-softmmu -static-user -systemtap -tci {-test} -usb -usbredir -vde -virtfs -xen -xfs" 
LINGUAS="-de_DE -fr_FR -hu -it -tr -zh_CN" 
PYTHON_TARGETS="python2_7" 
QEMU_SOFTMMU_TARGETS="x86_64 -aarch64 -alpha -arm -cris -i386 -lm32 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -moxie -or32 -ppc -ppc64 -ppcemb -s390x -sh4 -sh4eb -sparc -sparc64 -tricore -unicore32 -xtensa -xtensaeb" 
QEMU_USER_TARGETS="-aarch64 -alpha -arm -armeb -cris -i386 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -mipsn32 -mipsn32el -or32 -ppc -ppc64 -ppc64abi32 -ppc64le -s390x -sh4 -sh4eb -sparc -sparc32plus -sparc64 -tilegx -unicore32 -x86_64" 0 KiB
koriczi
() автор топика

Смахивает на это, если не считать тот факт, что это проблема четырехлетней давности. Попробуй почистить конфиги альсы и заодно - собери qemu без sdl, подключись через spice и посмотри будет ли звук.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от koriczi

Хотя нет, не всё так просто, звук нормально работает только в линуксе, да и то не всегда, в винде же все равно всё виснет с таким вот логом в консоль

main-loop: WARNING: I/O thread spun for 1000 iterations
Хотя, должен заметить — виснет не намертво, я могу убить qemu простым Ctrl+C, уже хорошо.

Пробовал пересобирать без threads, ничего не изменилось.

koriczi
() автор топика
Ответ на: комментарий от koriczi

А сам spice собран с поддержкой звука? Покажи полную строку запуска виртуалки. Я просто уже давно не запускаю виртуалки вручную, только через libvirt

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

А сам spice собран с поддержкой звука?

А там есть соответствующий юз? Вижу только пульсу(у spice-gtk).

Покажи полную строку запуска виртуалки.

qemu-system-x86_64 -soundhw hda -vga qxl -spice port=5930,disable-ticketing -enable-kvm -cpu host -smp cpus=8 -m 6000 -boot c -hda shindows -net nic,vlan=0,model=virtio -net tap,vlan=0,ifname=tap0,script=no,downscript=no

К слову, spice работает мягко говоря плохо, периодически подвисает + какие-то артефакты, так что это не решение, я virtio в основном юзаю, он работает относительно нормально.

koriczi
() автор топика
Ответ на: комментарий от koriczi

К слову, spice работает мягко говоря плохо, периодически подвисает + какие-то артефакты, так что это не решение, я virtio в основном юзаю, он работает относительно нормально.

virtio и spice - это ортогональные вещи.

У меня опции выглядят так:

-spice port=5904,addr=127.0.0.1,disable-ticketing,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=8,bus=pci.2,addr=0x2

Никаких подвисаний и артефактов.

Еще по поводу звука - если не используешь libvirt - попробуй потыкать в переменную окружения QEMU_AUDIO_DRV.

в винде же все равно всё виснет с таким вот логом в консоль

версия драйверов virtio-win?

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

версия драйверов virtio-win?

Последняя, зашел на их сайт, скачал, поставил. Но дело не в этом, и линекс виснет, только линекс виснет не всегда. Например запустил виртуалку, в ней запустил иксы+dwm, запустил терминал, запустил mpv с музякой, работает, но стоит мне отресайзить терминал/гуй виртуалки — бац, main-loop: WARNING: I/O thread spun for 1000 iterations, зависло. В чём проблема — непонятно.

Попробую переменные.

koriczi
() автор топика
Ответ на: комментарий от koriczi

Последняя, зашел на их сайт, скачал, поставил.

Последняя - это какая? Я тоже в своё время думал что последняя, пока они сайт не сменили.

но стоит мне отресайзить терминал/гуй виртуалки

что используется в качестве терминала/гуя? Как я уже говорил, SDL-вывод qemu - та еще срань. В качестве spice-клиента используется что? spicec, virtviewer, virt-manager?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

В общем добился я звука в spice, вероятно сборкой с gstreamer, виртуалка не зависает. Но я не хочу spice, не люблю его, готов порыться в сорцах, однако компилять qemu отдельно тоже я не хочу, у меня после этого ничего не работает, мне бы просто немного поправить исходники и далее просто скормить их emerge, как это лучше всего сделать?

Also, в spice-gtk можно убрать мешюнку сверху? http://i.imgur.com/6MIX1xr.png

koriczi
() автор топика
Ответ на: комментарий от koriczi

вероятно сборкой с gstreamer

естественно, я думал у тебя с ним собрано, поэтому не уточнял

Но я не хочу spice, не люблю его, готов порыться в сорцах, однако компилять qemu отдельно тоже я не хочу

Ты только что поделил на ноль. Жестоко и страстно. Нужно фиксить бэкенд SDL/SDL2, как это делать без «компиляния qemu отдельно» - хз.

мне бы просто немного поправить исходники и далее просто скормить их emerge, как это лучше всего сделать?

Вот так - https://wiki.gentoo.org/wiki//etc/portage/patches

Also, в spice-gtk можно убрать мешюнку сверху?

Я уже спрашивал: как вызываешь клиент?

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Ты только что поделил на ноль. Жестоко и страстно. Нужно фиксить бэкенд SDL/SDL2, как это делать без «компиляния qemu отдельно» - хз.

Да, так не выйдет, я затупил, сильно, легче попробовать пофиксить spice и убрать чёртову менюшку.

Я уже спрашивал: как вызываешь клиент?

Не понял вопроса.

$ spicy -h 127.0.0.1 -p 5930
Как его ещё можно вызывать?

koriczi
() автор топика
Ответ на: комментарий от koriczi

spicy

Ага, значит используешь spicy. Это я и хотел услышать. Попробую сейчас им подключиться, давно его использовал в тестовых целях, всё больше virt-manager да virt-viewer пользуюсь сейчас.

Pinkbyte ★★★★★
()

BUMP

Как бы я не запускал spice — он работает плохо. Пробовал remote-viewer, тоже самое. В qemu без spice по прежнему нет звука.

koriczi
() автор топика

Даже в чруте! Даже в чруте мне выбило эту проклятую ошибку.

main-loop: WARNING: I/O thread spun for 1000 iterations

В чруте арч, арчевский qemu, что это может означать? Фейл в ядре? Но у меня всё в разделе «Sound card support --->» включено. Куда копать-то?

koriczi
() автор топика
Ответ на: комментарий от koriczi

Собрал genkernel, не хочет работать. Зато я стал слышать первую нотку воспроизводимого звука, на старом ядре не слышал, сразу зависало, а тут целая нотка.

koriczi
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.