Рейтинг:0

Gitlab-runner, использующий виртуальную машину Virtualbox, застрял в состоянии «выключено»

флаг ph

Эта проблема

После запуска определенного проекта в моем 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 продолжит работу, как и ожидалось.

Вещи, которые я пробовал

  1. Я обновился с VirtualBox 6.1.22 до 6.1.32. Без изменений.
  2. Я удалил тестовый шаг (tox) в своем файле CI, и виртуальная машина корректно завершает работу, но, поскольку целью CI является проверка моего кода, это не является жизнеспособным решением.
    • Это заставило меня заподозрить, что тесты порождали процессы, которые нельзя было убить, но дальнейшее расследование показало, что команда «poweroff» не выполняет мягкое завершение работы и больше похожа на использование кнопки питания на физической машине.
  3. Пер этот билет Пробовал отключать 3D ускорение. Неудачно.
  4. Пер этот билет Я включил вложенный пейджинг, но безрезультатно.
  5. Я удалил все пакеты расширений. Ничего не изменилось.
  6. Я экспортировал, удалил и повторно импортировал базовую виртуальную машину. Та же проблема.
  7. Я воссоздал виртуальную машину с нуля. Та же проблема.

Есть ли что-то, что мне не хватает?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.