#c #linux #gcc
#c #linux #gcc
Вопрос:
Я создал программу, которая отлично работает в Linux Mint, и теперь мне нужно заставить ее работать на компьютере IBM, работающем под управлением Linux red hat. Что касается библиотек, я поместил их в модули (мне пришлось перекомпилировать SFML для red hat), но когда я запускаю свою программу, это вызывает ошибку segfault, вот что valgrind рассказал мне об этом сбое :
Process terminating with default action of signal 11 (SIGSEGV)
==30230== Access not within mapped region at address 0xE0
==30230== at 0x55B5974: sf::priv::GlxContext::GlxContext(sf::priv::GlxContext*) (in /workfs/dev/libs/SFML-2-2.1/build/lib/libsfml-window.so.2.1)
Непосредственно перед ошибкой segfault у меня возникает эта странная ошибка: xrandr не удается загрузить расширение для отображения.
Эта ошибка по-прежнему возникает при попытке запустить SFML examples
Вот код, который вызывает ошибку segfault :
//segfault ;
this->window = new sf::RenderWindow(sf::VideoMode(this->width, this->height), this->title,sf::Style::Close, settings);
Похоже, SFML не может создать содержимое OpenGL, потому что xrandr ноет, у кого-нибудь есть идея? Может ли кто-нибудь пролить свет на мою проблему: D?
Комментарии:
1. Мне кажется, что вы разыменовываете nullpointer, но без какого-либо кода…
2. дело в том, что моя программа отлично работает на Linux mint, поэтому я не думаю, что проблема здесь в коде…
3. Когда ваша программа вызывает UB, может случиться все, что угодно. Вы где-нибудь получаете указатель из какого-либо API, а затем используете его без проверки? Такие вещи могут работать в одной конфигурации, но не в другой.
4. хорошо, я добавил код, который отвечает за ошибку segfault, я прокомментировал ту часть кода, где я повторно использую window, так что это единственный момент, когда я его использую, и он завершается с ошибкой.
5. Похоже, кому-то нужно использовать отладчик для этого.