Skip to content

Устранение проблем

STAM edited this page Sep 5, 2018 · 12 revisions

Назад Назад

Как правильно подать заявку с проблемой:

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

Разработчики будут благодарны, если при описании проблемы - вы максимально подробно все распишете:

  • Версию вашей операционной системы;
  • Версию (номер сборки) HLDS-сервера (либо ReHLDS);
  • Версию вашей игры (или мода);
  • Версию (номер или дату сборки) Metamod-r;
    • Можете дополнительно указать список модулей (набрав meta list в консоли сервера).
  • Приложите логи;
  • Приложите crashdump'ы;

Это поможет для более тщательного анализа и, возможно, исправления ваших проблем в будущем.


Получение дампов падения HLDS\reHLDS

Источник. Зеркало.

Не стоит просто так выкладывать дампы в интернете, так как зачастую в них содержится полная информация о сервере, включая rcon и прочее. Для передачи можно архивировать их с паролем, что полезно ещё тем, что жмутся они весьма хорошо.

Windows

С использованием WER (Windows Error Reporting):

  • Разрешить WER (отчеты об ошибках):
    • До Vista:
      • Запустить drwtsn32.exe и выбрать "Full" напротив Crash Dump File. Тут же можно увидеть (или настроить) куда будут складываться дампы.
    • На Vista и выше:
      • Редактирование реестра, удобный способ от s1lent:

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

  • Настройки:
    • NAME_APP - hlds.exe
      • имя приложения, которому нужно будет создавать дампы в случае аварийного завершения.
    • REG_LINK - HKLM\Software\Microsoft\Windows\Windows Error Reporting
      • путь до раздела Windows Error Reporting (Эту настройку скорее всего менять не нужно, думаю во всех Windows пути одинаковые)
    • DumpType - 2
      • 0 - Обычный дамп
      • 1 - Минимальный дамп
      • 2 - Полный дамп
    • DumpCount - 15
      • количество создаваемых дампов, если в папке количество дампов будет больше указанного значения, то будет удаляться старый дамп для создания нового дампа.
    • DumpFolder - C:\CrashDumps
      • путь до папки, куда будут складываться дампы.
      • (во избежании всяких проблем не используйте пробелы или кириллицу в путях)
  • Установка:
    • Скачать архив и разархивировать.

    • Запустить add_RegistryDumps.bat

    • После записи в реестр вы должны убедиться что у вас включена служба Отчеты об ошибках Windows.

    • Дальше нажать горячую клавишу Windows + R (Windows кнопка находится между ctrl и alt) или можно вызвать cmd.exe или Пуск - Выполнить, сразу после этого нужно ввести gpedit.msc, далее см. скриншот.

Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Отчеты об ошибок Windows

С использованием утилиты userdumps

  • Инструкция от unKn0wn:

Способ получения дампов посредством утилиты от MicroSoft: UserModeProcessDumper \ Зеркало "UserModeProcessDumper8_1_2929_5.zip".

Спасибо Lev за настройки.

1. Инсталяция

Архив который вы скачали разархивируем (по умолчанию C:\kktools\userdump8.1).

  • Запустите файл setup.exe из каталога:
    • Если вы используете 32-битную ОС Windows XP/2003, то C:\kktools\userdump8.1\x86.
    • Если вы используете 64-битную ОС Windows XP/2003, то C:\kktools\userdump8.1\x64.
  • В окне Мастера установки нажмите на кнопку Далее.
  • (Только для 32-битных ОС) В окне Terminate Mode выберите Disable "Dump on Process Termination" feature и нажмите на кнопку Далее.

  • Нажмите на кнопку Готово и дождитесь завершения установки. В окне User Mode Process Dump Setup нажмите на кнопку ДА (Если по каким-то причинам вы не знаете как зайти в меню с настройками userdump -вы их всегда сможете найти в Панель управления - Process Dumper).
2. Добавление приложения

В открывшемся окне Свойства: User Mode Process Dumper Setup жмём New и добавляем имя нужной нам программы на пример: hlds.exe (расширение -обязательно!) и жмём ОК

3. Настройки

В окне Свойства: User Mode Process Dumper Setup находим созданное только-что правило приложения, выделяем его и жмём кнопку Rules В открывшемся окне Process Monitoring Ruless for hlds.exe

  1. Выберем Use custom rules.
  2. Если требуется меняем папку для хранения созданных дампов.
  3. В Exeption Codes выделяем (нажатием ЛКМ) следующие коды: "Access Violation, Overflow, Illegal Instruction, Stack oveflow."
  4. Выставляем параметр Save Mode в режим Cyclic saving (5 times). Должно получится примерно так:

PS: Рекомендую использовать совместно с Dr Watson с типом дампов "Краткий", т.к. доктор умеет вести логи в текстовом формате, которые дадут возможность отбирать нужные дампы. А userdump будет делать полные дампы.

Linux

Сервер надо запускать с ключем -debug.

Если в системе установлен gdb, то автоматически в файле debug.log будет записываться внятная информация об ошибке. Так что рекомендуется его поставить (команда зависит от используемой системы, на Debian\Ubuntu - это apt install gdb). Хотя для создания дампов это не требуется, это фактически обязательно надо сделать при наличии возможности, так как в debug.log при этом будет записано место падения, что позволит сразу что-то сказать об ошибке. Получение этой же информации на другой системе из дамп-файла потребует наличия всех бинарников от сервера.

По умолчанию дамп-файл называется core, записывается в рабочей папке, и, соответственно, будет перезаписываться. Во избежание, можно добавлять к имени идентификатор процесса:

echo 1 > /proc/sys/kernel/core_uses_pid

или складывать дампы в /tmp:

echo /tmp/%e-%t-%p-%c.dmp > /proc/sys/kernel/core_pattern Больше информации тут.

Запуск без sudo (под root, иначе общие настройки системы должны быть выставлены на unlimited):

ulimit -c unlimited && ./hlds_run -debug ...

Запуск с sudo (под пользователем hlds):

ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && ./hlds_run -debug ..."

Проверка запуска из под sudo:

ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && whoami && ulimit -Sc && ./hlds_run -debug ..."

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

Для тестирования настроек создания дампов можете использовать специально разработанный модуль: FixItAll \ FixItAll зеркало или Crash.sma*.


Сводная таблица:

Папка - каталог вашего мода или игры. В колонках и представлены названия исполняемых файлов из папки dlls, которая находится в каталоге вашего мода или игры.

❌ - версии под платформу не существует

Игра \ Мод Папка
Action Half-Life action ahl.dll ahl.so
Adrenaline Gamer ag ag.dll ag.so
openAG ag ag.dll ag.so
Azure Sheep asheep hl.dll
Base Defense bdef server.dll server.so
The Battle Grounds bg bg.dll bg.so
Brutal Half-Life bhl bhl.dll
Brain Bread brainbread bb.dll
Half-Life: Blue Shift bshift hl.dll bshift.so
Bumper Cars bumpercars hl.dll
BuzzyBots buzzybots bb.dll
Chicken Fortress 3 ckf3 mp.dll
Counter-Strike 1.0 cs10 mp.dll
Counter-Strike 1.5 csv15 mp.dll
Counter-Strike 1.6 cstrike mp.dll cs.so
Counter-Strike:Condition Zero czero mp.dll cs.so
Counter-Strike:Condition Zero Deleted Scenes czeror cz.dll cz.so
Desert Crisis dcrisis dc.dll dc.so
Half-Life: Decay decay decay.dll
Deathmatch Classic dmc dmc.dll dmc.so
Day of Defeat dod dod.dll dod.so
Digital Paintball dpb pb.dll pb.i386.so
Earth's Special Forces (Old) esf hl.dll hl.so (лежит не в dlls каталоге, а в linuxdll)
Earth's Special Forces esf hl.dll hl.so
Existence existence existence.dll
Firearms firearms firearms.dll
Frontline Force frontline frontline.dll front.so
Gangsta Wars gangstawars gwars27.dll
Gangwars gangwars mp.dll
Opposing Force gearbox opfor.dll opfor.so
Global Warfare globalwarfare mp.dll gw.so
Goldeneye goldeneye mp.dll
Headcrab Frenzy hcfrenzy hcfrenzy.dll hcfrenzy.so
Half-Life 1.5: Weapon Edition hl15we hl.dll hl.so
HL-Rally hlrally hlrally.dll hlr.so
Holy Wars holywars holywars.dll hl.so
Hostile Intent hostileintent hl.dll hl.so
International Online Soccer ios ios.dll ios.so
Judgement judgedm mp.dll judge.so
Kanonball kanonball kanonball.dll hl.so
Monkeystrike monkeystrike monkey.dll ms.so
Morbid Inclination MorbidPR morbid.dll morbid.so
Move In! movein hl.dll hl.so
Master Sword Continued msc ms.dll
Natural Selection ns ns.dll ns.so
Natural Selection Beta nsp ns.dll ns.so
Over Ground og og.dll og.so
Outlawsmod ol hl.dll ol.so
Operations 1942 ops1942 spirit.dll spirit.so
Open-Source Jailbreak osjb jail.dll osjb.so
Out Break outbreak hl.dll
Oz Deathmatch oz mp.dll mp.so
Paintball paintball mp.dll pb.so
Public Enemy penemy pe.dll pe.so
Point of No Return ponreturn mp.dll ponr.so
Pirates, Vikings and Knights pvk hl.dll hl.so
Rocket Crowbar 2 rc2 rc2.dll rc2.so
Resident Evil : Cold Blood recbb2 recb.dll recb.so
Gunman Chronicles rewolf gunman.dll
Ricochet ricochet mp.dll ricochet.so
Rocket Crowbar rockcrowbar rc.dll rc.so
Rival Species rspecies hl.dll hl.so
Scientist Hunt scihunt shunt.dll shunt.so
The Ship ship ship.dll ship.so
Science & Industry si si.dll si.so
Snow-War snow snow.dll snow.so
StargateTC (Old, 1.x) stargatetc hl.dll hl.so
StargateTC (Updated, 2.x) stargatetc hl.dll stc.so
StargateTC (Updated, 2.x) stargatetc hl.dll stc_i386_opt.so
Sven Coop (Old) svencoop hl.dll hl.so
Sven Coop (Steam) svencoop server.dll server.so
Swarm swarm swarm.dll swarm.so
Team Fortress Classic tfc tfc.dll tfc.so
The Wastes thewastes thewastes.dll thewastes.so
Project Timeless timeless timeless.dll pt.so
Tour of Duty tod hl.dll hl.so
Train Hunters trainhunters th.dll th.so
The Specialists ts mp.dll ts.so
The Trenches tt tt.dll tt.so
Underworld Bloodline underworld uw.dll uw.so
Half-Life valve hl.dll hl.so
VampireSlayer vs mp.dll vs.so
Wanted! wantedhl wanted.dll hl.so
Wizard Wars (Steam) wizardwars wizardwars.dll wizardwars.so
Wizard Wars Beta (Steam) wizardwars_beta wizardwars.dll wizardwars.so
Wizard Wars (Old) wizwars mp.so hl.dll
WormsHL wormshl wormshl.dll wormshl.so
Zombie Panic zp mp.dll hl.so

Любое содействие и вклад в проект - приветствуется. Чем больше тестов с вашей стороны и обратной связи, тем сильнее развитие Metamod-r и остальных связанных продуктов. Удачи!