Эта проблема
После запуска определенного проекта в моем CI виртуальный бокс зависает при попытке «отключить» виртуальную машину. vboxmanage список запущенных vms
ничего не показывает, но пс топор | grep VBoxHeadless
показывает, что процесс все еще выполняется, и vboxmanage controlvm <VMName> отключение питания
бросает ошибка: виртуальная машина выключается
. Так будет сидеть бесконечно, пока я вручную не убью процесс.
Детали
я использую исполнитель виртуального бокса на хосте Ubuntu 20.04 для запуска гостевого экземпляра Windows 10 для моего CI. Большую часть времени это работает чудесно, но один из моих проектов на Python зависает в самом конце с журналом, показывающим:
Очистка каталога проекта и файловых переменных
Я включил журнал отладки на gitlab-runner, и он показывает:
Выполнение VBoxManageOutput: []string{"controlvm", "GLR-runner-XXXXXXXX-concurrent-0", "poweroff"}
VBox.log показывает:
************** Конец гостевого состояния при выключении питания ****************
Однако я вижу, что процесс VBoxHeadless все еще работает:
$ пс топор | grep VBoxHeadless
324182 ? SLl 5:00 /usr/lib/virtualbox/VBoxHeadless --comment GLR-runner-R2WzVtfH-concurrent-0 --startvm 1a585225-00c3-4099-903c-a82f67f0a404 --vrde config
Ни один из журналов не покажет ничего другого, пока я вручную не завершу процесс, после чего gitlab-runner продолжит работу, как и ожидалось.
Вещи, которые я пробовал
- Я обновился с VirtualBox 6.1.22 до 6.1.32. Без изменений.
- Я удалил тестовый шаг (tox) в своем файле CI, и виртуальная машина корректно завершает работу, но, поскольку целью CI является проверка моего кода, это не является жизнеспособным решением.
- Это заставило меня заподозрить, что тесты порождали процессы, которые нельзя было убить, но дальнейшее расследование показало, что команда «poweroff» не выполняет мягкое завершение работы и больше похожа на использование кнопки питания на физической машине.
- Пер этот билет Пробовал отключать 3D ускорение. Неудачно.
- Пер этот билет Я включил вложенный пейджинг, но безрезультатно.
- Я удалил все пакеты расширений. Ничего не изменилось.
- Я экспортировал, удалил и повторно импортировал базовую виртуальную машину. Та же проблема.
- Я воссоздал виртуальную машину с нуля. Та же проблема.
Есть ли что-то, что мне не хватает?