Closed the-swank closed 6 years ago
Все пересобрал и ушли зависания, во всяком случае за день — не единого. Я что-то не так сделал наверное, но странно очень ибо я вообще к файлам сервера не притрагивался и даже на сервер не заходил, а перед этим все более месяца нормально работало, а тут вдруг узнал что сервер завис. Хотя ошибки в логе что переполняется строка передаваемая в WriteString остались, незнаю откуда они, пересмотрел несколько раз места где я использую WriteString, не нашел переполнений.
Выяснил причину. Происходит это при подключении игрока с заполненым до предела userinfo и одинаковым с другим игроком ником, при попытке инкрементации номера в нике "(n)", когда происходит вызов SetValueForKey для name происходит return false из-за переполнения буфера userinfo и не происходит смена ника, в итоге сервер зацикливается пытаясь установить ник с инкрементированым номером и строчит гигабайты логов с ошибками из-за невмещения ника в userinfo
В этом случае менее приоритетные userinfo поля должны удаляться, пока не поместится.
Покажи пример.
11 авг. 2017 г. 2:58 ПП пользователь "Vitaly Karpenko" < notifications@github.com> написал:
Выяснил причину. Происходит это при подключении игрока с заполненым до предела userinfo и одинаковым с другим игроком ником, происходит это при попытке инкременации номера в нике"(n)", когда происходит вызов SetValueForKey для name происходит return false из-за переполнения буфера userinfo и не происходит смена ника, в итоге сервер зацикливается пытаясь установить ник с инкрементированым номером и строчит гигабайты логов с ошибками из-за невлизания ника в userinfo
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/FWGS/xash3d/issues/228#issuecomment-321762337, or mute the thread https://github.com/notifications/unsubscribe-auth/ADEJgUv6av_pmESzXnBHbePv1Y8fpeHHks5sXBeggaJpZM4LXMpJ .
return
происходит до удаления https://github.com/FWGS/xash3d/blob/0.19.x-interp/engine/common/infostring.c#L339
Начали каждый день без причины зацикливатся сервера записывая в лог пока место на диске не закончится
[16:40:44] Error: SetValueForKey: info string length exceeded
Раньше это зависание было раз в ~4 месяца На серверах не чего совсем не делал, происходить это начало без какого либо вмешательства Вот что в логе перед зависанием:Также заметил идущие по 4-5 раз подряд ошибки связаные с переполнением WriteString, они были и раньше но сейчас стало кажется больше. Когда-то проверял плагины АМХ, не где переполнений не нашел, да и там всего парочка мест с использованием WriteString