Saltar al contenido principal

Solución de problemas

Cómo informar correctamente de un problema:

Si quieres hacer una propuesta, informar de un error o de un fallo, o necesitas ayuda «en directo», siempre puedes acudir aquí. Basta con pulsar el botón verde New issue y rellenar el formulario.

Los desarrolladores agradecerán que la descripción del problema sea lo más detallada posible:

  • La versión de tu sistema operativo; La versión (número de build) del servidor HLDS, o de ReHLDS;
  • La versión de tu juego (o mod);
  • La versión de Metamod-r (número de build o fecha de compilación);
    • Si quieres, añade la lista de módulos (escribiendo meta list en la consola del servidor).
  • Adjunta los registros;
  • Adjunta los volcados de fallos;

Esto permitirá un análisis más a fondo y, con suerte, corregir tus problemas en el futuro.


Cómo obtener volcados de fallos de HLDS\reHLDS

Fuente principal (ruso). Espejo (ruso).

No publiques los volcados sin más en internet: suelen contener información completa del servidor, incluido el rcon. Para enviarlos puedes comprimirlos con contraseña, lo que además resulta práctico porque se comprimen muy bien.

Windows

Mediante WER (Informe de errores de Windows):

  • Activa WER (los informes de errores):
  • Antes de Vista:
  • Ejecuta drwtsn32.exe y selecciona "Full" junto a Crash Dump File. Ahí también puedes ver (o configurar) dónde se guardarán los volcados.
  • En Vista y posteriores:
  • Editando el registro; este método cómodo es de s1lent:

Una forma detallada y rápida de configurar el registro para obtener volcados, pensada para principiantes.

  • Ajustes:
  • NAME_APP - hlds.exe
  • nombre de la aplicación de la que hay que generar volcados si se cierra de forma inesperada.
  • REG_LINK - HKLM\Software\Microsoft\Windows\Windows Error Reporting
  • ruta de la sección Informe de errores de Windows (lo más probable es que no haga falta cambiarla; creo que las rutas son iguales en todas las versiones de Windows)
  • DumpType - 2
  • 0 — volcado normal
  • 1 — volcado mínimo
  • 2 — volcado completo
  • DumpCount - 15
  • número de volcados que se conservan; si en la carpeta hay más de los indicados, se borra el más antiguo para dejar sitio al nuevo.
  • DumpFolder - C:\CrashDumps
  • ruta de la carpeta donde se guardarán los volcados.
  • (para evitar problemas, no uses espacios ni caracteres cirílicos en las rutas)
  • Instalación:
  • Descarga el archivo y descomprímelo.

  • Ejecuta add_RegistryDumps.bat

  • Tras escribir en el registro, asegúrate de que el servicio Informe de errores de Windows está activado.

  • Después pulsa Windows + R (la tecla Windows está entre ctrl y alt), o abre cmd.exe o «Inicio - Ejecutar»; escribe a continuación gpedit.msc y sigue la captura de pantalla.

Configuración del equipo -> Plantillas administrativas -> Componentes de Windows -> Informe de errores de Windows

Mediante la utilidad userdumps

  • Instrucciones de unKn0wn:

Método para obtener volcados con la utilidad de Microsoft: UserModeProcessDumper \ espejo de "UserModeProcessDumper8_1_2929_5.zip".

Gracias a Lev por los ajustes.

1. Instalación

Descomprime el archivo descargado (de forma predeterminada, C:\kktools\userdump8.1).

  • Ejecuta setup.exe desde el directorio:
  • Si usas Windows XP/2003 de 32 bits, C:\kktools\userdump8.1\x86.
  • Si usas Windows XP/2003 de 64 bits, C:\kktools\userdump8.1\x64.
  • En la ventana del asistente de instalación, pulsa Next.
  • (Solo en sistemas de 32 bits) En la ventana Terminate Mode, selecciona Disable "Dump on Process Termination" feature y pulsa Next.

  • Pulsa Finish y espera a que termine la instalación. En la ventana User Mode Process Dump Setup, pulsa el botón YES (si no sabes cómo llegar al menú de ajustes de userdump, siempre lo tienes en Panel de control - Process Dumper).
2. Añadir una aplicación

En la ventana Properties: User Mode Process Dumper Setup que se abre, pulsa New y añade el nombre del programa que nos interesa, por ejemplo hlds.exe (¡la extensión es obligatoria!), y pulsa OK

3. Ajustes

En la ventana Properties: User Mode Process Dumper Setup, localiza la regla que acabas de crear, selecciónala y pulsa el botón Rules En la ventana Process Monitoring Ruless for hlds.exe que se abre

  1. Selecciona Use custom rules.
  2. Si hace falta, cambia la carpeta donde se guardan los volcados.
  3. En Exception Codes, marca (con el botón izquierdo) estos códigos: "Access Violation, Overflow, Illegal Instruction, Stack overflow".
  4. Pon el parámetro Save Mode en Cyclic saving (5 veces). El resultado debería ser más o menos así:

P. D.: recomiendo usarlo junto con Dr Watson con el tipo de volcado "Brief", ya que este guarda los registros en texto y así puedes elegir los volcados que te interesan. Userdump, por su parte, generará los volcados completos.

Linux

El servidor debe arrancarse con el parámetro -debug.

Si gdb está instalado en el sistema, la información precisa del error se escribirá automáticamente en debug.log. Por eso conviene instalarlo (el comando depende del sistema; en Debian\Ubuntu es apt install gdb). Aunque no hace falta para generar volcados, es recomendable hacerlo siempre que sea posible: en debug.log queda registrado el punto del fallo, lo que permite decir algo sobre el error de inmediato. Obtener esa misma información en otra máquina a partir del archivo de volcado exigiría disponer de todos los binarios del servidor.

De forma predeterminada el archivo de volcado se llama core, se escribe en el directorio de trabajo y, por tanto, se sobrescribe. Para evitarlo, puedes añadir el identificador del proceso al nombre:

echo 1 > /proc/sys/kernel/core_uses_pid

o bien enviar los volcados a /tmp:

echo /tmp/%e-%t-%p-%c.dmp > /proc/sys/kernel/core_pattern Más información here.

Arranque sin sudo (como root; en caso contrario, el ajuste general del sistema debe estar en unlimited):

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

Arranque con sudo (como usuario hlds):

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

Comprobación del arranque con sudo:

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

muestra el nombre del usuario con el que se arrancará y el límite de creación de volcados, y a continuación inicia el servidor.

Para comprobar la configuración de volcados puedes usar un módulo creado a tal efecto: FixItAll \ FixItAll mirror or Crash.sma*.


Tabla resumen:

Folder: el directorio de tu mod o juego. En las columnas and se indican los nombres de los ejecutables de la carpeta dlls, situada dentro del directorio de tu mod o juego.

— no existe versión para esa plataforma

Juego \ ModCarpeta
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 (está en linuxdll, no en el directorio dlls)
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

Toda ayuda y contribución al proyecto es bienvenida. Cuantas más pruebas y más comentarios haya, mejor avanzarán Metamod-r y los productos relacionados. ¡Suerte!