Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem z "stack error"


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 Eryk172

    Szukam niewiadomej

  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:407
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Dbn
Offline

Napisano 07.02.2016 00:40

Siemka, mam problem z pluginem, poniżej przedstawię wycinek kodu oraz błędy które się pojawiają na serwerze.

Liczę na pomoc, nie mam pomysłów jak to zrobić. Dzięki!  :D

L 02/02/2016 - 18:54:23: Info (map "jail_anka_v1") (file "addons/amxmodx/logs/error_20160202.log")
L 02/02/2016 - 18:54:23: [AMXX] Displaying debug trace (plugin "jail_api_jailbreak.amxx")
L 02/02/2016 - 18:54:23: [AMXX] Run time error 3: stack error 
L 02/02/2016 - 18:54:23: [AMXX]    [0] jail_api_jailbreak.sma::ForwardDayStartPre (line 2927)
L 02/02/2016 - 18:54:23: [AMXX]    [1] jail_api_jailbreak.sma::PreRoundStart (line 2712)
L 02/02/2016 - 18:54:23: [AMXX] Displaying debug trace (plugin "jail_api_jailbreak.amxx")
L 02/02/2016 - 18:54:23: [AMXX] Run time error 3: stack error 
L 02/02/2016 - 18:54:23: [AMXX]    [0] jail_api_jailbreak.sma::msg_TextMsg (line 2517)
L 02/02/2016 - 18:54:23: [AMXX] Displaying debug trace (plugin "jail_api_jailbreak.amxx")
L 02/02/2016 - 18:54:23: [AMXX] Run time error 3: stack error 
L 02/02/2016 - 18:54:23: [AMXX] Displaying debug trace (plugin "jail_api_jailbreak.amxx")
L 02/02/2016 - 18:54:23: [AMXX] Run time error 3: stack error 
L 02/02/2016 - 18:54:23: [AMXX]    [0] jail_api_jailbreak.sma::msg_TextMsg (line 2517)

Za każdym razem jest ten sam zestaw błędów, występuje to od razu po zmianie mapy.. i nie zawsze. Czasami. Do kilku razy dziennie.

public msg_TextMsg()
{	
	new message[32]; // (line 2517)
	get_msg_arg_string(2, message, 31);
	
	if(equal(message, "#Game_teammate_attack") || equal(message, "#Killed_Teammate"))
	return PLUGIN_HANDLED;
	
	if(equal(message, "#Terrorists_Win"))
	{
		set_msg_arg_string(2, "Wiezniowie dojechali klawiszy!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#CTs_Win"))
	{
		set_msg_arg_string(2, "Straznicy dobrze wykonali swoja robote!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Round_Draw"))
	{
		set_msg_arg_string(2, "Runda remisowa!")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Only_1_Team_Change"))
	{
		set_msg_arg_string(2, "Druzyne mozesz zmienic tylko raz!")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_SemiAuto"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb pol-automatyczny")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_BurstFire"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb serii")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_FullAuto"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb automatyczny")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Game_Commencing"))
	{
		set_msg_arg_string(2, "Za chwile rozpozcznie sie gra! Milej zabawy:-)");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Cannot_Be_Spectator"))
	{
		set_msg_arg_string(2, "Nie mozesz byc obserwatorem!");
		return PLUGIN_CONTINUE;
	}
	return PLUGIN_HANDLED;
}	

[...]

public PreRoundStart()
{
	ClearSyncHud(0, SyncHudObj1);
	ClearSyncHud(0, SyncHudObj2);
	ClearSyncHud(0, SyncHudObj3);
	lr_started = false;
	g_DuelA = 0;
	g_DuelB = 0;
	nr_duel = 0;
	nozoom = false;
	head = false;
	UsuwanieWydarzen();
	end_usun = true;
	szInfo = "";
	szInfo2 = "";
	szPoszukiwani = "";
	szFreeday = "";
	prowadzacy = 0;
	obsluga_dala = false;
	otwarte = false;
	pokaz_raz = false;
	czas_bronie = false;
	zabawa_wybrana = false;
	mode_gracza[WALKA] = false;
	mode_gracza[MIKRO] = false;
	mode_gracza[FF_TT] = false;
	mode_gracza[TT_GOD] = false;
	mode_gracza[CT_GOD] = false;
	mode_gracza[CT_NIE_MOZE_TT] = false;
	mode_gracza[TT_NIE_MOZE_CT] = false
	if(task_exists(ID_DZWIEK_POSZ))
	remove_task(ID_DZWIEK_POSZ);
	if(task_exists(ID_LOS_PROWADZACY))
	remove_task(ID_LOS_PROWADZACY);
	if(task_exists(ID_POJEDYNEK))
	remove_task(ID_POJEDYNEK);
	if(task_exists(ID_BONUS))
	remove_task(ID_BONUS);
	if(task_exists(ID_FREZZ))
	remove_task(ID_FREZZ);
	if(task_exists(2761234, 1))
	remove_task(2761234, 1);
	if(task_exists(ID_TASK_CELL))
	remove_task(ID_TASK_CELL);
	if(task_exists(ID_DOLACZ))
	remove_task(ID_DOLACZ);
	
	if(!czas_dolacz && ilosc_graczySAVE > 7 && jail_day > 1) {
		//ColorChat(0, 0, "^4[JailBreak]^3 Musicie wytrwac runde conajmniej 2 minuty! Nadal jest ^4 %s", dni_tygodnia[jail_day%7]);
	}
	else {
		jail_day++;
	}
	
	for(new i=0; i<=10; i++) {
		dane_dnia[i] = 0;
	}
	
	czas_dolacz = false;
	
	if(jail_day)
	{
		gTimeStart = get_systime();
		ForwardDayStartPre(jail_day%7); // (line 2712)
	}
}

[...]

ForwardDayStartPre(zabawa)
{
	new iRet
	new is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
	new czas = g_RoundTime+min(is_frezz, 0); // (line 2927)

	ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfo2, 512, 1), PrepareArray(dane_dnia, 10, 1), czas);
	id_zabawa = zabawa;

	new dane[1]
	dane[0] = zabawa;
	if(is_frezz)
	set_task(is_frezz+0.1, "ForwardDayStartPost", ID_FREZZ, dane, 1);
	else
	ForwardDayStartPost(dane);
}


  • +
  • -
  • 0

CoD Mod - IP: 91.224.117.15:27235      
JailBreak  -   IP: 91.224.117.67:27075     
Only de_dust2 -   IP: 193.33.176.197:27111   

Więcej serwerów na: www.NaFarciePL


#2 Eryk172

    Szukam niewiadomej

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:407
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Dbn
Offline

Napisano 07.02.2016 16:37

Pomyłka.. ten błąd występuje podczas crasha na serwerze


  • +
  • -
  • 0

CoD Mod - IP: 91.224.117.15:27235      
JailBreak  -   IP: 91.224.117.67:27075     
Only de_dust2 -   IP: 193.33.176.197:27111   

Więcej serwerów na: www.NaFarciePL


#3 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 08.02.2016 09:53

a stackerror occures if the heapsize is full, this usually occures on to huge/many variables or any leak in your plugin.

i z amxx.pl

 

W tym konkretnym publicu optymalizacja nie ms zbyt wiele sensu musisz zoptymalizować cały plugin pod względem używania pamięci

(to z tematu o podobnym problemie)
 
 
Czyli masz zbyt wiele zmiennych globalnych, lokalnych, które wykorzystują zbyt wiele pamięci.
Chyba optymalizacja to jedyne wyjście, ew. wyłącz zbędne pluginy.

  • +
  • -
  • 1

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#4 Eryk172

    Szukam niewiadomej

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:407
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Dbn
Offline

Napisano 08.02.2016 19:30

W sumie raczej błąd nie w tym, skoro jest ich za dużo nie powinno od razu wywalić serwera?

 

Wyłączę jakieś pluginy, to i tak błąd jest.. ;/


Użytkownik Eryk172 edytował ten post 08.02.2016 19:31

  • +
  • -
  • 0

CoD Mod - IP: 91.224.117.15:27235      
JailBreak  -   IP: 91.224.117.67:27075     
Only de_dust2 -   IP: 193.33.176.197:27111   

Więcej serwerów na: www.NaFarciePL


#5 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 08.02.2016 20:04

W sumie raczej błąd nie w tym, skoro jest ich za dużo nie powinno od razu wywalić serwera?

 

Wyłączę jakieś pluginy, to i tak błąd jest.. ;/

No nie do końca, bo masz jeszcze zmienne lokalne, które są umieszczane na stosie dopiero gdy funkcja zaczyna działać.

Może dodałeś jakąś pętlę która się czasami zapętla, a w środku jest tworzona zmienna.

 

Fajni byłoby gdyby serwery po crashu zapisywały logi ostatnio uruchamianych funkcji :)


  • +
  • -
  • 1

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#6 Eryk172

    Szukam niewiadomej

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:407
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Dbn
Offline

Napisano 08.02.2016 20:29

Masz na myśli żeby dodać log_to_file w każdej funkcji ? :D

 

Okej, a więc mamy patrzeć na wszystkie pluginy czy tylko na ten w którym występuje błąd


  • +
  • -
  • 0

CoD Mod - IP: 91.224.117.15:27235      
JailBreak  -   IP: 91.224.117.67:27075     
Only de_dust2 -   IP: 193.33.176.197:27111   

Więcej serwerów na: www.NaFarciePL


#7 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 09.02.2016 16:35

Nie wiem, musiałby się wypowiedzieć ktoś bardziej ogarnięty. Jeżeli dzieje się to często to wyłączaj pluginy po 3 i obserwuj.


  • +
  • -
  • 1

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#8 Eryk172

    Szukam niewiadomej

  • Autor tematu
  • Użytkownik

Reputacja: 41
Pomocny

  • Postów:407
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Dbn
Offline

Napisano 21.02.2016 19:57

Zabawiłem się w logi przy funkcjach.

I jest taki problem że public PreRoundStart()  wykonuje się w ciągu sekundy ok 200 razy.. co wywołuje forward.. serwer się przymula i crash.

 

Zawartość funckji:

register_event("HLTV", "PreRoundStart", "a", "1=0", "2=0");

[***]
public PreRoundStart() {
	czas_dolacz = false;
	lr_started = false;
	g_DuelA = 0;
	g_DuelB = 0;
	nr_duel = 0;
	nozoom = false;
	head = false;
	end_usun = true;
	szInfo = "";
	szInfo2 = "";
	szPoszukiwani = "";
	prowadzacy = 0;
	obsluga_dala = false;
	otwarte = false;
	pokaz_raz = false;
	czas_bronie = false;
	zabawa_wybrana = false;
	mode_gracza[WALKA] = false;
	mode_gracza[MIKRO] = false;
	mode_gracza[FF_TT] = false;
	mode_gracza[TT_GOD] = false;
	mode_gracza[CT_GOD] = false;
	mode_gracza[CT_NIE_MOZE_TT] = false;
	mode_gracza[TT_NIE_MOZE_CT] = false
	if(task_exists(ID_DZWIEK_POSZ))
	remove_task(ID_DZWIEK_POSZ);
	if(task_exists(ID_LOS_PROWADZACY))
	remove_task(ID_LOS_PROWADZACY);
	if(task_exists(ID_BONUS))
	remove_task(ID_BONUS);
	if(task_exists(ID_FREZZ))
	remove_task(ID_FREZZ);
	if(task_exists(2761234, 1))
	remove_task(2761234, 1);
	if(task_exists(ID_TASK_CELL))
	remove_task(ID_TASK_CELL);
	if(task_exists(ID_DOLACZ))
	remove_task(ID_DOLACZ);
	
	for(new i=0; i<=10; i++) {
		dane_dnia[i] = 0;
	}
	jail_day++;
	
	if(jail_day)
	{
		gTimeStart = get_systime();
		#if defined DEBUG
		log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre PreRoundStart");
		#endif
		ForwardDayStartPre(jail_day%7);
	}
	
	for(new i=1; i<=MAX;i++) {
		if(!is_user_connected(i) || is_user_hltv(i))
		continue;

		userreason[i] = random_num(1, charsmax(reasons) )
		
		if((gs_GetUserBanMIC(i) == 1 || gs_GetUserBanCT(i) == 1) && gTeam[i] == 2) {
			GdzieDojsc(i, 1)
		}
	}
}

Ktoś ma na to jakieś logiczne wyjaśnienie?


Użytkownik Eryk172 edytował ten post 21.02.2016 19:58

  • +
  • -
  • 0

CoD Mod - IP: 91.224.117.15:27235      
JailBreak  -   IP: 91.224.117.67:27075     
Only de_dust2 -   IP: 193.33.176.197:27111   

Więcej serwerów na: www.NaFarciePL


#9 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 28.02.2016 16:48

w którym miejscu dałeś log_to_file w tej funkcji?

 

 

Spróbuj ją zastąpić:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_logevent("Poczatek_Rundy", 2, "1=Round_Start")  
}
 
public Poczatek_Rundy()
{
	//code
}

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych