Перейти к содержимому


Фотография

Повторяющийся краш на версус сервере

краш

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 23 Октябрь 2019 - 16:30

Всем привет.

В последнее время начал замечать повторяющиеся краши на версус сервере.

Несколько из них я уже пофиксил(т.к. по информации из краш лога было понятно, какой из плагинов вызвал тот или иной краш).

Но, в данном случае, я что-то вовсе никак не пойму, какой из плагинов вызывает краш.

P.S.: при каждом краше краш лог идентичен.

Если кто предположительно или точно знает, какой(-ие) из плагинов может(-гут) вызвать данный краш, подскажите пожалуйста.

Сам краш лог:

Скрытый текст

 

Список плагинов:

Скрытый текст

 

Список расширений:

Скрытый текст

Сообщение отредактировал BloodyBlade: 23 Октябрь 2019 - 16:33


#2 Goldfish

Goldfish

    Пользователь

  • Пользователь
  • PipPipPip
  • 388 сообщений

Отправлено 23 Октябрь 2019 - 17:35

Всем привет.

В последнее время начал замечать повторяющиеся краши на версус сервере.

Несколько из них я уже пофиксил(т.к. по информации из краш лога было понятно, какой из плагинов вызвал тот или иной краш).

Но, в данном случае, я что-то вовсе никак не пойму, какой из плагинов вызывает краш.

P.S.: при каждом краше краш лог идентичен.

Если кто предположительно или точно знает, какой(-ие) из плагинов может(-гут) вызвать данный краш, подскажите пожалуйста.

Сам краш лог:

Скрытый текст

 

Список плагинов:

Скрытый текст

 

Список расширений:

Скрытый текст

у тебя нет акелератора расшерения? через него может понятнее было бы



#3 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 23 Октябрь 2019 - 19:50

Всем привет.

В последнее время начал замечать повторяющиеся краши на версус сервере.

Несколько из них я уже пофиксил(т.к. по информации из краш лога было понятно, какой из плагинов вызвал тот или иной краш).

Но, в данном случае, я что-то вовсе никак не пойму, какой из плагинов вызывает краш.

P.S.: при каждом краше краш лог идентичен.

Если кто предположительно или точно знает, какой(-ие) из плагинов может(-гут) вызвать данный краш, подскажите пожалуйста.

Сам краш лог:

Скрытый текст

 

Список плагинов:

Скрытый текст

 

Список расширений:

Скрытый текст

Может утечка памети есть на сервере сильная?
напиши данную команду когда сервер поработает пару часов без рестарта

sm_dump_handles addons/sourcemod/handles.txt

может по списку что-то покажет



#4 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 23 Октябрь 2019 - 19:59

у тебя нет акелератора расшерения? через него может понятнее было бы

Может утечка памети есть на сервере сильная?
напиши данную команду когда сервер поработает пару часов без рестарта

sm_dump_handles addons/sourcemod/handles.txt
может по списку что-то покажет

Результат: Прикрепленный файл  handles.txt   193,95К   15 Количество загрузок:


Сообщение отредактировал BloodyBlade: 23 Октябрь 2019 - 20:33


#5 Slaven555

Slaven555

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 533 сообщений

Отправлено 23 Октябрь 2019 - 20:31

Я просто обновил sm до 1.10 stable

#6 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 23 Октябрь 2019 - 20:52

Результат: attachicon.gifhandles.txt

С каком временем сервер падает?

По списку скорее проблема в утечке памяти.
Очень много с IMenuPanel
Так же по l4d2lib.smx есть дыра.

l4d2lib.smx         	KeyValues           	39233  

Того уже -- Approximately 1642248 bytes of memory are in use by Handles.
Для сервера это много. При нехватке памяти сервер и падает. (это только  моя теория).


Сообщение отредактировал dr_lex: 23 Октябрь 2019 - 20:53


#7 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 23 Октябрь 2019 - 21:39

С каком временем сервер падает?

По списку скорее проблема в утечке памяти.
Очень много с IMenuPanel
Так же по l4d2lib.smx есть дыра.

l4d2lib.smx         	KeyValues           	39233  

Того уже -- Approximately 1642248 bytes of memory are in use by Handles.
Для сервера это много. При нехватке памяти сервер и падает. (это только  моя теория).

Сервер падает через часа 2 непрерывной игры.

IMenuPanel - это от плагина PerkMod только. На коопе он стоит, и крашей 0.

На счет l4d2lib: он использует 16 нативов, которые при компиляции используют инклюды.

С чего так много KeyValues, неизвестно.

Вроде все правильно переведено в исходнике l4d2lib и инклюдах: https://cloud.mail.r.../77pJ/FSwZxfJns

542 мб оперативки на данный момент ест сервер.


Сообщение отредактировал BloodyBlade: 23 Октябрь 2019 - 22:15


#8 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 23 Октябрь 2019 - 22:53

Сервер падает через часа 2 непрерывной игры.

IMenuPanel - это от плагина PerkMod только. На коопе он стоит, и крашей 0.

На счет l4d2lib: он использует 16 нативов, которые при компиляции используют инклюды.

С чего так много KeyValues, неизвестно.

Вроде все правильно переведено в исходнике l4d2lib и инклюдах: https://cloud.mail.r.../77pJ/FSwZxfJns

542 мб оперативки на данный момент ест сервер.

Я как-то пытался объяснить dragokas в плане утечек памяти, но он сказал что я зациклен на данной вещи)
Но все же повторю, некоторые функции надо за собой закрывать!
У тебя не закрыта KeyValues, такую ошибку часто все делают.
Так же и IMenuPanel функция. Игроки открывают меню, но они не закрываются а весят в процессе. Посчитай сколько у тебя их открыто!
Скорее всего игроки не зная, сами ложат сервер через открытие меню)

Вот если интересно как у меня

Сервер на момент файла проработал UpTime: 16:20:41 для 16 часов это нормально) с учетом что только вчера на SM 1.10 перевел сервер
 


Сообщение отредактировал dr_lex: 23 Октябрь 2019 - 23:01

  • Goldfish это нравится

#9 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 23 Октябрь 2019 - 23:37

Я как-то пытался объяснить dragokas в плане утечек памяти, но он сказал что я зациклен на данной вещи)
Но все же повторю, некоторые функции надо за собой закрывать!
У тебя не закрыта KeyValues, такую ошибку часто все делают.
Так же и IMenuPanel функция. Игроки открывают меню, но они не закрываются а весят в процессе. Посчитай сколько у тебя их открыто!
Скорее всего игроки не зная, сами ложат сервер через открытие меню)

Вот если интересно как у меня
attachicon.gifhandles.txt

Сервер на момент файла проработал UpTime: 16:20:41 для 16 часов это нормально) с учетом что только вчера на SM 1.10 перевел сервер
 

Таким образом, нужно получается исправлять ошибки авторов? Ибо, кроме перевода на новый синтаксис, я ничего не трогал в этих плагинах.

Если бы еще знать, как это сделать/исправить. Было бы отлично.

P.S.: кооп/кастом сервер у меня тоже не падает. За последние неск. месяцев ни 1 падения. А на версусе такая беда. Я бы убрал l4d2lib с сервера. Но, в таком случае, танки будут не на каждой карте/у каждой команды(поведение игры по умолчанию).

Глянул в коде плагина: там создается 1-секундный таймер на автооткрытие меню игроку при событии "player_team", и сразу после открытия меню, таймер убивается. Далее, получается, что меню висит до тех пор, пока игрок его не закроет цифрами 2(рандомный набор перков) или 3(подтверждение предыдущего выбора перков).


Сообщение отредактировал BloodyBlade: 24 Октябрь 2019 - 1:01


#10 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 24 Октябрь 2019 - 7:28

Таким образом, нужно получается исправлять ошибки авторов? Ибо, кроме перевода на новый синтаксис, я ничего не трогал в этих плагинах.

Если бы еще знать, как это сделать/исправить. Было бы отлично.

P.S.: кооп/кастом сервер у меня тоже не падает. За последние неск. месяцев ни 1 падения. А на версусе такая беда. Я бы убрал l4d2lib с сервера. Но, в таком случае, танки будут не на каждой карте/у каждой команды(поведение игры по умолчанию).

Глянул в коде плагина: там создается 1-секундный таймер на автооткрытие меню игроку при событии "player_team", и сразу после открытия меню, таймер убивается. Далее, получается, что меню висит до тех пор, пока игрок его не закроет цифрами 2(рандомный набор перков) или 3(подтверждение предыдущего выбора перков).

 

в l4d2lib хоть и есть утечка но она одна.
в perkmod2.smx как-то более опасный в плане количества IMenuPanel
Так что да в плане perkmod2 надо исправлять за автором.




 



#11 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 24 Октябрь 2019 - 14:49

в l4d2lib хоть и есть утечка но она одна.
в perkmod2.smx как-то более опасный в плане количества IMenuPanel
Так что да в плане perkmod2 надо исправлять за автором.

Темнеменее, PerkMod не кладет сервер. Но, да, с ним много работы, учитывая кол-во тысяч кода в плагине.

В общем, в качестве эксперимента, я перекомпилировал плагин l4d2lib с добавлением инклюда l4d2lib.inc, который, плагин не запрашивает при компиляции вовсе. И...получил краш абсолютно другого содержания:

Скрытый текст

Какой на этот раз положил, без понятия.

Но, кол-во потребления Handles снизилось значительно: Прикрепленный файл  handles.txt   98,32К   4 Количество загрузок:


Сообщение отредактировал BloodyBlade: 24 Октябрь 2019 - 19:24


#12 dragokas

dragokas

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 792 сообщений

Отправлено 26 Октябрь 2019 - 7:31

Я как-то пытался объяснить dragokas в плане утечек памяти, но он сказал что я зациклен на данной вещи)

 

Зачем хотя бы здесь об этом? Ну раз сам начал то ...

 

вот тебе даже от другого человека подтверждение:

 

Темнеменее, PerkMod не кладет сервер. Но, да, с ним много работы, учитывая кол-во тысяч кода в плагине.

 

хотя там в списке миллион утечек меню от него.

 

 

Для сервера это много. При нехватке памяти сервер и падает. (это только  моя теория).

А попробуй проверить это на практике, специально перегрузив сервер утечками, чтобы узнать точное значение и в следующий раз говорить уверенно.

А то что зациклен так и есть, т.к. пытаешься решить любую проблему с крешем с помощью поиска утечек,

при чем находишь их даже там, где их нет. Любое подозрительно большое значение у тебя сразу ассоциируется с ней.

И у меня в MapChanger там не было утечек. А то, что ты тогда нашел не является действительностью, так как OnMapStart не исполняется при старте новой карты.

 

BloodyBlade, если в последнее время, то сортируй плагины по дате добавления и отключай последние из них.

А так, по 1-му случаю креш при проверке коллизии физических объектов. Возможно где-то неверно задаются свойства.

2-й случай что-то связанное с голосом, то ли озвучивание сцен.

По 1-му, я бы сравнил название карт, на которых происходят такие повторения, и если ничего не добавлял нового, то

может у вас завелся игрок, который юзает постоянно одну и ту же баго-фичу. Сравнивай действия игроков из конца лога креша.



#13 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 26 Октябрь 2019 - 14:15

хотя там в списке миллион утечек меню от него.

Как можно это исправить?



#14 dragokas

dragokas

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 792 сообщений

Отправлено 26 Октябрь 2019 - 14:44

Скинь плагин. Попробую посмотреть.


Чаще всего в колбеке меню утеряна команда закрытия хендла, нечто вроде:

public int MenuHandler_MenuAdmin(Menu menu, MenuAction action, int param1, int param2)
{
	switch (action)
	{
		case MenuAction_End:
			delete menu;

Но бывает, что создают глобальный (повторно используемый) хендл, и там нельзя добавлять закрытие хендла в колбеке, и тогда его закрывать нужно, например при завершении карты (ну или при отключении игрока, если хендл меню создается под каждого отдельный).


Сообщение отредактировал dragokas: 26 Октябрь 2019 - 14:45

  • dr_lex это нравится

#15 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 26 Октябрь 2019 - 15:25

Скинь плагин. Попробую посмотреть.


Чаще всего в колбеке меню утеряна команда закрытия хендла, нечто вроде:

public int MenuHandler_MenuAdmin(Menu menu, MenuAction action, int param1, int param2)
{
	switch (action)
	{
		case MenuAction_End:
			delete menu;

Но бывает, что создают глобальный (повторно используемый) хендл, и там нельзя добавлять закрытие хендла в колбеке, и тогда его закрывать нужно, например при завершении карты (ну или при отключении игрока, если хендл меню создается под каждого отдельный).

Прикрепленный файл  perkmod2.sp   370,67К   5 Количество загрузок:



#16 dragokas

dragokas

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 792 сообщений

Отправлено 26 Октябрь 2019 - 20:51

Там только панели. С ними чуть иначе.

 

Вместо:

	if (g_iConfirm[iCid] == 0)
	{
		if (iT == 2)
			SendPanelToClient(Menu_Initial(iCid), iCid, Menu_ChooseInit, MENU_TIME_FOREVER);
		else if (iT == 3)
			SendPanelToClient(Menu_Initial(iCid), iCid, Menu_ChooseInit_Inf, MENU_TIME_FOREVER);
		return Plugin_Continue;
	}

	if (iT == 2)
		SendPanelToClient(Menu_ShowChoices(iCid), iCid, Menu_DoNothing, 15);
	else if (iT == 3)
		SendPanelToClient(Menu_ShowChoices_Inf(iCid), iCid, Menu_DoNothing, 15);

пишешь:

	Handle hPanel;
	
	if (g_iConfirm[iCid] == 0)
	{
		if (iT == 2)
			SendPanelToClient((hPanel = Menu_Initial(iCid)), iCid, Menu_ChooseInit, MENU_TIME_FOREVER);
		else if (iT == 3)
			SendPanelToClient((hPanel = Menu_Initial(iCid)), iCid, Menu_ChooseInit_Inf, MENU_TIME_FOREVER);
		
		if (hPanel != null) CloseHandle(hPanel);
		return Plugin_Continue;
	}

	if (iT == 2)
		SendPanelToClient((hPanel = Menu_ShowChoices(iCid)), iCid, Menu_DoNothing, 15);
	else if (iT == 3)
		SendPanelToClient((hPanel = Menu_ShowChoices_Inf(iCid)), iCid, Menu_DoNothing, 15);

	if (hPanel != null) CloseHandle(hPanel);

и т.д. по всему коду.



#17 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 26 Октябрь 2019 - 23:17

Там только панели. С ними чуть иначе.

 

Вместо:

	if (g_iConfirm[iCid] == 0)
	{
		if (iT == 2)
			SendPanelToClient(Menu_Initial(iCid), iCid, Menu_ChooseInit, MENU_TIME_FOREVER);
		else if (iT == 3)
			SendPanelToClient(Menu_Initial(iCid), iCid, Menu_ChooseInit_Inf, MENU_TIME_FOREVER);
		return Plugin_Continue;
	}

	if (iT == 2)
		SendPanelToClient(Menu_ShowChoices(iCid), iCid, Menu_DoNothing, 15);
	else if (iT == 3)
		SendPanelToClient(Menu_ShowChoices_Inf(iCid), iCid, Menu_DoNothing, 15);

пишешь:

	Handle hPanel;
	
	if (g_iConfirm[iCid] == 0)
	{
		if (iT == 2)
			SendPanelToClient((hPanel = Menu_Initial(iCid)), iCid, Menu_ChooseInit, MENU_TIME_FOREVER);
		else if (iT == 3)
			SendPanelToClient((hPanel = Menu_Initial(iCid)), iCid, Menu_ChooseInit_Inf, MENU_TIME_FOREVER);
		
		if (hPanel != null) CloseHandle(hPanel);
		return Plugin_Continue;
	}

	if (iT == 2)
		SendPanelToClient((hPanel = Menu_ShowChoices(iCid)), iCid, Menu_DoNothing, 15);
	else if (iT == 3)
		SendPanelToClient((hPanel = Menu_ShowChoices_Inf(iCid)), iCid, Menu_DoNothing, 15);

	if (hPanel != null) CloseHandle(hPanel);

и т.д. по всему коду.

Спасибо. Пропишу, протестирую.


Сообщение отредактировал BloodyBlade: 26 Октябрь 2019 - 23:26


#18 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 26 Октябрь 2019 - 23:36

Даже интересно посмотреть на результат -_-



#19 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 097 сообщений

Отправлено 31 Октябрь 2019 - 15:49

BloodyBlade,
А так, по 1-му случаю креш при проверке коллизии физических объектов. Возможно где-то неверно задаются свойства.
2-й случай что-то связанное с голосом, то ли озвучивание сцен.

В первом случае, оказался виной плагин "fix_Physics", который, должен был быть просто бесполезен, т.к. плагин на выпадение лута из боссов был удален с сервера. Но, после удаления данного плагина я больше не видел краша с данными данными краша.
Во втором случае, косяк оказался в инклюдах плагина l4d2util. Исправил.
Исправление плагинов l4d2lib и PerkMod тоже пришлось кстати.



Темы с аналогичным тегами краш

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных