Падение сервера во время рестарта -
OstGot - 31.01.2015
Всем привет. Сразу суть проблемы:
Она возникает при вводе в консоль gmx. Крашдетект причину определить не может (запускается самый первый, с этим всё в порядке, но если кому всё-же интересно, логи ниже). Причём падает сервер сразу после ввода gmx, то есть он даже не успевает выключиться (у меня при выходе из мода стоят принты). Но есть одно но: "работает" это всё, при условии что игрока несколько раз кикнет с сервера.
Также вопрос (если кому-то мало информации): может ли это быть например из-за того, что я не убил таймер при выходе из мода, или тому подобное?
server_log.txt:
PHP код:
[12:09:10] Incoming connection: 127.0.0.1:56849
[12:09:10] [join] NickName has joined the server (0:127.0.0.1)
Console input: gmx
[12:09:20] [part] NickName has left the server (0:2)
[12:09:20] [debug] Server crashed due to an unknown error
[12:09:20] [debug] Native backtrace:
[12:09:20] [debug] #0 00480730 in ?? () from samp-server.exe
[12:09:20] [debug] #1 004a66b1 in ?? () from samp-server.exe
[12:09:20] [debug] #2 0048817f in ?? () from samp-server.exe
[12:09:20] [debug] #3 004a6821 in ?? () from samp-server.exe
[12:09:20] [debug] #4 75f2ee1c in ?? () from C:\Windows\system32\kernel32.dll
[12:09:20] [debug] #5 77a037be in ?? () from C:\Windows\SYSTEM32\ntdll.dll
[12:09:20] [debug] #6 0049833a in ?? () from samp-server.exe
[12:09:20] [debug] #7 7ffda000 in ?? ()
crashinfo.txt:
PHP код:
--------------------------
SA-MP Server: 0.3z-R4
Exception At Address: 0x7FFDA000 Module: (Unknown)
Registers:
EAX: 0x0012FE28 EBX: 0x00000000 ECX: 0x00000000 EDX: 0x00000000
ESI: 0x00000000 EDI: 0x00000000 EBP: 0x0049833A ESP: 0x0012FFE4
EFLAGS: 0x00010286
Stack:
+0000: 0x00000000 0x00000000 0x00000000 0x00000000
+0010: 0x0049833A 0x7FFDA000 0x00000000 0x78746341
+0020: 0x00000020 0x00000001 0x00003020 0x000000DC
+0030: 0x00000000 0x00000020 0x00000000 0x00000014
+0040: 0x00000001 0x00000007 0x00000034 0x0000017C
+0050: 0x00000001 0x00000000 0x00000000 0x00000000
+0060: 0x00000000 0x00000000 0x00000002 0x1A26EF4E
+0070: 0x00000298 0x00000044 0x000002E0 0x00000260
+0080: 0x00000000 0xF33271BA 0x00000540 0x0000004A
+0090: 0x0000058C 0x0000031E 0x00000000 0x2D59495B
+00A0: 0x000008AC 0x00000032 0x000008E0 0x00000300
+00B0: 0x00000000 0x32CEEACD 0x00000BE0 0x00000042
+00C0: 0x00000C24 0x00000336 0x00000000 0x38505FC8
+00D0: 0x00000F5C 0x0000005E 0x00000FBC 0x00000368
+00E0: 0x00000000 0xB1280544 0x00001324 0x00000056
+00F0: 0x0000137C 0x00000398 0x00000010 0x00000009
+0100: 0x000000EC 0x00000002 0x00000001 0x0000017C
+0110: 0x000015D0 0x00000001 0x00000002 0x0000174C
+0120: 0x000004B4 0x00000001 0x00000003 0x00001C00
+0130: 0x00000E8C 0x00000001 0x00000004 0x00002A8C
--------------------------
Loaded Modules:
samp-server.exe A: 0x00400000 - 0x004F6000 (D:\С диска С\Раб. стол\Файлы справа\samp03z_svr_R4_win32\samp-server.exe)
ntdll.dll A: 0x779A0000 - 0x77ADC000 (C:\Windows\SYSTEM32\ntdll.dll)
kernel32.dll A: 0x75EE0000 - 0x75FB4000 (C:\Windows\system32\kernel32.dll)
KERNELBASE.dll A: 0x75BF0000 - 0x75C3B000 (C:\Windows\system32\KERNELBASE.dll)
SHELL32.dll A: 0x76AD0000 - 0x7771A000 (C:\Windows\system32\SHELL32.dll)
msvcrt.dll A: 0x777A0000 - 0x7784C000 (C:\Windows\system32\msvcrt.dll)
SHLWAPI.dll A: 0x75E70000 - 0x75EC7000 (C:\Windows\system32\SHLWAPI.dll)
GDI32.dll A: 0x75E20000 - 0x75E6E000 (C:\Windows\system32\GDI32.dll)
USER32.dll A: 0x767C0000 - 0x76889000 (C:\Windows\system32\USER32.dll)
LPK.dll A: 0x75ED0000 - 0x75EDA000 (C:\Windows\system32\LPK.dll)
USP10.dll A: 0x76720000 - 0x767BD000 (C:\Windows\system32\USP10.dll)
WSOCK32.dll A: 0x71E10000 - 0x71E17000 (C:\Windows\system32\WSOCK32.dll)
WS2_32.dll A: 0x76180000 - 0x761B5000 (C:\Windows\system32\WS2_32.dll)
RPCRT4.dll A: 0x77850000 - 0x778F2000 (C:\Windows\system32\RPCRT4.dll)
NSI.dll A: 0x77B30000 - 0x77B36000 (C:\Windows\system32\NSI.dll)
WINMM.dll A: 0x72800000 - 0x72832000 (C:\Windows\system32\WINMM.dll)
IMM32.DLL A: 0x77B00000 - 0x77B1F000 (C:\Windows\system32\IMM32.DLL)
MSCTF.dll A: 0x75CC0000 - 0x75D8C000 (C:\Windows\system32\MSCTF.dll)
dbghelp.dll A: 0x62220000 - 0x6230B000 (C:\Windows\system32\dbghelp.dll)
MSVCP100.dll A: 0x61710000 - 0x61779000 (C:\Windows\system32\MSVCP100.dll)
MSVCR100.dll A: 0x601A0000 - 0x6025F000 (C:\Windows\system32\MSVCR100.dll)
mswsock.dll A: 0x75360000 - 0x7539C000 (C:\Windows\system32\mswsock.dll)
wshtcpip.dll A: 0x74E20000 - 0x74E25000 (C:\Windows\System32\wshtcpip.dll)
NLAapi.dll A: 0x742A0000 - 0x742B0000 (C:\Windows\system32\NLAapi.dll)
napinsp.dll A: 0x71E80000 - 0x71E90000 (C:\Windows\system32\napinsp.dll)
sechost.dll A: 0x77AE0000 - 0x77AF9000 (C:\Windows\SYSTEM32\sechost.dll)
pnrpnsp.dll A: 0x71BC0000 - 0x71BD2000 (C:\Windows\system32\pnrpnsp.dll)
DNSAPI.dll A: 0x75220000 - 0x75264000 (C:\Windows\system32\DNSAPI.dll)
winrnr.dll A: 0x71BB0000 - 0x71BB8000 (C:\Windows\System32\winrnr.dll)
IPHLPAPI.DLL A: 0x73DC0000 - 0x73DDC000 (C:\Windows\system32\IPHLPAPI.DLL)
WINNSI.DLL A: 0x73DB0000 - 0x73DB7000 (C:\Windows\system32\WINNSI.DLL)
rasadhlp.dll A: 0x70720000 - 0x70726000 (C:\Windows\system32\rasadhlp.dll)
Upd: Происходит только тогда, когда на сервере кто-то есть.
Re: Падение сервера во время рестарта -
Stepashka - 31.01.2015
Код показывай.
Re: Падение сервера во время рестарта -
OstGot - 31.01.2015
Ок, всё, что может быть так или иначе связано с крашем:
OnPlayerDisconnect (вызвался перед отключением):
PHP код:
public OnPlayerDisconnect(playerid, reason)
{
if(AntiCheatInfo[playerid][pOnline])
{
if(!IsPlayerNPC(playerid))
{
KillTimer(AntiCheatInfo[playerid][pACTimerID]);
if(reason != 2) Kick(playerid);
}
AntiCheatInfo[playerid][pOnline] = false;
}
return 1;
}
В OnGameModeExit как-раз таки, только принты и стоят.
Re: Падение сервера во время рестарта -
OstGot - 31.01.2015
Отредактировал код выше, вот что получилось:
PHP код:
public OnPlayerDisconnect(playerid, reason)
{
if(AntiCheatInfo[playerid][pOnline])
{
AntiCheatInfo[playerid][pOnline] = false;
if(!IsPlayerNPC(playerid))
{
print("Вызвано 1.");
KillTimer(AntiCheatInfo[playerid][pACTimerID]);
print("Вызвано 2.");
if(reason != 2) Kick(playerid);
print("Вызвано 3.");
}
print("Вызвано 4.");
}
return 1;
}
И фишка в том, что при перезапуске вызываются
все print'ы, без исключения, и сразу после этого сервер ложится. Пробовал на чистом моде просто при перезапуске в OnPlayerDisconnect пихать функции IsPlayerNPC, BlockIpAddress и GetServerVarAsInt, никаких нареканий, всё выполняется идеально.
Upd: После отдельного закомментирования каждой строки выявил, что проблема в этой:
pawn Код:
if(reason != 2) Kick(playerid);
Но как написано выше, краш идёт не сразу после её выполнения, и тем более непонятно, почему он вообще из-за этого идёт.. Есть какие мысли по этому поводу?
Re: Падение сервера во время рестарта -
cm666 - 31.01.2015
Инклуды есть ?
Re: Падение сервера во время рестарта -
OstGot - 31.01.2015
Quote:
Originally Posted by cm666
Инклуды есть ?
|
Нет, тут уже дело вроде-бы прояснилось. Виноват повторный кик игрока при его выходе, но вот почему сервер из-за этого крашится - мне не известно.