Используя Python 3.13, я получаю ошибку сегментации с кодом, который раньше (с использованием Python 3.10, tensorflow-cpu 2.12, PyOpenGl 3.1.0 и pygame 2.5.0) работал нормально.
Теперь происходит сбой сегментации в том месте, где OpenGL фактически выполняет некоторую работу (при вызове glCallList), что это я думаю первая часть, где мы собственно и выполняем работу). Трассировка стека, предоставленная gdb, показывает:
#0 0x00007701f41d08e1 in llvm::raw_svector_ostream::write_impl(char const*, unsigned long) ()
from /usr/local/lib/python3.13/site-packages/tensorflow/python/platform/../../libtensorflow_framework.so.2
#1 0x00007701b9ed80f3 in llvm::raw_ostream::write(char const*, unsigned long) ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#2 0x00007701b9ea7f08 in llvm::Twine::printOneChild(llvm::raw_ostream&, llvm::Twine::Child, llvm::Twine::NodeKind) const () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#3 0x00007701b9ea7c27 in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#4 0x00007701b9ea7a75 in llvm::Twine::str[abi:cxx11]() const ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#5 0x00007701bcae6818 in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#6 0x00007701ba218c2a in llvm::LLVMTargetMachine::initAsmInfo() ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#7 0x00007701bca9471f in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#8 0x00007701bca962a2 in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#9 0x00007701bb95c156 in llvm::EngineBuilder::selectTarget(llvm::Triple const&, llvm::StringRef, llvm::StringRef, llvm::SmallVectorImpl const&) () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#10 0x00007701bb95bc64 in llvm::EngineBuilder::selectTarget() ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#11 0x00007701c643795c in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#12 0x00007701c6433487 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#13 0x00007701c64ab946 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#14 0x00007701c649c7e8 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#15 0x00007701c6480ae8 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#16 0x00007701c60f2f86 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#17 0x00007701c5fe6fca in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#18 0x00007701c6014a05 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#19 0x00007703ce73af7a in ?? () from /lib/x86_64-linux-gnu/libffi.so.8
#20 0x00007703ce73a40e in ?? () from /lib/x86_64-linux-gnu/libffi.so.8
#21 0x00007703ce73ab0d in ffi_call () from /lib/x86_64-linux-gnu/libffi.so.8
#22 0x00007703ce75e86b in ?? ()
from /usr/local/lib/python3.13/lib-dynload/_ctypes.cpython-313-x86_64-linux-gnu.so
#23 0x00007703ce75c7a1 in ?? ()
from /usr/local/lib/python3.13/lib-dynload/_ctypes.cpython-313-x86_64-linux-gnu.so
#24 0x00007703d2541469 in ?? () from /usr/local/bin/../lib/libpython3.13.so.1.0
т.е. он дает сбой в общей библиотеке тензорного потока. Сегфолты исчезают, когда я удаляю импорт из тензорного потока из Python.
текущие версии:
pygame 2.6.1
PyOpenGL 3.1.10
tensorflow_cpu 2.20.0
python:3.13-slim-bookworm (basic docker)
libgl1-mesa-dri/oldstable,now 22.3.6-1+deb12u1 amd64 [installed,automatic]
libllvm15/oldstable,now 1:15.0.6-4+b1 amd64 [installed,automatic]
Я подозреваю, что между libllvm, opengl и tensorflow каким-то образом существует несоответствие версий. Так ли это и как это исправить?
Пример автономного кода, который выдает ошибку сегментации (код взят из https://www.tutorialspoint.com/pygame/p ... opengl.htm):
import tensorflow
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
verticies = (
(1, -1, -1),
(1, 1, -1),
(-1, 1, -1),
(-1, -1, -1),
(1, -1, 1),
(1, 1, 1),
(-1, -1, 1),
(-1, 1, 1)
)
edges = (
(0,1),
(0,3),
(0,4),
(2,1),
(2,3),
(2,7),
(6,3),
(6,4),
(6,7),
(5,1),
(5,4),
(5,7)
)
def Cube():
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(verticies[vertex])
glEnd()
def main():
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
#gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0,0.0, -5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(1, 3, 1, 1)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Cube()
pygame.display.flip()
pygame.time.wait(10)
main()
Подробнее здесь: https://stackoverflow.com/questions/798 ... d-pyopengl
Конфликт между тензорным потоком и pyopengl ⇐ Python
Программы на Python
-
Anonymous
1771604499
Anonymous
Используя Python 3.13, я получаю ошибку сегментации с кодом, который раньше (с использованием Python 3.10, tensorflow-cpu 2.12, PyOpenGl 3.1.0 и pygame 2.5.0) работал нормально.
Теперь происходит сбой сегментации в том месте, где OpenGL фактически выполняет некоторую работу (при вызове glCallList), что это я думаю первая часть, где мы собственно и выполняем работу). Трассировка стека, предоставленная gdb, показывает:
#0 0x00007701f41d08e1 in llvm::raw_svector_ostream::write_impl(char const*, unsigned long) ()
from /usr/local/lib/python3.13/site-packages/tensorflow/python/platform/../../libtensorflow_framework.so.2
#1 0x00007701b9ed80f3 in llvm::raw_ostream::write(char const*, unsigned long) ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#2 0x00007701b9ea7f08 in llvm::Twine::printOneChild(llvm::raw_ostream&, llvm::Twine::Child, llvm::Twine::NodeKind) const () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#3 0x00007701b9ea7c27 in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#4 0x00007701b9ea7a75 in llvm::Twine::str[abi:cxx11]() const ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#5 0x00007701bcae6818 in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#6 0x00007701ba218c2a in llvm::LLVMTargetMachine::initAsmInfo() ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#7 0x00007701bca9471f in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#8 0x00007701bca962a2 in ?? () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#9 0x00007701bb95c156 in llvm::EngineBuilder::selectTarget(llvm::Triple const&, llvm::StringRef, llvm::StringRef, llvm::SmallVectorImpl const&) () from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#10 0x00007701bb95bc64 in llvm::EngineBuilder::selectTarget() ()
from /lib/x86_64-linux-gnu/libLLVM-15.so.1
#11 0x00007701c643795c in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#12 0x00007701c6433487 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#13 0x00007701c64ab946 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#14 0x00007701c649c7e8 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#15 0x00007701c6480ae8 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#16 0x00007701c60f2f86 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#17 0x00007701c5fe6fca in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#18 0x00007701c6014a05 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#19 0x00007703ce73af7a in ?? () from /lib/x86_64-linux-gnu/libffi.so.8
#20 0x00007703ce73a40e in ?? () from /lib/x86_64-linux-gnu/libffi.so.8
#21 0x00007703ce73ab0d in ffi_call () from /lib/x86_64-linux-gnu/libffi.so.8
#22 0x00007703ce75e86b in ?? ()
from /usr/local/lib/python3.13/lib-dynload/_ctypes.cpython-313-x86_64-linux-gnu.so
#23 0x00007703ce75c7a1 in ?? ()
from /usr/local/lib/python3.13/lib-dynload/_ctypes.cpython-313-x86_64-linux-gnu.so
#24 0x00007703d2541469 in ?? () from /usr/local/bin/../lib/libpython3.13.so.1.0
т.е. он дает сбой в общей библиотеке тензорного потока. Сегфолты исчезают, когда я удаляю импорт из тензорного потока из Python.
текущие версии:
pygame 2.6.1
PyOpenGL 3.1.10
tensorflow_cpu 2.20.0
python:3.13-slim-bookworm (basic docker)
libgl1-mesa-dri/oldstable,now 22.3.6-1+deb12u1 amd64 [installed,automatic]
libllvm15/oldstable,now 1:15.0.6-4+b1 amd64 [installed,automatic]
Я подозреваю, что между libllvm, opengl и tensorflow каким-то образом существует несоответствие версий. Так ли это и как это исправить?
Пример автономного кода, который выдает ошибку сегментации (код взят из https://www.tutorialspoint.com/pygame/pygame_pyopengl.htm):
import tensorflow
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
verticies = (
(1, -1, -1),
(1, 1, -1),
(-1, 1, -1),
(-1, -1, -1),
(1, -1, 1),
(1, 1, 1),
(-1, -1, 1),
(-1, 1, 1)
)
edges = (
(0,1),
(0,3),
(0,4),
(2,1),
(2,3),
(2,7),
(6,3),
(6,4),
(6,7),
(5,1),
(5,4),
(5,7)
)
def Cube():
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(verticies[vertex])
glEnd()
def main():
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
#gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0,0.0, -5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(1, 3, 1, 1)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Cube()
pygame.display.flip()
pygame.time.wait(10)
main()
Подробнее здесь: [url]https://stackoverflow.com/questions/79884426/conflict-between-tensorflow-and-pyopengl[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия