24.09.2016, 21:10
всем привет.
столкнулся с проблемой падения, причину не могу понять.
Лог крашдетекта:
Собственно судя по этому проблема в строке 105759, которая находится в OnPlayerDisconnect
И самое интересное. вот эта строка.
строка находится в цикле.
и судя по информации с лога можно сделать вывод что проблема в pTemp. размер ее 1000, а обращение идет к ячейке 6426708.
и вот вопрос. как мог возникнуть такой адрес ячейки в цикле, когда он идет от 0 до 999.
До этого были похожие падения, где крашдетект в конечном итоге ругался на функцию ++ из стандартного инклуда float, здесь она тоже присутствует, может это тоже как то связано.
И почему в первой ошибке причина дисконнекта равна 58 ? это как?
столкнулся с проблемой падения, причину не могу понять.
Лог крашдетекта:
PHP Code:
[21:53:58] [debug] Server crashed while executing State99.amx
[21:53:58] [debug] AMX backtrace:
[21:53:58] [debug] #0 00621054 in public OnPlayerDisconnect (playerid=421, reason=58) at D:\gamemodes\gm171.pwn:105759
[21:53:58] [debug] #1 native Kick () from samp03svr
[21:53:58] [debug] #2 0066babc in public KickPublic (playerid=421) at D:\gamemodes\gm171.pwn:110288
[21:53:58] [debug] Run time error 4: "Array index out of bounds"
[21:53:58] [debug] Attempted to read/write array element at index 6426708 in array of size 1000
[21:53:58] [debug] AMX backtrace:
[21:53:58] [debug] #0 00621070 in SetPlayerDataToDefault (playerid=421) at D:\gamemodes\gm171.pwn:105759
[21:53:58] [debug] #1 001142d4 in public SSCANF_OnPlayerDisconnect (playerid=421, reason=2) at D:\gamemodes\gm171.pwn:22995
[21:53:58] [debug] #2 00001520 in public OnPlayerDisconnect (playerid=421, reason=2) at D:\pawno\include\sscanf.inc:260
[21:53:58] [debug] #3 native Kick () from samp03svr
[21:53:58] [debug] #4 0066babc in public KickPublic (playerid=421) at D:\gamemodes\gm171.pwn:110288
[21:53:58] [debug] Native backtrace:
[21:53:58] [debug] #0 f74019f0 in _Z13GetStackTraceRSt6vectorI10StackFrameSaIS0_EEPv () from plugins/crashdetect.so
[21:53:58] [debug] #1 f73faa62 in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so
[21:53:58] [debug] #2 f73fb764 in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so
[21:53:58] [debug] #3 f73fd6b4 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so
[21:53:58] [debug] #4 f740131d in ?? () from plugins/crashdetect.so
[21:53:58] [debug] #5 f7759410 in ?? ()
[21:53:58] [debug] #6 f7759430 in ?? ()
[21:53:58] [debug] #7 f7458667 in gsignal () from /lib/libc.so.6
[21:53:58] [debug] #8 f7459ea3 in abort () from /lib/libc.so.6
[21:53:58] [debug] #9 f7497a55 in ?? () from /lib/libc.so.6
[21:53:58] [debug] #10 f749f71d in ?? () from /lib/libc.so.6
[21:53:58] [debug] #11 f768d97f in _ZdlPv () from /lib/libstdc++.so.6
[21:53:58] [debug] #12 f768d9cb in _ZdaPv () from /lib/libstdc++.so.6
[21:53:58] [debug] #13 0807fef7 in ?? () from ./samp03svr
[21:53:58] [debug] #14 0808013d in ?? () from ./samp03svr
[21:53:58] [debug] #15 08074c3a in ?? () from ./samp03svr
[21:53:58] [debug] #16 080763fe in ?? () from ./samp03svr
[21:53:58] [debug] #17 f7737b2c in ?? () from /lib/libpthread.so.0
[21:53:58] [debug] #18 f752177e in clone () from /lib/libc.so.6
И самое интересное. вот эта строка.
PHP Code:
if( dz != playerid && pTemp[dz][pIsInHouseID] == pTemp[dz][pIsInHouseID] && pTemp[dz][pIsInHouse] == true ) Nodel ++;
PHP Code:
for( new dz = 0; dz < MAX_PLAYERS; dz ++ )
{
if( dz != playerid && pTemp[dz][pIsInHouseID] == pTemp[dz][pIsInHouseID] && pTemp[dz][pIsInHouse] == true ) Nodel ++;
}
и вот вопрос. как мог возникнуть такой адрес ячейки в цикле, когда он идет от 0 до 999.
До этого были похожие падения, где крашдетект в конечном итоге ругался на функцию ++ из стандартного инклуда float, здесь она тоже присутствует, может это тоже как то связано.
И почему в первой ошибке причина дисконнекта равна 58 ? это как?