Server Crash
#1

[04:04:44] [debug] Server crashed while executing HGRPv2.amx
[04:04:44] [debug] AMX backtrace:
[04:04:44] [debug] #0 native fclose () [0809acc0] from samp03svr
[04:04:44] [debug] #1 000d62a8 in ?? (0x0746603c, 0x088ac79 from HGRPv2.amx
[04:04:44] [debug] #2 000a5184 in ?? (0x00000000) from HGRPv2.amx
[04:04:44] [debug] #3 003d6e58 in public DynVeh_QueryFinish (0x00000001, 0x00000000) from HGRPv2.amx
[04:04:44] [debug] Native backtrace:
[04:04:44] [debug] #0 002f509b in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[04:04:44] [debug] #1 002f02d2 in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so
[04:04:44] [debug] #2 002f0ebc in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so
[04:04:44] [debug] #3 002f1366 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so
[04:04:44] [debug] #4 002f4cec in ?? () from plugins/crashdetect.so
[04:04:44] [debug] #5 0095c40c in ?? ()
[04:04:44] [debug] #6 0095c424 in ?? ()
[04:04:44] [debug] #7 004b3b11 in gsignal () from /lib/libc.so.6
[04:04:44] [debug] #8 004b53ea in abort () from /lib/libc.so.6
[04:04:44] [debug] #9 004f39d5 in ?? () from /lib/libc.so.6
[04:04:44] [debug] #10 004f9e31 in ?? () from /lib/libc.so.6
[04:04:44] [debug] #11 004fc588 in ?? () from /lib/libc.so.6
[04:04:44] [debug] #12 004e99aa in fclose () from /lib/libc.so.6
[04:04:44] [debug] #13 0809acd4 in ?? () from ./samp03svr
[04:04:44] [debug] #14 08094054 in ?? () from ./samp03svr
[04:04:44] [debug] #15 002edb9c in _ZN11CrashDetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[04:04:44] [debug] #16 002f3d38 in ?? () from plugins/crashdetect.so
[04:04:44] [debug] #17 002fa1f8 in amx_Exec () from plugins/crashdetect.so
[04:04:44] [debug] #18 002f0218 in _ZN11CrashDetect9DoAmxExecEPii () from plugins/crashdetect.so
[04:04:44] [debug] #19 002f3aa9 in ?? () from plugins/crashdetect.so
[04:04:44] [debug] #20 00f7e5e1 in amx_Exec () from plugins/mysql_static.so
[04:04:44] [debug] #21 00f5c750 in _ZN9CCallback16ProcessCallbacksEv () from plugins/mysql_static.so
[04:04:44] [debug] #22 00f83f17 in ProcessTick () from plugins/mysql_static.so
[04:04:44] [debug] #23 080cf7b2 in ?? () from ./samp03svr
[04:04:44] [debug] #24 080ad3ca in ?? () from ./samp03svr
[04:04:44] [debug] #25 080a871e in ?? () from ./samp03svr
[04:04:44] [debug] #26 0049fd26 in __libc_start_main () from /lib/libc.so.6
[04:04:44] [debug] #27 0804b4d1 in ?? () from ./samp03svr
Reply
#2

post your code (DynVeh_QueryFinish)
Reply
#3

fclose function crashes the server if the file handle is not valid. In DynVeh_QueryFinish, there is atleast 1 more function (maybe 2) that calls fclose so compile the script with debug info (https://github.com/Zeex/samp-plugin-...ith-debug-info) to get the exact line.
Reply
#4

Quote:
Originally Posted by Scottas
Посмотреть сообщение
post your code (DynVeh_QueryFinish)
Код:
forward LoadDynamicGroupVehicles();
public LoadDynamicGroupVehicles()
{
    mysql_function_query(MainPipeline, "SELECT * FROM `groupvehs`", true, "DynVeh_QueryFinish", "ii", GV_QUERY_LOAD, 0);
    return 1;
}









forward DynVeh_QueryFinish(iType, iExtraID);
public DynVeh_QueryFinish(iType, iExtraID) {

 new
  iFields,
  iRows,
  iIndex,
  i = 0,
  sqlid,
  szResult[128];

 cache_get_data(iRows, iFields, MainPipeline);
 switch(iType) {
  case GV_QUERY_LOAD:
  {
      format(szResult, sizeof(szResult), "UPDATE `groupvehs` SET `SpawnedID` = %d", INVALID_VEHICLE_ID);
   mysql_function_query(MainPipeline, szResult, false, "OnQueryFinish", "i", SENDDATA_THREAD);
   while((iIndex < iRows) && (iIndex < MAX_DYNAMIC_VEHICLES)) {
       cache_get_field_content(iIndex, "id", szResult, MainPipeline); sqlid = strval(szResult);
    if((sqlid >= MAX_DYNAMIC_VEHICLES)) {// Array bounds check. Use it.
     format(szResult, sizeof(szResult), "DELETE FROM `groupvehs` WHERE `id` = %d", sqlid);
     mysql_function_query(MainPipeline, szResult, false, "OnQueryFinish", "i", SENDDATA_THREAD);
     return printf("SQL ID %d exceeds Max Dynamic Vehicles", sqlid);
    }
    cache_get_field_content(iIndex, "gID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_igID] = strval(szResult);
    cache_get_field_content(iIndex, "gDivID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_igDivID] = strval(szResult);
    cache_get_field_content(iIndex, "fID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_ifID] = strval(szResult);
    cache_get_field_content(iIndex, "rID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_irID] = strval(szResult);
    cache_get_field_content(iIndex, "vModel", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iModel] = strval(szResult);
                switch(DynVehicleInfo[sqlid][gv_iModel]) {
     case 538, 537, 449, 590, 569, 570: {
         DynVehicleInfo[sqlid][gv_iModel] = 0;
     }
    }
    cache_get_field_content(iIndex, "vPlate", DynVehicleInfo[sqlid][gv_iPlate], MainPipeline, 32);
    cache_get_field_content(iIndex, "vMaxHealth", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fMaxHealth] = floatstr(szResult);
    cache_get_field_content(iIndex, "vType", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iType] = strval(szResult);
    cache_get_field_content(iIndex, "vLoadMax", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iLoadMax] = strval(szResult);
    if(DynVehicleInfo[sqlid][gv_iLoadMax] > 6) {
                    DynVehicleInfo[sqlid][gv_iLoadMax] = 6;
    }
    cache_get_field_content(iIndex, "vCol1", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iCol1] = strval(szResult);
    cache_get_field_content(iIndex, "vCol2", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iCol2] = strval(szResult);
    cache_get_field_content(iIndex, "vX", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fX] = floatstr(szResult);
    cache_get_field_content(iIndex, "vY", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fY] = floatstr(szResult);
    cache_get_field_content(iIndex, "vZ", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fZ] = floatstr(szResult);
    cache_get_field_content(iIndex, "vVW", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iVW] = strval(szResult);
    cache_get_field_content(iIndex, "vInt", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iInt] = strval(szResult);
    cache_get_field_content(iIndex, "vDisabled", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iDisabled] = strval(szResult);
    cache_get_field_content(iIndex, "vRotZ", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fRotZ] = floatstr(szResult);
    cache_get_field_content(iIndex, "vUpkeep", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iUpkeep] = strval(szResult);
    i = 1;
    while(i <= MAX_DV_OBJECTS) {
     format(szResult, sizeof szResult, "vAttachedObjectModel%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i-1] = strval(szResult);
     format(szResult, sizeof szResult, "vObjectX%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectX][i-1] = floatstr(szResult);
     format(szResult, sizeof szResult, "vObjectY%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectY][i-1] = floatstr(szResult);
     format(szResult, sizeof szResult, "vObjectZ%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectZ][i-1] = floatstr(szResult);
     format(szResult, sizeof szResult, "vObjectRX%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectRX][i-1] = floatstr(szResult);
     format(szResult, sizeof szResult, "vObjectRY%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectRY][i-1] = floatstr(szResult);
     format(szResult, sizeof szResult, "vObjectRZ%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectRZ][i-1] = floatstr(szResult);
     i++;
    }
    i = 0;
    while(i < MAX_DV_MODS) {
     format(szResult, sizeof szResult, "vMod%i", i);
     cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iMod][i++] = strval(szResult);
    }
    
    if(400 < DynVehicleInfo[sqlid][gv_iModel] < 612) {
     if(!IsWeaponizedVehicle(DynVehicleInfo[sqlid][gv_iModel])) {
      DynVeh_Spawn(iIndex);
      //printf("[DynVeh] Loaded Dynamic Vehicle %i.", iIndex);
      for(i = 0; i != MAX_DV_OBJECTS; i++)
      {
       if(DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i] == 0 || DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i] == INVALID_OBJECT_ID) {
        DynVehicleInfo[sqlid][gv_iAttachedObjectID][i] = INVALID_OBJECT_ID;
        DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i] = INVALID_OBJECT_ID;
       }
      }
     } else {
      DynVehicleInfo[sqlid][gv_iSpawnedID] = INVALID_VEHICLE_ID;
     } 
    }
    iIndex++;
   }
  }
 }
 return 1;
}
Reply
#5

Change the code to
Код:
CMD:togbankrob(playerid, params[])
{
        if(PlayerInfo[playerid][pAdmin] == 6)
        {
            if(AdminDuty[playerid] != 1 && PlayerInfo[playerid][pAdmin] == 6)
                {
                        SendClientMessage(playerid,COLOR_WHITE, "You're not on-duty as admin. To access your admin commands you must be on-duty. Type /aduty to go on-duty.");
                        return 1;
                }
                if(BankRobStatus==1)
                {
                        BankRobStatus = 0;
                        SendClientMessage(playerid, COLOR_WHITE, "You have ENABLED Bank Robberies, Timer has been RESET");
                        KillTimer(banktime);
        //              banktime = SetTimer("BankRobReset", 5400000, false);
                }
                else
                {
                    BankRobStatus = 1;
                    SendClientMessage(playerid, COLOR_WHITE, "You have DISABLED Bank Robberies, Timer has been STOPPED");
                    KillTimer(banktime);
                }
        }
        else
        {
            SendClientMessage(playerid, COLOR_GRAD1, " You're not Authorized to use that command!");
                return 1;
        }
        return 1;
}
Reply
#6

Quote:
Originally Posted by Kebab-
Посмотреть сообщение
Change the code to
Код:
CMD:togbankrob(playerid, params[])
{
        if(PlayerInfo[playerid][pAdmin] == 6)
        {
            if(AdminDuty[playerid] != 1 && PlayerInfo[playerid][pAdmin] == 6)
                {
                        SendClientMessage(playerid,COLOR_WHITE, "You're not on-duty as admin. To access your admin commands you must be on-duty. Type /aduty to go on-duty.");
                        return 1;
                }
                if(BankRobStatus==1)
                {
                        BankRobStatus = 0;
                        SendClientMessage(playerid, COLOR_WHITE, "You have ENABLED Bank Robberies, Timer has been RESET");
                        KillTimer(banktime);
        //              banktime = SetTimer("BankRobReset", 5400000, false);
                }
                else
                {
                    BankRobStatus = 1;
                    SendClientMessage(playerid, COLOR_WHITE, "You have DISABLED Bank Robberies, Timer has been STOPPED");
                    KillTimer(banktime);
                }
        }
        else
        {
            SendClientMessage(playerid, COLOR_GRAD1, " You're not Authorized to use that command!");
                return 1;
        }
        return 1;
}
Wrong Thread
Reply
#7

Note: the Script ON windows Work


the problem is with linux


DynVeh_QueryFinish Code

Код:
forward DynVeh_QueryFinish(iType, iExtraID);
public DynVeh_QueryFinish(iType, iExtraID) {

	new
		iFields,
		iRows,
		iIndex,
		i = 0,
		sqlid,
		szResult[128];

	cache_get_data(iRows, iFields, MainPipeline);
	switch(iType) {
		case GV_QUERY_LOAD:
		{
		    format(szResult, sizeof(szResult), "UPDATE `groupvehs` SET `SpawnedID` = %d", INVALID_VEHICLE_ID);
			mysql_function_query(MainPipeline, szResult, false, "OnQueryFinish", "i", SENDDATA_THREAD);
			while((iIndex < iRows) && (iIndex < MAX_DYNAMIC_VEHICLES)) {
			    cache_get_field_content(iIndex, "id", szResult, MainPipeline); sqlid = strval(szResult);
				if((sqlid >= MAX_DYNAMIC_VEHICLES)) {// Array bounds check. Use it.
					format(szResult, sizeof(szResult), "DELETE FROM `groupvehs` WHERE `id` = %d", sqlid);
					mysql_function_query(MainPipeline, szResult, false, "OnQueryFinish", "i", SENDDATA_THREAD);
					return printf("SQL ID %d exceeds Max Dynamic Vehicles", sqlid);
				}
				cache_get_field_content(iIndex, "gID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_igID] = strval(szResult);
				cache_get_field_content(iIndex, "gDivID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_igDivID] = strval(szResult);
				cache_get_field_content(iIndex, "fID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_ifID] = strval(szResult);
				cache_get_field_content(iIndex, "rID", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_irID] = strval(szResult);
				cache_get_field_content(iIndex, "vModel", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iModel] = strval(szResult);
                switch(DynVehicleInfo[sqlid][gv_iModel]) {
					case 538, 537, 449, 590, 569, 570: {
					    DynVehicleInfo[sqlid][gv_iModel] = 0;
					}
				}
				cache_get_field_content(iIndex, "vPlate", DynVehicleInfo[sqlid][gv_iPlate], MainPipeline, 32);
				cache_get_field_content(iIndex, "vMaxHealth", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fMaxHealth] = floatstr(szResult);
				cache_get_field_content(iIndex, "vType", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iType] = strval(szResult);
				cache_get_field_content(iIndex, "vLoadMax", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iLoadMax] = strval(szResult);
				if(DynVehicleInfo[sqlid][gv_iLoadMax] > 6) {
                    DynVehicleInfo[sqlid][gv_iLoadMax] = 6;
				}
				cache_get_field_content(iIndex, "vCol1", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iCol1] = strval(szResult);
				cache_get_field_content(iIndex, "vCol2", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iCol2] = strval(szResult);
				cache_get_field_content(iIndex, "vX", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fX] = floatstr(szResult);
				cache_get_field_content(iIndex, "vY", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fY] = floatstr(szResult);
				cache_get_field_content(iIndex, "vZ", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fZ] = floatstr(szResult);
				cache_get_field_content(iIndex, "vVW", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iVW] = strval(szResult);
				cache_get_field_content(iIndex, "vInt", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iInt] = strval(szResult);
				cache_get_field_content(iIndex, "vDisabled", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iDisabled] = strval(szResult);
				cache_get_field_content(iIndex, "vRotZ", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fRotZ] = floatstr(szResult);
				cache_get_field_content(iIndex, "vUpkeep", szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iUpkeep] = strval(szResult);
				i = 1;
				while(i <= MAX_DV_OBJECTS) {
					format(szResult, sizeof szResult, "vAttachedObjectModel%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i-1] = strval(szResult);
					format(szResult, sizeof szResult, "vObjectX%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectX][i-1] = floatstr(szResult);
					format(szResult, sizeof szResult, "vObjectY%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectY][i-1] = floatstr(szResult);
					format(szResult, sizeof szResult, "vObjectZ%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectZ][i-1] = floatstr(szResult);
					format(szResult, sizeof szResult, "vObjectRX%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectRX][i-1] = floatstr(szResult);
					format(szResult, sizeof szResult, "vObjectRY%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectRY][i-1] = floatstr(szResult);
					format(szResult, sizeof szResult, "vObjectRZ%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_fObjectRZ][i-1] = floatstr(szResult);
					i++;
				}
				i = 0;
				while(i < MAX_DV_MODS) {
					format(szResult, sizeof szResult, "vMod%i", i);
					cache_get_field_content(iIndex, szResult, szResult, MainPipeline); DynVehicleInfo[sqlid][gv_iMod][i++] = strval(szResult);
				}
				
				if(400 < DynVehicleInfo[sqlid][gv_iModel] < 612) {
					if(!IsWeaponizedVehicle(DynVehicleInfo[sqlid][gv_iModel])) {
						DynVeh_Spawn(iIndex);
						//printf("[DynVeh] Loaded Dynamic Vehicle %i.", iIndex);
						for(i = 0; i != MAX_DV_OBJECTS; i++)
						{
							if(DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i] == 0 || DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i] == INVALID_OBJECT_ID) {
								DynVehicleInfo[sqlid][gv_iAttachedObjectID][i] = INVALID_OBJECT_ID;
								DynVehicleInfo[sqlid][gv_iAttachedObjectModel][i] = INVALID_OBJECT_ID;
							}
						}
					} else {
						DynVehicleInfo[sqlid][gv_iSpawnedID] = INVALID_VEHICLE_ID;
					}	
				}
				iIndex++;
			}
		}
	}
	return 1;
}
Reply
#8

I'm having the exact same problem! Please help!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)