Краш -
XemyL - 04.09.2014
Изредка сервер падает и крашдетект выдаёт это. Переполнение стека, но что его может вызывать? Во всех stock которые возвращают строки стоит debug и перед крашем данные функции не вызывались.
PHP Code:
[12:38:41] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[12:38:41] [debug] Stack pointer (STK) is 0x647FF40, heap pointer (HEA) is 0x6481520
[12:38:41] [debug] AMX backtrace:
[12:38:41] [debug] #0 00000008 in Float:operator++(Float:) (Float:oper=0.00000) at C:\Важное\GTA SA-MP\SA-MP Server 0.3z\pawno\include\float.inc:102
Re: Краш -
DartfoL - 04.09.2014
в AMX backtrace только одна строчка?
Re: Краш -
XemyL - 04.09.2014
Да, собственно из-за этого и проблема с поисками причины... Пригодится любой совет.
Re: Краш -
XemyL - 04.09.2014
От самых первых версий мода во многих пабликах ещё остались new String с размером от 20 до 1000. Как думаете, может ли быть это причиной крашей? В теории может, если бы этот паблик вызвали 2-3 игрока почти одновременно...
Re: Краш -
eakwarp - 04.09.2014
Увеличте размер стека и дело с концом.
Re: Краш -
XemyL - 04.09.2014
Решать нужно проблему, а не её симптомы)
Re: Краш -
XemyL - 04.09.2014
Quote:
Originally Posted by XemyL
От самых первых версий мода во многих пабликах ещё остались new String с размером от 20 до 1000. Как думаете, может ли быть это причиной крашей? В теории может, если бы этот паблик вызвали 2-3 игрока почти одновременно...
|
И всё же, как думаете?
Re: Краш -
eakwarp - 04.09.2014
Quote:
Originally Posted by XemyL
И всё же, как думаете?
|
Павн машина однопоточна, так это не работает.
Re: Краш -
XemyL - 04.09.2014
Quote:
Originally Posted by eakwarp
Павн машина однопоточна, так это не работает.
|
Как то давно я провёл эксперимент. Использовал один глобальный массив для всех текстов. В итоге когда 2 игрока почти одновременно вводили одну и ту же команду, которая выводила форматированный текст, первому игроку вывело текст второго игрока. т.е. код сработал так:
format(...) - 1 игрок
format(...) - 2 игрок
SendClientMessage(...) - 1 игрок
SendClientMessage(...) - 2 игрок
Если бы был всего один поток, такой проблемы бы не было. Как тогда объяснить это явление?
Re: Краш -
eakwarp - 04.09.2014
Quote:
Originally Posted by XemyL
Как то давно я провёл эксперимент. Использовал один глобальный массив для всех текстов. В итоге когда 2 игрока почти одновременно вводили одну и ту же команду, которая выводила форматированный текст, первому игроку вывело текст второго игрока. т.е. код сработал так:
format(...) - 1 игрок
format(...) - 2 игрок
SendClientMessage(...) - 1 игрок
SendClientMessage(...) - 2 игрок
Если бы был всего один поток, такой проблемы бы не было. Как тогда объяснить это явление?
|
Ваши кривые руки, по-моему отличное объяснение, павн однопоточен, это такая же истина, как то что квадрат квадратный, а не круглый.