Bug 36035

Summary: После обновления на дату 03/02/2019 не стартует xorg в VirtualBox/Windows
Product: Branch p8 Reporter: Sergey Y. Afonin <asy>
Component: virtualbox-guest-additionsAssignee: Evgeny Sinelnikov <sin>
Status: CLOSED FIXED QA Contact: qa-p8 <qa-p8>
Severity: normal    
Priority: P3 CC: aen, cas, lakostis, m, sin
Version: не указана   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Лог загрузки и завершения xorg
none
иксы без GL
none
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch
none
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch
none
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch
none
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch none

Description Sergey Y. Afonin 2019-02-04 09:34:50 MSK
Может и не udev, но, пока, на него повешу.

Если установить в VB (VirtualBox-6.0.4-128413-Win.exe) alt-simply-8.2.0 и обновить на дату 03/02/2019, то xorg перестаёт стартовать. На первой консолли остаётся сообщение

Booting the kernel
starting version 233
mount: /root/run: filesystem mounted, but mount(8) failed: No such file or directory
[   1.44565455] cgroup: cgroup2: unknown option "nsdelegate"

Соседние консоли работают, пререключение по, например, Ctrl+F2 доступно.

Подозрение вызывает вот это место в Xorg.0.log:

[     8.715] (II) No input driver specified, ignoring this device.
[     8.715] (II) This device may have been added with another device file.
[     8.783] (II) event5  - (II) VirtualBox mouse integration: (II) device removed

Далее выгружается libinput и X-ы завершают работу:

[     8.867] (II) Server terminated successfully (0). Closing log file.
Comment 1 Sergey Y. Afonin 2019-02-04 09:35:43 MSK
Created attachment 7987 [details]
Лог загрузки и завершения xorg
Comment 2 Sergey Y. Afonin 2019-02-04 09:37:25 MSK
(In reply to comment #0)

> mount: /root/run: filesystem mounted, but mount(8) failed: No such file or
> directory

Эта вот надпись, кстати, людей пугает: думают, что вообще всё сломалось. Надо бы найти, на кого про неё баг повесить дополнительно.
Comment 3 Sergey Y. Afonin 2019-02-04 10:07:56 MSK
Это по мотивам двух случаев с каналов "Альт Линукс smoke-room" и "Альт Линукс":
https://t.me/alt_linux/38209
https://t.me/alt_linux/38234

Сам не проверял.
Comment 4 Sergey Y. Afonin 2019-02-04 13:07:13 MSK
Вроде как выяснили, что виноват virtualbox-guest-additions:
https://t.me/alt_linux/38303

Удаление пакета помогает.
Comment 5 mikhailnov 2019-02-04 13:10:52 MSK
Образы 8.2 от декабря 2017 года, а в вируталбоксе:

* Mon Oct 15 2018 Evgeny Sinelnikov <sin at altlinux.org> 5.2.18-alt1
- Build latest release of 5.2 release
- Add vboxfs patch from Debian fixed failure with new kernel 4.18
- Disable ubt macros due binary package identity changes
- Obsoletes virtualbox-guest-additions-gl subpackage (closes #35059)
- Add x11presetdrv script for dynamic create ld.so.conf settings for GL libraries

Переопределение libGL.so.1 и libEGL.so.1 ввели в октябре 2018 года.
Comment 6 mikhailnov 2019-02-04 13:55:36 MSK
https://salsa.debian.org/pkg-virtualbox-team/virtualbox/commit/17ee2def5d1b193f63fc378eda32d1bc9ead73cb

https://salsa.debian.org/pkg-virtualbox-team/virtualbox/commit/8b17e8472ee4c6e4d25b4aecef533499c0da1c88
"Do not add GL bindings anymore, breaking userspace applications."

Еще zerg@ говорил, что PCI ID из скрипта /etc/X11/xinit.d/98vboxadd-xclient одинаковый, если в настройках VM включено или отключено "3D-скорение".
Comment 7 Evgeny Sinelnikov 2019-02-06 17:20:40 MSK
Нужно разбираться в деталях.

В моих изменениях были взяты наработки для ветки 5.2:

commit bc70373abe68b678c240c2ddfd918eb9ead10795
Author: Konstantin A. Lepikhov <lakostis@altlinux.ru>
Date:   Sat May 19 20:20:17 2018 +0200

    5.2.12-alt0.3
    
    - fix OGL/EGL guest libs.
    - respect RPM optflags.

commit 8ec4f52fe91dfcb5885a783d494c35ca7910a90f
Author: Konstantin A. Lepikhov <lakostis@altlinux.ru>
Date:   Fri May 18 15:51:23 2018 +0200

    5.2.12-alt0.2
    
    - .spec: sync with debian:
        + VBOX_WITH_REGISTRATION_REQUEST=
        + VBOX_WITH_UPDATE_REQUEST=
        + KBUILD_VERBOSE=2
        + VBOX_WITH_EXTPACK_VBOXDTRACE=
        + use system xorg libs again.
        + remove obsoleted xorg vbox drv.
        + rework OGL/EGL support.

Далее была проблема из-за того, что на хостовой системе перестали работать иксы:
https://bugzilla.altlinux.org/show_bug.cgi?id=35170

И, в итоге, было принято решение сделать автоматическое определение через x11presetdrv:
Add x11presetdrv script for dynamic create ld.so.conf settings for GL libraries

И теперь у меня возникают следующие вопросы:

1. Сейчас, "если установить в VB (VirtualBox-6.0.4-128413-Win.exe) alt-simply-8.2.0 и
обновить на дату 03/02/2019, то xorg перестаёт стартовать".
А если и установить в VirtualBox-5.2.24 всё работает?

2. А если обновить гостевые драйверы до 6.0.4? (как? это отдельный вопрос)

От ответов на эти вопросы зависит то, как эту проблему стоит решать. А также понимание о том, в чём собственно проблема.
Comment 8 mikhailnov 2019-02-06 21:43:36 MSK
Воспроизведение такое получилось:

1. хост - сизиф с virtualbox
2. в ВМ поставил образ http://nightly.altlinux.org/p8/release/alt-p8-lxqt-20181212-x86_64.iso, в нем из коробки virtualbox-guest-additions 5.1.x без скрипта /usr/libexec/X11/drvpre.d/virtualbox
3. в госте apt-get dist-upgrade, ставится virtualbox-guest-additions 5.2.x, появляется скрипт /usr/libexec/X11/drvpre.d/virtualbox
4. перезагружаемся, иксы запускаются, файл /etc/ld.so.conf.d/virtualbox*.conf , созданный скриптом /usr/libexec/X11/drvpre.d/virtualbox, существует
5. выключаем ВМ, идем в Настройки-Дисплей, включаем 3D-ускорение, которое по умолчанию выключено.
6. включаем ВМ, иксы не запускаются
7. выключаем 3D-ускорение, выскакивает сообщение об ошибке, как при не запускающихся иксах (скриншот), но иксы НЕ запускаются, больше они и не запустились, не понятно, почему
Comment 9 mikhailnov 2019-02-06 22:03:46 MSK
Если в настройках ВМ снять галку "3D-ускорение", в текстовом конфиге ВМ остается accelerate3D=true

На счет не запускающихся иксов наврал - иксы запускаются, не запускается DE, требующее OpenGL, т.к. /etc/ld.so.conf.d/virtualbox*.conf продолжает существовать и подменять libGL.so.1 (скриншот).

А он продолжает существовать вот почему:

# cat /usr/libexec/X11/drvpre.d/virtualbox
#!/bin/bash

if test -f /proc/bus/pci/devices && grep -q 80eebeef /proc/bus/pci/devices; then
	mkdir -p /etc/ld.so.conf.d
	echo /usr/lib64/virtualbox/additions > /etc/ld.so.conf.d/virtualbox-x86_64.conf
else
	rm -f /etc/ld.so.conf.d/virtualbox-x86_64.conf
fi

Условие grep -q 80eebeef /proc/bus/pci/devices верное не зависимо от настроек 3D-ускорения, конфиг подмены libGL не удаляется.
Comment 10 mikhailnov 2019-02-06 22:04:08 MSK
Created attachment 7992 [details]
иксы без GL
Comment 11 mikhailnov 2019-02-06 23:55:39 MSK
Created attachment 7993 [details]
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch

Этот патч исправляет проблему. Разбираюсь, как побороть git, чтобы собрать задание.
Comment 12 mikhailnov 2019-02-07 00:12:28 MSK
Created attachment 7994 [details]
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch
Comment 13 mikhailnov 2019-02-07 00:20:40 MSK
Created attachment 7995 [details]
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch

Простите, в третий раз, опечатки были.
Comment 14 Konstantin A Lepikhov (L.A. Kostis) 2019-02-07 01:40:31 MSK
(In reply to comment #13)
> Created an attachment (id=7995) [details]
> 0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch
> 
> Простите, в третий раз, опечатки были.

Я думаю текст в changelog/патче

Propperly check if 3D acceleration is supported

Нужно поменять на

Check first if 3D acceleration is enabled

Чтобы не ускользал смысл этого изменения.
Comment 15 mikhailnov 2019-02-07 11:26:54 MSK
Created attachment 7997 [details]
0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch

В конструкции [ -x "$(which VBoxClient)" ] символ $ не был экранирован, поэтому при сборке получилось [ -x "" ]. Заменил на %_bindir/VBoxClient.

(В ответ на комментарий №14)
> (In reply to comment #13)
> > Created an attachment (id=7995) [details] [details]
> > 0001-Fix-preloading-custom-libGL.so.1-and-libEGL.so.1-ALT.patch
> > 
> > Простите, в третий раз, опечатки были.
> 
> Я думаю текст в changelog/патче
> 
> Propperly check if 3D acceleration is supported
> 
> Нужно поменять на
> 
> Check first if 3D acceleration is enabled
> 
> Чтобы не ускользал смысл этого изменения.

Проверкой было grep -q 80eebeef /proc/bus/pci/devices, стало [ -x %_bindir/VBoxClient ] && VBoxClient --check3d && grep -q 80eebeef /proc/bus/pci/devices, 
оно и раньше проверяло, включено ли 3D-ускорение, но делало это криво.
Comment 16 Konstantin A Lepikhov (L.A. Kostis) 2019-02-07 12:22:06 MSK
(In reply to comment #15)
...
> 
> Проверкой было grep -q 80eebeef /proc/bus/pci/devices, стало [ -x
> %_bindir/VBoxClient ] && VBoxClient --check3d && grep -q 80eebeef
> /proc/bus/pci/devices, 
> оно и раньше проверяло, включено ли 3D-ускорение, но делало это криво.

Раньше просто проверялось, есть ли у нас видеоадаптер от VirtualBox, т.к. наличие pci устройста 80eebeef никак не гарантировало присутствие или отсутствие 3D.
Comment 17 mikhailnov 2019-02-07 18:24:53 MSK
Задание 220931 http://git.altlinux.org/tasks/220931 собрано в сизиф. Скопировал из него скрипт в p8, проверил, "упавшие" системы автоматически чинятся обновлением, новые не падают.

Если считаете нужным, можете опубликовать задание (у меня в любом случае нет прав на публикацию), можете и сами собрать по-своему.

Задание 220932 для p8 не собирается, кажется, bash3 и bash4 по-разному обрабатывают скрипт внутри спека для записи в файл.
Comment 18 Evgeny Sinelnikov 2019-02-08 12:49:19 MSK
(In reply to comment #17)
> Задание 220931 http://git.altlinux.org/tasks/220931 собрано в сизиф. Скопировал
> из него скрипт в p8, проверил, "упавшие" системы автоматически чинятся
> обновлением, новые не падают.
> 
> Если считаете нужным, можете опубликовать задание (у меня в любом случае нет
> прав на публикацию), можете и сами собрать по-своему.
> 
> Задание 220932 для p8 не собирается, кажется, bash3 и bash4 по-разному
> обрабатывают скрипт внутри спека для записи в файл.

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

Или так: пропускаем в сизиф, как есть, потом правим скрипт так, чтобы он работал и в p8, отправляем исправление в сизиф, а следом в p8.
Comment 19 Sergey Y. Afonin 2019-02-12 22:34:50 MSK
(In reply to comment #2)

> > mount: /root/run: filesystem mounted, but mount(8) failed: No such file or
> > directory
> 
> Эта вот надпись, кстати, людей пугает: думают, что вообще всё сломалось. Надо
> бы найти, на кого про неё баг повесить дополнительно.

Оказывается, уже нашли: https://bugzilla.altlinux.org/31465#c48
Comment 20 Repository Robot 2019-02-15 21:56:52 MSK
virtualbox-5.2.26-alt1 -> sisyphus:

Fri Feb 08 2019 Evgeny Sinelnikov <sin@altlinux> 5.2.26-alt1
- Update to latest of 5.2 release

Fri Feb 08 2019 Evgeny Sinelnikov <sin@altlinux> 5.2.24-alt5
- Replace drvpre script from spec to separate file

Thu Feb 07 2019 Mikhail Novosyolov <mikhailnov@altlinux> 5.2.24-alt4
- Propperly check if 3D acceleration is supported before preloading
  VirtualBox's libGL.so.1 and libEGL.so.1 and update ldconfig cache
  after changes to /etc/ld.so.conf.d/*.conf (Closes: 36035)