LINUX.ORG.RU

Help! Парашут в SDL-игре


0

0

Пишу я игру Rabbit Adventure про кролика под Линукс. Игра красивая, а на сегодня даже очень красивая. Посмотреть можно и даже скачать старую (со старой графикой) и неоптимизированную дему на pgold.narod.ru там еще небыло прозрачной воды и тд. Так вот в чем проблема. Раньше стоял Альт с ядром 2.6 Все было отлично. Потом я купил новый винт и через некоторое время поставил опять Альт, но не стал обновлять ядро до2,6 , а оставил то, что по умолчанию - 2,4 Результат - все исполнительные файлы от игры вываливаются с сообщением Парашут эксплойтед. После компиляции - то же самое. Может я конечно что то вписал в исходник, что привело к парашуту - но теперь уже не вспомнишь. Так вот вопрос, как узнать на какой строчке этот злосчачтный парашут получается. Может я чего не доставил в Альт. Помогите, плис. Infinity

anonymous

ну во-первых можно этот парашут отключить
SDL_INIT_NOPARACHUTE в SDL_Init()

во-вторых кажется и без этого флажка в gdb можно узнать где произошел краш.

Dead ★★★★
()
Ответ на: комментарий от Dead

а в-третьих, парашют пишется через "Ю"! (8-)

anonymous
()

Это обычный segmentation fault. SDL его перехватывает чтобы корректно завершить свои подсистемы. Такая ошибка возникает когда в программе пытаются обратиться по неверному адресу в памяти (например указатель на SDL_Surface невалидный - тоесть указывает не туда куда нужно, либо вылез за границы массива).

Если косяк вылез при переходе на другой дистриб (не в бинарниках а в сырцах), значит криво написан код - поменялся gcc, поменялись библиотеки (SDL и прочие) и твои залепы вылезли наружу.

Способ устранения: скомпилить прогу с флагом -ggdb и потом в GDB либо в DDD попробовать отладить ее (хотябы запустить и подождать пока вылетит - напишет примерно в каком месте косяк).

Esh ★★★★
()

>Посмотреть можно и даже скачать старую (со старой графикой) и >неоптимизированную дему на pgold.narod.ru
Хрен-та - начальная страница и никуда не перейти.
У меня firefox. Валидатор нашел кучу ошибок, имеет смысл исправить если хочешь чтобы к тебе заходили не только из IE.
http://validator.w3.org/check?uri=http%3A%2F%2Fpgold.narod.ru

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за ответы. Думаю поможет. То что вылетает если никуда не показывает - это все понятно. Сайт переделаю. В Скримере или кврайте. Ерунда еще в том, что из папки на fat32 игра запускается из старых скомпилиных екзешников, а вот переписал ее в /home и уже не запускается. Вот такой вот бред.

anonymous
()
Ответ на: комментарий от anonymous

Бывает сегфолты в SDL когда не может открыть ресурсы (картинку) - например права доступа не те или неправильный путь. А потом ломаеш голову...

Esh ★★★★
()
Ответ на: комментарий от Esh

Короче я вообще не в понятке. Если запускаю игру скомпиленную из под fat32 раздела с фат32 раздела - все запускается, никаких ошибок. Все компилится.

Тут же переписываю в свой каталог на рейсер -все - труба. Ничего не запускается - парашют.

Временно вышел из затруднения тем, что храню исходники на фатовом разделе, там же их компилю, там же их исполняю.

Кто знает - в чем проблема? Права доступа менял. Не помогает.

anonymous
()

>Парашут эксплойтед.

Перечитай повнимательнее. У тебя гдето переполнение буфера. Может у тебя под имена файлов отведены статические буфера в которые не влазят твои пути из /home ???

Для путей статически меньше 1К выделять нельзя Оптимально где-то 2К/буффер

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.