|
Отвергнутые патчи Патчи, отвергнутые от приёма в GIT |
|
Опции темы | Поиск в этой теме | Опции просмотра |
02.06.2010, 10:39 | #1 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
[patch/dev] crash in HandleSetActiveMoverOpcode
Вот недавно словил такой краш http://paste2.org/p/860715 . Я помню ещё как-то давно он был одним из самых частых крашей, видимо попытки hununza вправить его уменьшили его частоту, однако я его таки словил на ревизии 10011
В общем мои первые потуги его исправить окончательно. Т.к. мы незнаем откуда корень краша, пока предлагаю затык. Написал два варианта. 1 Код:
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index d81bb8a..765cd2f 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -778,6 +778,12 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data) uint64 guid; recv_data >> guid; + if(!_player || !guid) + { + sLog.outError("Prevented crash with HandleSetActiveMoverOpcode"); + return; + } + if(_player->m_mover->GetGUID() != guid) { sLog.outError("HandleSetActiveMoverOpcode: incorrect mover guid: mover is " I64FMT " and should be " I64FMT, _player->m_mover->GetGUID(), guid); Код:
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index d81bb8a..765cd2f 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -778,6 +778,12 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data) uint64 guid; recv_data >> guid; + if(!_player->m_mover->GetGUID() || !guid) + { + sLog.outError("Prevented crash with HandleSetActiveMoverOpcode"); + return; + } + if(_player->m_mover->GetGUID() != guid) { sLog.outError("HandleSetActiveMoverOpcode: incorrect mover guid: mover is " I64FMT " and should be " I64FMT, _player->m_mover->GetGUID(), guid); Последний раз редактировалось Insider42; 02.06.2010 в 10:44. |
02.06.2010, 10:55 | #2 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
А оно точно не от античита? Мне наводку на правку похожего краша Wowka321 дал, оно из-за миндконтрола и дальновидения хантов вылетало. Там действительно проблемы в определении mover/m_mover были.
|
02.06.2010, 11:02 | #3 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
Эта функция совершенно бесполезна в текущей версии.
Чтобы не падал в HandleSetActiveMoverOpcode тело функции заменяем на: Код:
recv_data.read_skip<uint64>(); У меня такая версия: PHP код:
Последний раз редактировалось zergtmn; 17.06.2010 в 12:36. |
Пользователь сказал cпасибо: | Insider42 (02.06.2010) |
02.06.2010, 11:05 | #4 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Crash dump'ы под *nix | CruncH | Прочая документация | 16 | 21.08.2010 11:09 |
Crash с инстами | ice74 | Баг-репорты | 12 | 20.05.2010 12:11 |
[Crash?] удаление GO | zergtmn | Баг-репорты | 0 | 29.04.2010 22:31 |
[crash] EffectScriptEffect | Insider42 | Баг-репорты | 8 | 23.04.2010 12:49 |
Crash(game_event) | selector | Баг-репорты | 9 | 19.04.2010 19:41 |