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

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

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

Если вы хотите внести предложение, зарегистрировать ошибку, у вас ничего не получилось, либо вам нужна "живая" помощь и содействие - вы всегда можете подать заявку здесь. Достаточно нажать зеленую кнопку 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-Lifeactionahl.dllahl.so
Adrenaline Gameragag.dllag.so
openAGagag.dllag.so
Azure Sheepasheephl.dll
Base Defensebdefserver.dllserver.so
The Battle Groundsbgbg.dllbg.so
Brutal Half-Lifebhlbhl.dll
Brain Breadbrainbreadbb.dll
Half-Life: Blue Shiftbshifthl.dllbshift.so
Bumper Carsbumpercarshl.dll
BuzzyBotsbuzzybotsbb.dll
Chicken Fortress 3ckf3mp.dll
Counter-Strike 1.0cs10mp.dll
Counter-Strike 1.5csv15mp.dll
Counter-Strike 1.6cstrikemp.dllcs.so
Counter-Strike:Condition Zeroczeromp.dllcs.so
Counter-Strike:Condition Zero Deleted Scenesczerorcz.dllcz.so
Desert Crisisdcrisisdc.dlldc.so
Half-Life: Decaydecaydecay.dll
Deathmatch Classicdmcdmc.dlldmc.so
Day of Defeatdoddod.dlldod.so
Digital Paintballdpbpb.dllpb.i386.so
Earth's Special Forces (Old)esfhl.dllhl.so (лежит не в dlls каталоге, а в linuxdll)
Earth's Special Forcesesfhl.dllhl.so
Existenceexistenceexistence.dll
Firearmsfirearmsfirearms.dll
Frontline Forcefrontlinefrontline.dllfront.so
Gangsta Warsgangstawarsgwars27.dll
Gangwarsgangwarsmp.dll
Opposing Forcegearboxopfor.dllopfor.so
Global Warfareglobalwarfaremp.dllgw.so
Goldeneyegoldeneyemp.dll
Headcrab Frenzyhcfrenzyhcfrenzy.dllhcfrenzy.so
Half-Life 1.5: Weapon Editionhl15wehl.dllhl.so
HL-Rallyhlrallyhlrally.dllhlr.so
Holy Warsholywarsholywars.dllhl.so
Hostile Intenthostileintenthl.dllhl.so
International Online Socceriosios.dllios.so
Judgementjudgedmmp.dlljudge.so
Kanonballkanonballkanonball.dllhl.so
Monkeystrikemonkeystrikemonkey.dllms.so
Morbid InclinationMorbidPRmorbid.dllmorbid.so
Move In!moveinhl.dllhl.so
Master Sword Continuedmscms.dll
Natural Selectionnsns.dllns.so
Natural Selection Betanspns.dllns.so
Over Groundogog.dllog.so
Outlawsmodolhl.dllol.so
Operations 1942ops1942spirit.dllspirit.so
Open-Source Jailbreakosjbjail.dllosjb.so
Out Breakoutbreakhl.dll
Oz Deathmatchozmp.dllmp.so
Paintballpaintballmp.dllpb.so
Public Enemypenemype.dllpe.so
Point of No Returnponreturnmp.dllponr.so
Pirates, Vikings and Knightspvkhl.dllhl.so
Rocket Crowbar 2rc2rc2.dllrc2.so
Resident Evil : Cold Bloodrecbb2recb.dllrecb.so
Gunman Chroniclesrewolfgunman.dll
Ricochetricochetmp.dllricochet.so
Rocket Crowbarrockcrowbarrc.dllrc.so
Rival Speciesrspecieshl.dllhl.so
Scientist Huntscihuntshunt.dllshunt.so
The Shipshipship.dllship.so
Science & Industrysisi.dllsi.so
Snow-Warsnowsnow.dllsnow.so
StargateTC (Old, 1.x)stargatetchl.dllhl.so
StargateTC (Updated, 2.x)stargatetchl.dllstc.so
StargateTC (Updated, 2.x)stargatetchl.dllstc_i386_opt.so
Sven Coop (Old)svencoophl.dllhl.so
Sven Coop (Steam)svencoopserver.dllserver.so
Swarmswarmswarm.dllswarm.so
Team Fortress Classictfctfc.dlltfc.so
The Wastesthewastesthewastes.dllthewastes.so
Project Timelesstimelesstimeless.dllpt.so
Tour of Dutytodhl.dllhl.so
Train Hunterstrainhuntersth.dllth.so
The Specialiststsmp.dllts.so
The Trenchestttt.dlltt.so
Underworld Bloodlineunderworlduw.dlluw.so
Half-Lifevalvehl.dllhl.so
VampireSlayervsmp.dllvs.so
Wanted!wantedhlwanted.dllhl.so
Wizard Wars (Steam)wizardwarswizardwars.dllwizardwars.so
Wizard Wars Beta (Steam)wizardwars_betawizardwars.dllwizardwars.so
Wizard Wars (Old)wizwarsmp.sohl.dll
WormsHLwormshlwormshl.dllwormshl.so
Zombie Paniczpmp.dllhl.so

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