←  Artykuły i Instrukcje

AMXX.pl: Support AMX Mod X i SourceMod

»

Segmentation fault ustalenie miejsca problemu

  • +
  • -
DarkGL - zdjęcie DarkGL 30.11.2018

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 ?
  • Upewnij się że korzystasz z najnowszej wersji:
    • HLDS/ReHLDS
    • Metamoda i jego dodatków
    • AMXX i jego modułów
  • Upewnij się że pluginy na serwerze są skompilowane tą samą wersją kompilatora amxx którego używasz na serwerze.
  • Wyłącz zbędne pluginy których nie używasz a mimo to są ładowane jako działające pluginy.
  • 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.
  • 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
  • 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 ).
  • Sprawdź kod sma pluginu w celu ustalenia miejsca i naprawy problemu jeśli umiesz to zrobić sam.
  • 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
Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 30.11.2018


Nie przypisanie odpowiednich zasobów do poprawnego działania serwera.

Nieprzypisane*

 

 

 


Pisania po pamięci przez wirtualną maszynę amxx'a nie dostępną dla niej lub pluginu.

 

Niedostępną*

 

 

 


Lgi serwera oraz logi amxx

Lgi -> Logi

 

Polecam także (zakładając, że połowa [minimum] osób czytających ten temat nie będzie wiedziała jak wydajnie wyłączać pluginy) wyłączać pluginy sposobem 1/2  (wyłaczasz 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. To od nich należy zacząć poszukiwania.

 

 

Warto też dodać, że logi amxxa znajdują się w cstrike/addons/amxmodx/logs, ale osoby korzystające z poradnika powinny już to wiedzieć, jeśli zainteresowane są tematem in the first place.

 

Co do debugowania - należy pamiętać, że jest taka opcja jak 

// 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

znajdująca się w amxx.cfg - należy skorzystać z opcji nr. 2, jeśli ktoś nie rozumie.


Użytkownik aSiorr edytował ten post 30.11.2018 03:13
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 30.11.2018

Literówki poprawione , dodane dodatkowe wskazówki

Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 30.11.2018

Good job, here's the reward: :cycki:

Odpowiedz

  • +
  • -
tytusek - zdjęcie tytusek 30.11.2018

Dodam od siebie, ze wina moga byc tez mapy, wiec warto czasami zamiast  wylaczania pluginów sprawdzic na jakiej mapie byl ten blad.

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 01.12.2018

W końcu po tylu latach ktoś to zrobił :D

 

Anyway, było kiedyś AMXX'owe FAQ. Ono upadło czy co się z nim stało?

Odpowiedz

  • +
  • -
tytusek - zdjęcie tytusek 04.12.2018

protip [wiem ze to wejdzie w punkt amxmodx / dodatki ] - pluginy oparte o mysql, siądzie baza danych np sklepusms przy zmianie mapy --> crash, siadzie strona na ktorej socket w pluginie wysyla i pobiera jakies zadania --> crash

Odpowiedz

  • +
  • -
_McHappy - zdjęcie _McHappy 05.12.2018

Czasem dobrze jest zacząć od wyłączania modułów-pluginów metamod'a - w tym samego amxx'a. Pozwala to wykluczyć problemy związane z

  • błędną konfiguracją startową serwera
  • funkcjonowaniem silnika (re)HLDS / metamoda
  • mapami i wszelkimi domyślnie ładowanymi zasobami (modele, sprite'y)
Odpowiedz