Как зафиксировать катастрофический отказ ReText при использовании предварительного просмотра, приводимого в действие WebEngine (Хром) рендерер?

На компьютере с довольно старой 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 не помогает.

0
задан 13 October 2018 в 06:17

1 ответ

Решение состоит в том, чтобы переключиться от 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.

0
ответ дан 27 October 2019 в 08:08

Другие вопросы по тегам:

Похожие вопросы: