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


Фотография

Крашит при конекте пиратов, прошу совета для отладки

краш

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

#1 Goldfish

Goldfish

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

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

Отправлено 08 Март 2020 - 19:45

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

Есть ли тут закономерные конфликты функций, который использует мультислот при подключении игроков? Какие функции стоит проследить?

 

И как отловить момент краша при подключении игрока?

вроде бы есть событие которое происходит еще до HookEvent("player_spawn", Event_PlayerSpawn); ?

 

В момент краша видна последняя строчка в чате на подобии: Client "<client_name>" connected (<client_ip>).

затем сразу краш, пример:

TRUE Anger: 49.39  Processed Anger:  49  Out Anger:   5
Client "photojournalist" connected (185.219.177.74:22076).

Wrote minidump to: /game/left4dead2/addons/sourcemod/data/dumps/8f4d1cf2-6253-45c2-4075849f-d47a8ab6.dmp
./srcds_run: line 341: 17961 Segmentation fault      $HL_CMD
Add "-debug" to the ./srcds_run command line to generate a debug.log to help with solving this problem

 

ошибка повторяется неоднократно и бывает по 2 раза в день

в основном краш гдето в модуле server_srv.so в строке line 341: , как я понял

 

(у меня стоит акелератор), правда почему-то не все дампы крашей сохранились (список крашей велся с декабря 19 года)

при этом стандартный -debug отключен

 

в общеем сейчас занялся исследованием этой проблемы, форумы читал, инфы пока не нашел по данной проблеме

 

попытки переустановки серва приводят к аналогичной проблеме

сейчас пока тестирую серв без мультислота

 

использовал:

 

  Filename: l4d2multislots_coop.smx
  Title: L4D2 MultiSlots (Handles bots in a 4+ coop game.)
  Author: SwiftReal, MI 5 & GF
  Version: 0.3

 

вот немного о моем серве:

кооп (серв майарена)

 

 

    SourceMod Version: 1.9.0.6260
    SourcePawn Engine: 1.9.0.6260, jit-x86 (build 1.9.0.6260)
    SourcePawn API: v1 = 4, v2 = 12
    Compiled on: Oct 14 2018 05:08:53
    Built from: https://github.com/a.../commit/48f7e6b
    Build ID: 6260:48f7e6b
    http://www.sourcemod.net/

 

meta version
Metamod:Source version 1.10.7-dev
Built from: https://github.com/a.../commit/5374982
Build ID: 966:5374982
Loaded As: Valve Server Plugin
Compiled on: Aug  2 2018
Plugin interface version: 15:14
SourceHook version: 5:5
http://www.metamodsource.net/

 

[SM] Listing 36 plugins:
  01 "Basic Commands" (1.9.0.6260) by AlliedModders LLC
  02 "[L4D2] Save Weapon" (0.8) by GF
  03 "[L4D2] Precacher" (0.1) by GF
  04 "[L4D2] Weapon/Zombie Spawner" (1.0a) by Zuko & McFlurry
  05 "Basic Info Triggers" (1.9.0.6260) by AlliedModders LLC
  06 "Reserved Slots" (1.9.0.6260) by AlliedModders LLC
  07 "[L4D & L4D2] Gear Transfer" (1.6.2) by SilverShot
  08 "vblock.smx"
  09 "[L4D2] Loot of Zombies" (1.8) by Jonny
  10 "testScript" (0.1) by GF
  11 "Basic Chat" (1.9.0.6260) by AlliedModders LLC
  12 "Basic Ban Commands" (1.9.0.6260) by AlliedModders LLC
  13 "[L4D2] mapfinalenext" (1.5) by MAKS
  14 "[L4D] Restricted Zones" (1.1.3) by SkyDavid
  15 "Cleaner" (0.2) by Jonny
  16 "L4D_Votekick" (1.0) by D1maxa
  17 "Anti-Flood" (1.9.0.6260) by AlliedModders LLC
  18 "Player Commands" (1.9.0.6260) by AlliedModders LLC
  19 "Client Preferences" (1.9.0.6260) by AlliedModders LLC
  20 "SpeakingList" (1.4) by Accelerator
  21 "Guardian" (1.4.1) by Jonny
  22 "Sappy Fix" (2.0) by raziEiL [disawar1]
  23 "Quiet ConVar Changer" (1.0.0) by bl4nk
  24 "Fun Commands" (1.9.0.6260) by AlliedModders LLC
  25 "[L4D2] Custom admin commands" (1.0.9) by honorcode23
  26 "Admin File Reader" (1.9.0.6260) by AlliedModders LLC
  27 "[L4D] Advertisements" (0.2) by Tsunami& GF (edit by Vitamin)
  28 "Fun Votes" (1.9.0.6260) by AlliedModders LLC
  29 "Basic Comm Control" (1.9.0.6260) by AlliedModders LLC
  30 "Admin Menu" (1.9.0.6260) by AlliedModders LLC
  31 "Basic Votes" (1.9.0.6260) by AlliedModders LLC
  32 "Sound Commands" (1.9.0.6260) by AlliedModders LLC
  33 "Main script" (0.1) by GF
  34 "RCON Lock" (0.6.8) by devicenull
  35 "Admin Help" (1.9.0.6260) by AlliedModders LLC
  36 "L4D2 Events" (1.0.5) by Jonny

[SM] Displaying 15 extensions:
[01] Automatic Updater (1.9.0.6260): Updates SourceMod gamedata files
[02] Webternet (1.9.0.6260): Extension for interacting with URLs
[03] Console Cleaner (1.1.0): Console warning suppressor
[04] DefibFix Extension (1.0.1): Fixes defibrillator re-revive clone bug (on servers higher than 8 players)
[05] [L4D2] 8+ Players BugFixes (1.0.2): This extension try fix some bugs on server have more than 8 players
[06] Accelerator (2.5.0): SRCDS Crash Handler
[07] [L4D2] Melee Spawn Control (1.0.0.4): Give cvar sm_melee_weapon_list for set list of spawned melee weapons
[08] Top Menus (1.9.0.6260): Creates sorted nested menus
[09] SDK Tools (1.9.0.6260): Source SDK Tools
[10] BinTools (1.9.0.6260): Low-level C/C++ Calling API
[11] SDK Hooks (1.9.0.6260): Source SDK Hooks
[12] GeoIP (1.9.0.6260): Geographical IP information
[13] Client Preferences (1.9.0.6260): Saves client preference settings
[14] SQLite (1.9.0.6260): SQLite Driver
[15] VoiceHook (2.0): Hook when player is speak..

 

meta list
Listing 9 plugins:
  [01] Stripper (1.2.2) by BAILOPAN
  [02] L4DToolZ (1.0.0.9r1) by Ivailosp
  [03] SourceMod (1.9.0.6260) by AlliedModders LLC
  [04] DefibFix Extension (1.0.1) by V10, Accelerator
  [05] [L4D2] 8+ Players BugFixes (1.0.2) by V10, Accelerator, $atanic $pirit
  [06] [L4D2] Melee Spawn Control (1.0.0.4) by V10
  [07] SDK Tools (1.9.0.6260) by AlliedModders LLC
  [08] SDK Hooks (1.9.0.6260) by AlliedModders LLC
  [09] VoiceHook (2.0) by Accelerator

 

Loaded plugins:
---------------------
0:      "Metamod:Source 1.10.7-dev"
1:      "Tickrate Enabler 1.4.2, ProdigySim and www.MyArena.ru"

 

hostname: Rus Coop-10 gift.Box (test)
version : 2.1.5.5 7311 secure  (unknown)
udp/ip  : 46.174.48.18:27220 [ public same ]
os      : Linux Dedicated
map     : c2m3_coaster

 

дамп одного из краша при попытки подключении игрока

 

https://crash.limete...rg/kxez4iii4qx2

 

--------------------------------------------------------------------------

 

Если можете поделитесь пожалуйста советами по данной проблеме

 

желательно которые возможно реализовать без навыков написания расширений и C++

 

Спасибо

 

 

исходник мультислота навсякий случай (брал где-то с AM форума)

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

Сообщение отредактировал Goldfish: 08 Март 2020 - 22:06


#2 BloodyBlade

BloodyBlade

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

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

Отправлено 08 Март 2020 - 20:41

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

Есть ли тут закономерные конфликты функций, который использует мультислот при подключении игроков? Какие функции стоит проследить?

 

И как отловить момент краша при подключении игрока?

вроде бы есть событие которое происходит еще до HookEvent("player_spawn", Event_PlayerSpawn); ?

 

В момент краша видна последняя строчка в чате на подобии: Client "<client_name>" connected (<client_ip>).

затем сразу краш, пример:

 

ошибка повторяется неоднократно и бывает по 2 раза в день

в основном краш гдето в модуле server_srv.so в строке line 341: , как я понял

 

(у меня стоит акелератор), правда почему-то не все дампы крашей сохранились (список крашей велся с декабря 19 года)

при этом стандартный -debug отключен

 

в общеем сейчас занялся исследованием этой проблемы, форумы читал, инфы пока не нашел по данной проблеме

 

попытки переустановки серва приводят к аналогичной проблеме

сейчас пока тестирую серв без мультислота

 

(использую :)

 

вот немного о моем серве:

кооп (серв майарена)

 

 

 

дамп одного из краша при попытки подключении игрока

 

https://crash.limete...rg/kxez4iii4qx2

 

--------------------------------------------------------------------------

 

Если можете поделитесь пожалуйста советами по данной проблеме

 

желательно которые возможно реализовать без навыков написания расширений и C++

 

Спасибо

 

 

исходник мультислота навсякий случай (брал где-то с AM форума)

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

1 вопрос: зачем использовать плагин Sappy_Fix, который уже давно не обновлялся, если уже используется расширение DefibFix от Accelerator?



#3 Goldfish

Goldfish

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

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

Отправлено 08 Март 2020 - 21:07

1 вопрос: зачем использовать плагин Sappy_Fix, который уже давно не обновлялся, если уже используется расширение DefibFix от Accelerator?

Спасибо за замечание, не сообразил убрать сразу, было время я тестировал разные плагины и когда оставил дефибфикс не подумал о сапификсе)



#4 dr_lex

dr_lex

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

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

Отправлено 08 Март 2020 - 22:48

Здравствуйте, давно пытаюсь понять причину краша сервера при подключении пиратов, причина скорее всего в мультислоте, может и в связке с другими плагинами, сейчас убрал лишние плагины в т.ч. и мультислот и оставил основные, если кто уже сталкивался с этим что посоветуете для отладки этого бага?
Есть ли тут закономерные конфликты функций, который использует мультислот при подключении игроков? Какие функции стоит проследить?

Может проблема в эмуляторе? а не в мультислоте)

Да мультислот проблемный плагин, и может вызывать краш сервера, но точно не и за пиратов)
Вообще давно удивляюсь почему не кто не решил проблемы его или вообще что-то новое сделать. Вроде и умных хватает на AM фоурме и тут.

#5 Goldfish

Goldfish

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

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

Отправлено 08 Март 2020 - 22:54

Может проблема в эмуляторе? а не в мультислоте)

Да мультислот проблемный плагин, и может вызывать краш сервера, но точно не и за пиратов)
Вообще давно удивляюсь почему не кто не решил проблемы его или вообще что-то новое сделать. Вроде и умных хватает на AM фоурме и тут.

Стоит последняя версия, в кофиге отключена возможность подключения клиентов со старыми ревему в т.ч. и неизвестных, правда параметр Check_Ticket = False но если ставлю true каждый следующий игрок не может подключиться и появляется сообщение "S3: Client connected with invalid ticket: UserID:a" может  и стоит ужесточить эту проверку не знаю, есть тут кто поделится опытом по настройке этого параметра и всего конфига?

 

Вот мой конфиг на данный момент:

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

Сообщение отредактировал Goldfish: 08 Март 2020 - 22:56


#6 dr_lex

dr_lex

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

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

Отправлено 08 Март 2020 - 22:56

Стоит последняя версия, в кофиге отключена возможность подключения клиентов со старыми ревему в т.ч. и неизвестных, правда параметр Check_Ticket = False но если ставлю true каждый следующий игрок не может подключиться и появляется сообщение "S3: Client connected with invalid ticket: UserID:a" может  и стоит ужесточить эту проверку не знаю, может тут кто поделится опытом по настройке этого конфига?

 

Вот мой конфиг на данный момент:

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

Может проблема не в пиратах? или именно при их подключении? если при их то переустанови эмулятор



#7 Goldfish

Goldfish

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

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

Отправлено 08 Март 2020 - 23:07

Может проблема не в пиратах? или именно при их подключении? если при их то переустанови эмулятор

а на арене его можно вручную  переустанавливать?


Сообщение отредактировал Goldfish: 08 Март 2020 - 23:07


#8 BloodyBlade

BloodyBlade

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

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

Отправлено 09 Март 2020 - 13:54

а на арене его можно вручную  переустанавливать?

Не помню, как на PRO тарифе, но на слотовом можно только через панель.



#9 dr_lex

dr_lex

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

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

Отправлено 09 Март 2020 - 14:07

Не помню, как на PRO тарифе, но на слотовом можно только через панель.

на ПРО-тарифе тоже через панель.



#10 BloodyBlade

BloodyBlade

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

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

Отправлено 09 Март 2020 - 14:07

Может проблема в эмуляторе? а не в мультислоте)

Да мультислот проблемный плагин, и может вызывать краш сервера, но точно не и за пиратов)
Вообще давно удивляюсь почему не кто не решил проблемы его или вообще что-то новое сделать. Вроде и умных хватает на AM фоурме и тут.

Увы, но никто, кроме тебя, так и не запилил самописную альтернативу MultiSlots.



#11 dr_lex

dr_lex

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

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

Отправлено 09 Март 2020 - 14:10

Увы, но никто, кроме тебя, так и не запилил самописную альтернативу MultiSlots.

Я помню ты делал свой вариант так же).
Скорее просто это некому не нужно, и не кого это не беспокоит.



#12 BloodyBlade

BloodyBlade

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

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

Отправлено 09 Март 2020 - 14:18

Я помню ты делал свой вариант так же).
Скорее просто это некому не нужно, и не кого это не беспокоит.

Было дело)

Вероятно, так и есть.


Сообщение отредактировал BloodyBlade: 09 Март 2020 - 14:19


#13 Goldfish

Goldfish

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

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

Отправлено 09 Март 2020 - 14:45

Насчет MS, может стоит обсудить не целый плагин, а одну конкретную функцию, на которой плагин основан?)

Скажем так всеми известный round_respawn, других альтернатив  (этой функции где-то из недр движка лефты) никто пока не изобрел, так?

Интересно обсудить альтернативы этого момента)


Сообщение отредактировал Goldfish: 09 Март 2020 - 14:46


#14 BloodyBlade

BloodyBlade

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

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

Отправлено 09 Март 2020 - 15:21

Насчет MS, может стоит обсудить не целый плагин, а одну конкретную функцию, на которой плагин основан?)

Скажем так всеми известный round_respawn, других альтернатив  (этой функции где-то из недр движка лефты) никто пока не изобрел, так?

Интересно обсудить альтернативы этого момента)

Это всего лишь проверка на смерть игрока( if(!IsPlayerAlive) ) и вызов этой сигнатуры(RoundRespawn), если игрок мертв.

А для добавления ботов во всех плагинах используется int fakeclient = CreateFakeClient("FakeClient"); , а затем, ChangeClientTeam(fakeclient, TEAM_SURVIVORS); и телепорт бота к игрокам.


Сообщение отредактировал BloodyBlade: 09 Март 2020 - 15:26


#15 Goldfish

Goldfish

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

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

Отправлено 09 Март 2020 - 19:09

Это всего лишь проверка на смерть игрока( if(!IsPlayerAlive) ) и вызов этой сигнатуры(RoundRespawn), если игрок мертв.

А для добавления ботов во всех плагинах используется int fakeclient = CreateFakeClient("FakeClient"); , а затем, ChangeClientTeam(fakeclient, TEAM_SURVIVORS); и телепорт бота к игрокам.

да верно, это я просто смотрел в одну из кривой версии мултислота) Там каждый раз респавн сигнатура вызывалась

 

ну а так по факту, да в основном такой порядок создания бота:

 

 

1) fakeclient = CreateFakeClient("FakeClient")

2) ChangeClientTeam(fakeclient, 2)

3) DispatchKeyValue(fakeclient, "classname", "survivorbot")

4) DispatchSpawn(fakeclient)

5)

    if (!IsPlayerAlive(fakeclient))
    {
        Respawn(fakeclient);
    }

6) TeleportEntity(fakeclient, teleportOrigin, NULL_VECTOR, NULL_VECTOR)

 

ну и дальше происходит захват бота (takeOver)

не знаю правильный ли это алгоритм, может если есть у кого опыт в этом деле, поправьте

 

(ну а я для теста решил сразу еще и кикать фейкого клиента после спавна чтобы его бот разморозился и пошел бегать по карте)

 

7) KickClient(fakeclient, ""); не знаю может что-то не правильно делаю, пока буду наблюддать

 

 

 

Из наблюдений результата работы этого алгоритма заметил, что после создания, бот иногда сам пропадал так же после создания большого количества ботов таким образом серв крашнулся (примерно на 20-м боте, серв при этом на 10 игроков)

 

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

 

CreatePlayerBot: Unable to create bot Coach - CreateFakeClient() returned NULL.

 

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

в общем думаю все же причина именно в этом плагине, судя по последним данным акелератора ошибка связана с создание скина, бота

VdUpA3Hq4kI.jpg

 

ест какие идеи и рекомендации по поводу грамотного создания и кике ботов ?)

 

вот полный код который я тестировал

 

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

 

и что еще за квар, кто под скажет, в мултислоте используется?

SetConVarInt(FindConVar("z_spawn_flow_limit"), 50000);

 


Сообщение отредактировал Goldfish: 09 Март 2020 - 19:20


#16 BloodyBlade

BloodyBlade

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

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

Отправлено 09 Март 2020 - 19:31

 

да верно, это я просто смотрел в одну из кривой версии мултислота) Там каждый раз респавн сигнатура вызывалась

 

ну а так по факту, да в основном такой порядок создания бота:

 

 

ну и дальше происходит захват бота (takeOver)

не знаю правильный ли это алгоритм, может если есть у кого опыт в этом деле, поправьте

 

(ну а я для теста решил сразу еще и кикать фейкого клиента после спавна чтобы его бот разморозился и пошел бегать по карте)

 

7) KickClient(fakeclient, ""); не знаю может что-то не правильно делаю, пока буду наблюддать

 

 

 

Из наблюдений результата работы этого алгоритма заметил, что после создания, бот иногда сам пропадал так же после создания большого количества ботов таким образом серв крашнулся (примерно на 20-м боте, серв при этом на 10 игроков)

 

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

 

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

в общем думаю все же причина именно в этом плагине, судя по последним данным акелератора ошибка связана с создание скина, бота

VdUpA3Hq4kI.jpg

 

ест какие идеи и рекомендации по поводу грамотного создания и кике ботов ?)

 

вот полный код который я тестировал

 

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

 

и что еще за квар, кто под скажет, в мултислоте используется?

SetConVarInt(FindConVar("z_spawn_flow_limit"), 50000);

Алгоритм такой в MultiSlots:

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

 

z_spawn_flow_limit - расстояние спавна зараженных от выживших. По умолчанию, значение равно 1500. Почему в MS он выставлен в 50000 неизвестно.





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

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

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