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