Программа вылетает в RHEL (CentOS) (В Debian работает)

Модератор: Модераторы разделов

MiK13
Сообщения: 774
ОС: Linux Debian

Программа вылетает в RHEL (CentOS)

Сообщение MiK13 » 05.06.2019 15:57

Здравствуйте! Столкнулся с проблемой.
Программа отображает содержимое памяти в виде картинке. Используя GLUT.
В Debian (в версиях от 6 до 9) работает нормально. Попробовал запустить в RHEL -- вылетает с сообщением
freeglut (./img2): ERROR: No display callback registered for window 2
Меня насторожило число 2. В программе я создаю основное окно и ещё два субокна, которые сразу скрываю.
Вот код их создания:

Код: Выделить всё

  glutInit(&argc,argv);                                                 // Инициализировать утилиты OpenGL
  glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DOUBLE);                // Установить режим дисплея
  glutInitWindowSize(geom[0],geom[1]);                                  // Запросить открытие окон с заданным размером
  glutInitWindowPosition(geom[2],geom[3]);                              // Запросить открытие окон на заданной позиции
  main_win=glutCreateWindow("Image");                                   // Создать окно
  glutGetWindow();
  sub_win1=glutCreateSubWindow(main_win,100,30,200,80);                 // Создать первое субокно
  sub_win2=glutCreateSubWindow(main_win,WIN2_L,WIN2_T,WIN2_W,WIN2_H);   // Создать второе субокно
  glutSetWindow(sub_win1);                                              // Установить первое субокно текущим
  glViewport(view_x,view_y,600, 400);                                   //  Установить параметры отображения
  //~ gluOrtho2D(0.0,255.0,0.0,1.0);
  glOrtho(0.0,255.0,0.0,1.0,-1,1);
  glutHideWindow();                                                     //  и скрыть его
  glutSetWindow(sub_win2); glutHideWindow();                            // Установить второе субокно текущим и скрыть его
  glutSetWindow(main_win);                                              // Установить текущим основное окно
Решил, что какая-то проблема с созданием субокон. Закомментировал строки их создания -- программа запустилась. И в CentOS (в которой компилировал) и в RHEL.
В чём может быть проблема? Может быть надо что-то ещё добавить для работы с субокнами?
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Программа вылетает в RHEL (CentOS)

Сообщение /dev/random » 06.06.2019 09:25

MiK13 писал:
05.06.2019 15:57
ERROR: No display callback registered for window 2
Эта ошибка означает, что для окна не установлена функция отрисовки (через glutDisplayFunc).
Спасибо сказали:

MiK13
Сообщения: 774
ОС: Linux Debian

Re: Программа вылетает в RHEL (CentOS)

Сообщение MiK13 » 06.06.2019 13:25

/dev/random писал:
06.06.2019 09:25
MiK13 писал:
05.06.2019 15:57
ERROR: No display callback registered for window 2
Эта ошибка означает, что для окна не установлена функция отрисовки (через glutDisplayFunc).
Большое спасибо.
Добавил glutDisplayFunc(display); после glutSetWindow(sub_win1); и после glutSetWindow(sub_win2); и программа стала запускаться. Но странно, что в Debian 9 программа запускалась и работала нормально.
И, кажется, понял, почему были проблемы с отображением дополнительного окна раньше (в Debian 6). Но удивляет другое.
На экран я вывожу также число кадров в секунду, чтобы оценить скорость вывода. И вижу, что в Debian 9 скорость вывода составляет примерно 30 к/с. top показывает загрузку CPU этой программой примерно 54% При выводе картинки размером 2800х2800 она падает до 19 к/с. Загрузка CPU не меняется.
Под CentOS 7 на том же компьютере скорость вывода 36-37 к/с. Загрузка CPU примерно 60% (размер 2800х2800 не проверял)
Почему под CentOS скорость вывода может быть на 20% выше?
Пол RHEL скорость вывода составляет вообще 60 к/с, но там другой компьютер -- Intel(R) Core(TM) i7-3517UE CPU @ 1.70GHz. Хотя и медленнее (у меня Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz), но там 4 "процессора".
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Программа вылетает в RHEL (CentOS)

Сообщение /dev/random » 06.06.2019 13:39

MiK13 писал:
06.06.2019 13:25
Но странно, что в Debian 9 программа запускалась и работала нормально.
MiK13 писал:
06.06.2019 13:25
Почему под CentOS скорость вывода может быть на 20% выше?
Не могу сказать наверняка, но думаю, что на оба вопроса ответ один и тот же: в Debian (всех имеющихся сейчас версий) используется FreeGLUT 2.8, а в CentOS 7 - FreeGLUT 3.0.
Спасибо сказали:

MiK13
Сообщения: 774
ОС: Linux Debian

Re: Программа вылетает в RHEL (CentOS)

Сообщение MiK13 » 06.06.2019 14:16

/dev/random писал:
06.06.2019 13:39
[Не могу сказать наверняка, но думаю, что на оба вопроса ответ один и тот же: в Debian (всех имеющихся сейчас версий) используется FreeGLUT 2.8, а в CentOS 7 - FreeGLUT 3.0.
Об этом я не подумал.
Правда, в Debian я отдельно ставил freeglut (пакеты freeglut3-dev и freeglut3), а в CentOS FreeCLUT, получается, уже стоял.
Интересно, что в Debian (Wheezy, Stretch, а также в Kali) имя библиотеки libglut.so.3.9.0, а в CentOS libglut.so.3.10.0
Но dpkg -l | grep glut выдаёт, что freeglut3:amd64 версии 2.8.1-3
Спасибо сказали: