Ошибка графического инструмента Python при импорте - PullRequest
2 голосов
/ 13 января 2020

Я испытываю Segmentation fault при импорте модуля graph-tool в Python. Я провел несколько тестов:

  1. import graph_tool не вызывает никаких проблем.
>>> import graph_tool as gt
>>> gt.__version__
'2.29 (commit d4154c6c, Tue Aug 27 13:21:10 2019 +0000)'
from graph_tool.all import * приводит к Segmentation fault.

После выполнения from graph_tool.draw import graph_draw я получаю ту же ошибку (и стек ошибок), что и с from graph_tool.all import *.

Используя faulthandler я получил следующий вывод:

>>> from graph_tool.all import *
Fatal Python error: Segmentation fault

Current thread 0x00007fcc6e68d740 (most recent call first):
  File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 1043 in create_module
  File "<frozen importlib._bootstrap>", line 583 in module_from_spec
  File "<frozen importlib._bootstrap>", line 670 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 967 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 983 in _find_and_load
  File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1035 in _handle_fromlist
  File "<string>", line 1 in <module>
  File "/opt/anaconda3/lib/python3.7/site-packages/graph_tool/dl_import.py", line 61 in dl_import
  File "/opt/anaconda3/lib/python3.7/site-packages/graph_tool/draw/cairo_draw.py", line 89 in <module>
  File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 728 in exec_module
  File "<frozen importlib._bootstrap>", line 677 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 967 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 983 in _find_and_load
  File "/opt/anaconda3/lib/python3.7/site-packages/graph_tool/draw/__init__.py", line 880 in <module>
  File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 728 in exec_module
  File "<frozen importlib._bootstrap>", line 677 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 967 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 983 in _find_and_load
  File "/opt/anaconda3/lib/python3.7/site-packages/graph_tool/all.py", line 35 in <module>
  File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed
  File "<frozen importlib._bootstrap_external>", line 728 in exec_module
  File "<frozen importlib._bootstrap>", line 677 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 967 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 983 in _find_and_load
  File "<stdin>", line 1 in <module>

ОС:

   Static hostname: XXXXXXXXXXX
         Icon name: computer-vm
           Chassis: vm
        Machine ID: XXXXXXXXXXX
           Boot ID: XXXXXXXXXXX
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1062.4.3.el7.x86_64
      Architecture: x86-64

Python от Anaconda:

(base) -bash-4.2$ python --version
Python 3.7.3
(base) -bash-4.2$ conda --version
conda 4.8.0

One Я заметил, что проблемный импорт c (см. № 2) работает на другом сервере, имеющем следующую конфигурацию:

  • Python 3.7.6
  • graph_tool такая же, как и в случае, который я пытаюсь решить.

Отличительной особенностью является количество ожидающих сигналов в ulimit -a (другие значения, возвращаемые командой, идентичны). Сервер, на котором работает импорт, имеет 256898 ожидающих сигналов, а сервер, на котором возникла проблема, имеет 127882. Я попытался увеличить нижнее значение, но не смог, так как pending signals: cannot modify limit: Operation not permitted.

Обратите внимание, что я отправил то же самое проблема как проблема в graph-tool GitLab repo . Я решил задать вопрос по StackOverflow, потому что аудитория здесь может быть больше, чем в очереди на выпуск репозитория.

...