Краш
#1

Изредка сервер падает и крашдетект выдаёт это. Переполнение стека, но что его может вызывать? Во всех stock которые возвращают строки стоит debug и перед крашем данные функции не вызывались.

PHP Code:
[12:38:41] [debugRun time error 3"Stack/heap collision (insufficient stack size)"
[12:38:41] [debug]  Stack pointer (STKis 0x647FF40heap pointer (HEAis 0x6481520
[12:38:41] [debugAMX 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 
Reply
#2

в AMX backtrace только одна строчка?
Reply
#3

Да, собственно из-за этого и проблема с поисками причины... Пригодится любой совет.
Reply
#4

От самых первых версий мода во многих пабликах ещё остались new String с размером от 20 до 1000. Как думаете, может ли быть это причиной крашей? В теории может, если бы этот паблик вызвали 2-3 игрока почти одновременно...
Reply
#5

Увеличте размер стека и дело с концом.
Reply
#6

Решать нужно проблему, а не её симптомы)
Reply
#7

Quote:
Originally Posted by XemyL
View Post
От самых первых версий мода во многих пабликах ещё остались new String с размером от 20 до 1000. Как думаете, может ли быть это причиной крашей? В теории может, если бы этот паблик вызвали 2-3 игрока почти одновременно...
И всё же, как думаете?
Reply
#8

Quote:
Originally Posted by XemyL
View Post
И всё же, как думаете?
Павн машина однопоточна, так это не работает.
Reply
#9

Quote:
Originally Posted by eakwarp
View Post
Павн машина однопоточна, так это не работает.
Как то давно я провёл эксперимент. Использовал один глобальный массив для всех текстов. В итоге когда 2 игрока почти одновременно вводили одну и ту же команду, которая выводила форматированный текст, первому игроку вывело текст второго игрока. т.е. код сработал так:
format(...) - 1 игрок
format(...) - 2 игрок
SendClientMessage(...) - 1 игрок
SendClientMessage(...) - 2 игрок

Если бы был всего один поток, такой проблемы бы не было. Как тогда объяснить это явление?
Reply
#10

Quote:
Originally Posted by XemyL
View Post
Как то давно я провёл эксперимент. Использовал один глобальный массив для всех текстов. В итоге когда 2 игрока почти одновременно вводили одну и ту же команду, которая выводила форматированный текст, первому игроку вывело текст второго игрока. т.е. код сработал так:
format(...) - 1 игрок
format(...) - 2 игрок
SendClientMessage(...) - 1 игрок
SendClientMessage(...) - 2 игрок

Если бы был всего один поток, такой проблемы бы не было. Как тогда объяснить это явление?
Ваши кривые руки, по-моему отличное объяснение, павн однопоточен, это такая же истина, как то что квадрат квадратный, а не круглый.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)