Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

weapon_icon кладет сервер

, помогите найти баг
Статус пользователя Metal Messiah
сообщение 18.7.2013, 20:00
Сообщение #1


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
Сервак стал падать чуть ли не раз в пол часа, происходит это только при большом онлайне, ночью не падал.

Цитата
L 07/18/2013 - 14:14:10: [AMXX] Displaying debug trace (plugin "weapon_icon.amxx")
L 07/18/2013 - 14:14:10: [AMXX] Run time error 4: index out of bounds
L 07/18/2013 - 14:14:10: [AMXX] [0] weapon_icon.sma::remove_weapon_icon (line 179)
L 07/18/2013 - 14:14:10: [AMXX] [1] weapon_icon.sma::update_icon (line 73)
L 07/18/2013 - 14:14:10: FATAL ERROR (shutting down): New message started when msg '107' has not been sent yet
FATAL ERROR (shutting down): New message started when msg '107' has not been sent yet
Server crashed at 'Thu Jul 18 14:14:10 MSK 2013' - Restarting


Строка 179: write_string(user_icons[id]);
Допустим ID левый и у меня выход за пределы массива. Вызывается remove_weapon_icon(id) в строке 73
но это происходит после if(is_user_alive(id)), т.е. если бы id был левый - этот блок бы не выполнялся, т.к. живого такого юзера нет.
К тому же, в самом remove_weapon_icon стоит проверка на connected и alive

вырезка
public remove_weapon_icon(id) {
if (is_user_ok(id)) {
message_begin(MSG_ONE,iconstatus,icon_origin,id);
write_byte(0);
write_string(user_icons[id]);
message_end();
}
}

public is_user_ok(id) {
// check if the user is "ok": they are connected, not a bot, and alive
if (is_user_connected(id) && !is_user_bot(id) && is_user_alive(id))
return true
return false
}


Размерность new user_icons[32][192]; вроде бы нормальная...
Каким образом может быть что проверка существования пользователя проходит а ошибка пояляется?


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя mazdan
сообщение 18.7.2013, 20:10
Сообщение #2


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

public is_user_ok(id) {
// check if the user is "ok": they are connected, not a bot, and alive
if (is_user_connected(id) && !is_user_bot(id) && is_user_alive(id))
return true
return false
}
=>
return (id < 33 && id > 0 && is_user_alive(id) && !is_user_bot(id))

Цитата
new user_icons[32]


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 18.7.2013, 21:09
Сообщение #3


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
Т.е. Вы хотите сказать что is_user_connected(35) или is_user_alive(100500) может вернуть true???? o_O
ок ставлю костыль и проверяю :)


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 19.7.2013, 5:26
Сообщение #4


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Metal Messiah,я хочу сказать что не знаю с каким индексом может быть вызвано remove_weapon_icon(id), но у игрока максимум это 32, а у массива new user_icons[32] индексы от 0 до 31 т.е. 32 штуки


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 19.7.2013, 16:34
Сообщение #5


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
Поставил проверку, все равно вылетает с той же частотой.
Прийдется от этого плагина отказаться...


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
BENDERJKE
сообщение 19.7.2013, 16:35
Сообщение #6
Стаж: 15 лет

Сообщений: 270
Благодарностей: 70
Полезность: 0

Цитата(Metal Messiah @ 19.7.2013, 16:34) *
Поставил проверку, все равно вылетает с той же частотой.
Прийдется от этого плагина отказаться...

https://c-s.net.ua/forum/ipb.html?s=&sh...st&p=455986
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 22.7.2013, 19:28
Сообщение #7


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
спасибо, помогло. До сегодня только 2 ошибки сегментации. Можно закрывать


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: