LINUX.ORG.RU

Pacman: ncurses, pthreads и core dump


0

1

Пишу игру Pacman в режиме ncurses (по требованию заказчика - closed source, не для распространения).
Используется libncurses, pthread_mutex_* (для синхронизации внутри процесса), pthreads, System V message queues (для обмена между процессами).
Программа-клиент с какого-то времени (скомпилированная с ключом gcc -g) стала вылетать: http://php.kirovnet.ru/images/pacman_segfault.png
Когда не вылетает, отображает следующее: http://php.kirovnet.ru/images/pacman_client.png
Сервер не был модифицирован, и выдает все корректно: http://php.kirovnet.ru/images/pacman_server.png

Исходники целиком показать не могу, только - эпизодически.

Подскажите - на что похожи эти симптомы?
Началось это уже после распараллеливания отображения pthread'ами.
Точную отметку возникновения этих ошибок уже не установить.
Карта игры выводится в основном потоке программы (до запуска нитей) через mvwaddch().

P.S.
Если перенести вывод карты в поток (pthread) - все становится замечательно, но иногда выскакивает небольшая погрешность отображения:
http://php.kirovnet.ru/images/pacman_char.png
На что похоже?

★★★★★

под иксами, и в голой консоли - одинаковые результаты

pacify ★★★★★
() автор топика

Ошибку нашел :)

Делал в цикле wrefresh(windowGame) после отрисовки персонажей, каждый раз - думал, что по ssh будет лучше отображаться, без лагов.

Вопрос закрыт.

pacify ★★★★★
() автор топика

> Программа-клиент с какого-то времени (скомпилированная с ключом gcc -g)

Что примечательно, под valgrind -v ./prog - программа не валилась, и отображала все нормально.

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

Это что за ВУЗы, в которых пакманы — курсовые? :) Зря, чувствую, я в свое время ТОУ на курсачах занимался :)

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

> Это что за ВУЗы, в которых пакманы — курсовые?

Университет в одной из стран Европы.
Надо, чтобы программа заработала под Ubuntu, CentOS 4.4 и FreeBSD.
Это у них по курсу «Программирование под Unix» вроде.

P.S. У меня уже приведения забегали (по алгоритму первого приведения, Blinky):
http://ru.wikipedia.org/wiki/Pac-Man
Сейчас буду доделывать join game (для многопользовательской версии), и - основную логику игры.
Мелочи сделаны.

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

Где-то была статься подробно описывающая алгоритм привидений. На «ненужном» хабре кажется.

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