На компьютере с довольно старой Nvidia GeForce 9600 GT и Ubuntu 16.04.5 ПОМОЩНИК LTS, использующий Marco (Compton Наборщик GPU), я установил текстовый редактор ReText с действиями ниже:
sudo apt-get install python3-pip
sudo -H pip3 install retext
и стал последним 7.0.4 установленные версии.
Это работает как ожидалось, но если я выбираю (Хром) рендерер EditUse WebEngine для просмотра предпросмотра в реальном времени моего документа Скидки с цены, это показывает абсолютно черное окно и затем отказывает (результат катастрофического отказа не зависит от своего содержания).
Крешлог в терминале:
$ retext demo.md
QApplication: invalid style override passed, ignoring it.
Using configuration file: /home/norbert/.config/ReText project/ReText.conf
QFSFileEngine::open: No file name specified
[1013/141341.612478:WARNING:stack_trace_posix.cc(699)] Failed to open file: /tmp/.glx5hP6o (deleted)
Error: No such file or directory
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Received signal 11 SEGV_MAPERR 0000000001ad
#0 0x7f6cab07052f <unknown>
#1 0x7f6ca9aa1b1d <unknown>
#2 0x7f6cab070a3e <unknown>
#3 0x7f6cbc67d390 <unknown>
#4 0x7f6c5b302321 <unknown>
#5 0x7f6ca9b03c09 <unknown>
#6 0x7f6ca9aeec68 <unknown>
#7 0x7f6cabbac69d <unknown>
#8 0x7f6ca9df26d1 <unknown>
#9 0x7f6ca9df3ec5 <unknown>
#10 0x7f6cac062a67 <unknown>
#11 0x7f6cad87c605 <unknown>
#12 0x7f6cab0d8ee5 <unknown>
#13 0x7f6cab0d4280 <unknown>
#14 0x7f6cbc6736ba start_thread
#15 0x7f6cbc3a941d clone
r8: 0000000000000000 r9: 0000000000000000 r10: 00007f6c122d8e78 r11: 0000000000000000
r12: 00000000000000f5 r13: 000000000000000a r14: 000000000000009a r15: 000000000000000a
di: 0000000001d92264 si: 0000000000000001 bp: 00007f6c64ff8590 bx: 0000000001d8a6d0
dx: 0000000000000019 ax: 0000000001d92250 cx: 0000000000000001 sp: 00007f6c64ff8530
ip: 00007f6c5b302321 efl: 0000000000010202 cgf: 0000000000000033 erf: 0000000000000004
trp: 000000000000000e msk: 0000000000000000 cr2: 00000000000001ad
[end of stack trace]
Calling _exit(1). Core file will not be generated.
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python3.5/multiprocessing/process.py", line 249, in _bootstrap
self.run()
File "/usr/lib/python3.5/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.5/dist-packages/ReText/converterprocess.py", line 62, in _converter_process_func
job = receiveObject(conn_child)
File "/usr/local/lib/python3.5/dist-packages/ReText/converterprocess.py", line 31, in receiveObject
sizeBuf = recvall(sock, 4)
File "/usr/local/lib/python3.5/dist-packages/ReText/converterprocess.py", line 24, in recvall
raise EOFError('Received 0 bytes from socket while more bytes were expected. Did the sender process exit unexpectedly?')
EOFError: Received 0 bytes from socket while more bytes were expected. Did the sender process exit unexpectedly?
другое возможное поведение состоит в том, чтобы иметь черное окно и следующий текст повторения в терминале:
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
Could not link shader program:
""
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
QOpenGLShader: could not create shader
shader compilation failed:
""
QOpenGLShaderProgram::uniformLocation(qt_Matrix): shader program is not linked
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
QOpenGLShader: could not create shader
shader compilation failed:
""
...
Я подозреваю, что OpenGL вызывает проблему. Но swrast
драйвер установлен:
$ dpkg -S swrast
libgl1-mesa-dri:i386: /usr/lib/i386-linux-gnu/dri/kms_swrast_dri.so
libgl1-mesa-dri:amd64: /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libgl1-mesa-dri:i386: /usr/lib/i386-linux-gnu/dri/swrast_dri.so
libgl1-mesa-dri:amd64: /usr/lib/x86_64-linux-gnu/dri/kms_swrast_dri.so
nvidia
драйвер загружается:
lsmod | grep nvidia
nvidia_uvm 36864 0
nvidia 10571776 50 nvidia_uvm
drm 364544 3 nvidia
и имеет 340 версий (последнее наследие поддерживало один для моих 9600 GT):
$ modinfo nvidia_340 | head -n3
filename: /lib/modules/4.4.0-104-generic/updates/dkms/nvidia_340.ko
alias: char-major-195-*
version: 340.104
Вывод glxinfo | egrep -i "vendor|^direct"
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
Информация о ВА также в порядке:
$ vainfo
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.0)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264High : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
Что еще я должен попытаться устранить проблему?
Примечания:
1. это, кажется, проблема с OpenGL <-> Xorg <-> спокойное взаимодействие с Nvidia. Этот предварительный просмотр Хрома обычно работает над ноутбуком с Intel i915 и на рабочем столе с AMD/ATI APU.
2. конечно, версия из официального репозитория (ReText 5.3.1 (использующий PyMarkups 1.0.1)) работает как ожидалось с обоими рендерерами - значение по умолчанию и WebKit.
3. переключение на наборщика программного обеспечения в mate-tweak
не помогает.
Решение состоит в том, чтобы переключиться от OpenGL, предоставленного PyQt5 PyOpenGL.
Таким образом, мы должны установить это использование пакета pip3
:
sudo -H pip3 install PyQt5==5.9.2
sudo -H pip3 install PyOpenGL
Мы должны отредактировать /usr/local/bin/retext
и добавьте здесь одну строку from OpenGL import GL
. Мы можем сделать это программно:
sudo sed -i "s/^from ReText.window import ReTextWindow$/from ReText.window import ReTextWindow\nfrom OpenGL import GL/" /usr/local/bin/retext
Затем ReText должен обычно работать и будет синхронизировать прокрутку редактора и предварительного просмотра.
Также я зарегистрировал ошибку/запрос новых функций разработчику ReText через GitHub.