Segmentation fault ustalenie miejsca problemu
DarkGL
30.11.2018
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.
- 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
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
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.
Rivit
01.12.2018
W końcu po tylu latach ktoś to zrobił
Anyway, było kiedyś AMXX'owe FAQ. Ono upadło czy co się z nim stało?
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
_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)