Падение сервера во время рестарта
#1

Всем привет. Сразу суть проблемы:
Она возникает при вводе в консоль gmx. Крашдетект причину определить не может (запускается самый первый, с этим всё в порядке, но если кому всё-же интересно, логи ниже). Причём падает сервер сразу после ввода gmx, то есть он даже не успевает выключиться (у меня при выходе из мода стоят принты). Но есть одно но: "работает" это всё, при условии что игрока несколько раз кикнет с сервера.
Также вопрос (если кому-то мало информации): может ли это быть например из-за того, что я не убил таймер при выходе из мода, или тому подобное?

server_log.txt:
PHP код:
[12:09:10Incoming connection127.0.0.1:56849
[12:09:10] [joinNickName has joined the server (0:127.0.0.1)
Console inputgmx
[12:09:20] [partNickName has left the server (0:2)
[
12:09:20] [debugServer crashed due to an unknown error
[12:09:20] [debugNative 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 Server0.3z-R4
Exception At Address
0x7FFDA000 Module: (Unknown)
Registers:
EAX0x0012FE28    EBX0x00000000    ECX0x00000000    EDX0x00000000
ESI
0x00000000    EDI0x00000000    EBP0x0049833A    ESP0x0012FFE4
EFLAGS
0x00010286
Stack
:
+
00000x00000000   0x00000000   0x00000000   0x00000000
+00100x0049833A   0x7FFDA000   0x00000000   0x78746341
+00200x00000020   0x00000001   0x00003020   0x000000DC
+00300x00000000   0x00000020   0x00000000   0x00000014
+00400x00000001   0x00000007   0x00000034   0x0000017C
+00500x00000001   0x00000000   0x00000000   0x00000000
+00600x00000000   0x00000000   0x00000002   0x1A26EF4E
+00700x00000298   0x00000044   0x000002E0   0x00000260
+00800x00000000   0xF33271BA   0x00000540   0x0000004A
+00900x0000058C   0x0000031E   0x00000000   0x2D59495B
+00A00x000008AC   0x00000032   0x000008E0   0x00000300
+00B00x00000000   0x32CEEACD   0x00000BE0   0x00000042
+00C00x00000C24   0x00000336   0x00000000   0x38505FC8
+00D00x00000F5C   0x0000005E   0x00000FBC   0x00000368
+00E00x00000000   0xB1280544   0x00001324   0x00000056
+00F00x0000137C   0x00000398   0x00000010   0x00000009
+01000x000000EC   0x00000002   0x00000001   0x0000017C
+01100x000015D0   0x00000001   0x00000002   0x0000174C
+01200x000004B4   0x00000001   0x00000003   0x00001C00
+01300x00000E8C   0x00000001   0x00000004   0x00002A8C
--------------------------
Loaded Modules:
samp-server.exe    A0x00400000 0x004F6000    (D:\С диска С\Рабстол\Файлы справа\samp03z_svr_R4_win32\samp-server.exe)
ntdll.dll    A0x779A0000 0x77ADC000    (C:\Windows\SYSTEM32\ntdll.dll)
kernel32.dll    A0x75EE0000 0x75FB4000    (C:\Windows\system32\kernel32.dll)
KERNELBASE.dll    A0x75BF0000 0x75C3B000    (C:\Windows\system32\KERNELBASE.dll)
SHELL32.dll    A0x76AD0000 0x7771A000    (C:\Windows\system32\SHELL32.dll)
msvcrt.dll    A0x777A0000 0x7784C000    (C:\Windows\system32\msvcrt.dll)
SHLWAPI.dll    A0x75E70000 0x75EC7000    (C:\Windows\system32\SHLWAPI.dll)
GDI32.dll    A0x75E20000 0x75E6E000    (C:\Windows\system32\GDI32.dll)
USER32.dll    A0x767C0000 0x76889000    (C:\Windows\system32\USER32.dll)
LPK.dll    A0x75ED0000 0x75EDA000    (C:\Windows\system32\LPK.dll)
USP10.dll    A0x76720000 0x767BD000    (C:\Windows\system32\USP10.dll)
WSOCK32.dll    A0x71E10000 0x71E17000    (C:\Windows\system32\WSOCK32.dll)
WS2_32.dll    A0x76180000 0x761B5000    (C:\Windows\system32\WS2_32.dll)
RPCRT4.dll    A0x77850000 0x778F2000    (C:\Windows\system32\RPCRT4.dll)
NSI.dll    A0x77B30000 0x77B36000    (C:\Windows\system32\NSI.dll)
WINMM.dll    A0x72800000 0x72832000    (C:\Windows\system32\WINMM.dll)
IMM32.DLL    A0x77B00000 0x77B1F000    (C:\Windows\system32\IMM32.DLL)
MSCTF.dll    A0x75CC0000 0x75D8C000    (C:\Windows\system32\MSCTF.dll)
dbghelp.dll    A0x62220000 0x6230B000    (C:\Windows\system32\dbghelp.dll)
MSVCP100.dll    A0x61710000 0x61779000    (C:\Windows\system32\MSVCP100.dll)
MSVCR100.dll    A0x601A0000 0x6025F000    (C:\Windows\system32\MSVCR100.dll)
mswsock.dll    A0x75360000 0x7539C000    (C:\Windows\system32\mswsock.dll)
wshtcpip.dll    A0x74E20000 0x74E25000    (C:\Windows\System32\wshtcpip.dll)
NLAapi.dll    A0x742A0000 0x742B0000    (C:\Windows\system32\NLAapi.dll)
napinsp.dll    A0x71E80000 0x71E90000    (C:\Windows\system32\napinsp.dll)
sechost.dll    A0x77AE0000 0x77AF9000    (C:\Windows\SYSTEM32\sechost.dll)
pnrpnsp.dll    A0x71BC0000 0x71BD2000    (C:\Windows\system32\pnrpnsp.dll)
DNSAPI.dll    A0x75220000 0x75264000    (C:\Windows\system32\DNSAPI.dll)
winrnr.dll    A0x71BB0000 0x71BB8000    (C:\Windows\System32\winrnr.dll)
IPHLPAPI.DLL    A0x73DC0000 0x73DDC000    (C:\Windows\system32\IPHLPAPI.DLL)
WINNSI.DLL    A0x73DB0000 0x73DB7000    (C:\Windows\system32\WINNSI.DLL)
rasadhlp.dll    A0x70720000 0x70726000    (C:\Windows\system32\rasadhlp.dll
Upd: Происходит только тогда, когда на сервере кто-то есть.
Reply
#2

Код показывай.
Reply
#3

Ок, всё, что может быть так или иначе связано с крашем:

OnPlayerDisconnect (вызвался перед отключением):
PHP код:
public OnPlayerDisconnect(playeridreason)
{
    if(
AntiCheatInfo[playerid][pOnline])
    {
        if(!
IsPlayerNPC(playerid))
        {
            
KillTimer(AntiCheatInfo[playerid][pACTimerID]);
            if(
reason != 2Kick(playerid);
        }
        
AntiCheatInfo[playerid][pOnline] = false;
    }
    return 
1;

В OnGameModeExit как-раз таки, только принты и стоят.
Reply
#4

Отредактировал код выше, вот что получилось:
PHP код:
public OnPlayerDisconnect(playeridreason)
{
    if(
AntiCheatInfo[playerid][pOnline])
    {
        
AntiCheatInfo[playerid][pOnline] = false;
        if(!
IsPlayerNPC(playerid))
        {
            print(
"Вызвано 1.");
            
KillTimer(AntiCheatInfo[playerid][pACTimerID]);
            print(
"Вызвано 2.");
            if(
reason != 2Kick(playerid);
            print(
"Вызвано 3.");
        }
        print(
"Вызвано 4.");
    }
    return 
1;

И фишка в том, что при перезапуске вызываются все print'ы, без исключения, и сразу после этого сервер ложится. Пробовал на чистом моде просто при перезапуске в OnPlayerDisconnect пихать функции IsPlayerNPC, BlockIpAddress и GetServerVarAsInt, никаких нареканий, всё выполняется идеально.


Upd: После отдельного закомментирования каждой строки выявил, что проблема в этой:
pawn Код:
if(reason != 2) Kick(playerid);
Но как написано выше, краш идёт не сразу после её выполнения, и тем более непонятно, почему он вообще из-за этого идёт.. Есть какие мысли по этому поводу?
Reply
#5

Инклуды есть ?
Reply
#6

Quote:
Originally Posted by cm666
Посмотреть сообщение
Инклуды есть ?
Нет, тут уже дело вроде-бы прояснилось. Виноват повторный кик игрока при его выходе, но вот почему сервер из-за этого крашится - мне не известно.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)