Segmentation fault ustalenie miejsca problemu

Krótki poradnik jak znaleźć winowajce problemu Segmentation fault.

Dlaczego Segmentation fault występuje ?

Błędy typu Segmentation fault mogą wystąpić z kilku powodów

  • Poprzez przeciążenie serwera hlds/rehlds pluginami i innego rodzaju dodatkami.
  • Nieprzypisanie odpowiednich zasobów do poprawnego działania serwera.
  • Pisania po pamięci przez wirtualną maszynę amxx‚a niedostępną dla niej lub pluginu.

Co zrobić jeśli Segmentation fault występuje ?

  1. Upewnij się że korzystasz z najnowszej wersji:
    • HLDS/ReHLDS
    • Metamoda i jego dodatków
    • AMXX i jego modułów
  2. Upewnij się że pluginy na serwerze są skompilowane tą samą wersją kompilatora amxx którego używasz na serwerze.
  3. Wyłącz zbędne pluginy których nie używasz a mimo to są ładowane jako działające pluginy.
  4. Wyłączaj po kolei pluginy w celu ustalenia który powoduje problemy na serwerze. Polecam wyłączać pluginy sposobem 1/2  (wyłączasz połowę, włączasz serwer. Problem występuje -> zmniejszasz o kolejną połowę. Problem ustał -> zawęziłeś okres poszukiwań o 50% w jednym resecie). Zazwyczaj w modach takich jak Zombie, Jailbreak, CSGO czy pokrewnych winowajcą są główne silniki.
  5. Dopisz debug na liście pluginów który powoduje problem. Jeśli chcesz debugować wszystkie pluginy zamiast jednego ustaw cvar amx_debug 2.
    // Plugin Debug mode
    // 0 - No debugging (garbage line numbers)
    // 1 - Plugins with "debug" option in plugins.ini are put into debug mode
    // 2 - All plugins are put in debug mode
    // Note - debug mode will affect JIT performance
    //
    // Default value: 1
    amx_debug 2
  6. Sprawdź logi serwera i amxx  ( znajdziesz je w cstrike/addons/amxmodx/logs ) w celu ustalenia miejsca występowania problemu w pluginie ( konkretne miejsce nigdy nie będzie podane ale możesz znaleźć tam inne błędy które też mogą wpływać na działanie serwera ).
  7. Sprawdź kod sma pluginu w celu ustalenia miejsca i naprawy problemu jeśli umiesz to zrobić sam.
  8. Jeśli nie umiesz programować załóż odpowiedni temat na forum podając:
    • Używane wersje hlds , metamoda i amxx
    • Logi serwera oraz logi amxx  ( znajdziesz je w cstrike/addons/amxmodx/logs )
    • Pełen kod pluginu jako załącznik

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.