|
Ф/\Ей|\/| Ну сами понимаете... должно быть место, которое не модерируется... Но не злоупотребляйте... |
|
Опции темы | Опции просмотра |
25.05.2009, 16:07 | #1 |
Занятой мадер
Регистрация: 25.09.2007
Адрес: Харьков
Сообщений: 149
|
Программистам: очень редкий, но зловредный глюк
Я кажется нашел причину очень редкого глюка моего мада, построенного на коде Былин, проявлявшегося в виде пропадания вещей у игроков. Глюк предположительно происходит из-за неудачного стечения обстоятельств при перезагрузке мада (выходе из мада), когда не все файловые буферы успешно сбрасываются на диск. При выпадениях мада в корку вероятность этого глюка немного больше, а при нормальных шатдаунах меньше. Иногда он проявляется в виде пропадания игрока или дружины (эти файлы тоже постоянно перезаписываются).
На всякий случай тупо вставил команду fflush(NULL) в модуль comm.cpp в процесс выхода из мада (после вызова free_db()) Посмотрим, чо будет Еще раз повторюсь, глюк очень редко проявляется, чем чаще перезагрузки, тем больше вероятность глюка, а я перезагружаю свой мад несколько раз в день (экспериментирую, код правлю), но и то, глюк проявился 3-4 раза за два года. Былины перегружаются, как я понимаю, раз в неделю, у них вероятность этого глюка еще ниже (хотя больше юзеров и кланов, больше файловых буферов). Возможно это связано также с особенностями моей ОС (Free BSD 5.3 release p2) или даже с нагрузкой хостинговой машины |
13.06.2009, 17:00 | #2 |
Занятой мадер
Регистрация: 25.09.2007
Адрес: Харьков
Сообщений: 149
|
Дальнейшие события и их анализ показал, что может дело и не в буферах. При перезапуске мада происходит ресинхронизация времени и удаление предметов, за постой которых не заплачено. У меня в маде постой бесплатен, но кажется плату за постой я удалил не из всех мест кода. И с кланами примерно то же самое было.
Но лишний fflush все равно не помешает |
24.12.2009, 16:34 | #3 |
Занятой мадер
Регистрация: 25.09.2007
Адрес: Харьков
Сообщений: 149
|
Сделал в своей версии мада защиту от неловкого билдера
Я сделал защиту в онлайновом редакторе olc от неловкого или злонамеренного билдера. Теперь номера комнат, мобов, объектов, оканчивающиеся на 98 или 99 запрещены.
Вообще, комнаты хх99 - это виртуальные комнаты и они есть в каждой зоне. Если их редактировать, то после перезагрузки они все равно вернутся в первоначальное виртуальное состояние. Зачем это сделано в CircleMUD/Былинах, я не понял, но то, что номер 98 и 99 у комнат и объектов вызывают трудноуловимые глюки, например с неработой магазинов (обычных магазинов, не моих магазинов-2), это я уже заметил Поэтому таких номеров быть не должно! А комната хх98 - это не виртуальная комната, но ее делать все равно нельзя, это не бага, это фича! И не моя, а Circle! |