МПМ Былины - Мир Древней Руси

МПМ Былины - Мир Древней Руси (https://www.bylins.su/vbb/index.php)
-   Ф/\Ей|\/| (https://www.bylins.su/vbb/forumdisplay.php?f=44)
-   -   Программистам: очень редкий, но зловредный глюк (https://www.bylins.su/vbb/showthread.php?t=3994)

prool 25.05.2009 15:07

Программистам: очень редкий, но зловредный глюк
 
Я кажется нашел причину очень редкого глюка моего мада, построенного на коде Былин, проявлявшегося в виде пропадания вещей у игроков. Глюк предположительно происходит из-за неудачного стечения обстоятельств при перезагрузке мада (выходе из мада), когда не все файловые буферы успешно сбрасываются на диск. При выпадениях мада в корку вероятность этого глюка немного больше, а при нормальных шатдаунах меньше. Иногда он проявляется в виде пропадания игрока или дружины (эти файлы тоже постоянно перезаписываются).

На всякий случай тупо вставил команду fflush(NULL) в модуль comm.cpp в процесс выхода из мада (после вызова free_db())

Посмотрим, чо будет

Еще раз повторюсь, глюк очень редко проявляется, чем чаще перезагрузки, тем больше вероятность глюка, а я перезагружаю свой мад несколько раз в день (экспериментирую, код правлю), но и то, глюк проявился 3-4 раза за два года. Былины перегружаются, как я понимаю, раз в неделю, у них вероятность этого глюка еще ниже (хотя больше юзеров и кланов, больше файловых буферов). Возможно это связано также с особенностями моей ОС (Free BSD 5.3 release p2) или даже с нагрузкой хостинговой машины

prool 13.06.2009 16:00

Дальнейшие события и их анализ показал, что может дело и не в буферах. При перезапуске мада происходит ресинхронизация времени и удаление предметов, за постой которых не заплачено. У меня в маде постой бесплатен, но кажется плату за постой я удалил не из всех мест кода. И с кланами примерно то же самое было.

Но лишний fflush все равно не помешает

prool 24.12.2009 15:34

Сделал в своей версии мада защиту от неловкого билдера
 
Я сделал защиту в онлайновом редакторе olc от неловкого или злонамеренного билдера. Теперь номера комнат, мобов, объектов, оканчивающиеся на 98 или 99 запрещены.

Вообще, комнаты хх99 - это виртуальные комнаты и они есть в каждой зоне. Если их редактировать, то после перезагрузки они все равно вернутся в первоначальное виртуальное состояние.

Зачем это сделано в CircleMUD/Былинах, я не понял, но то, что номер 98 и 99 у комнат и объектов вызывают трудноуловимые глюки, например с неработой магазинов (обычных магазинов, не моих магазинов-2), это я уже заметил

Поэтому таких номеров быть не должно!

А комната хх98 - это не виртуальная комната, но ее делать все равно нельзя, это не бага, это фича!

И не моя, а Circle!


Часовой пояс GMT +4, время: 12:24.

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot