Перейти к контенту

Вылеты без логов - в чём причины и как с ними бороться


Полтергейст

Рекомендуемые сообщения

Еще добавлю от себя о вылетах без лога. Хотя наверно это вещь очевидная...

При "как бы некритичных" синтаксических ошибках в скриптах, вызываемых из binder:update (по крайней мере из апдейта актора так) - получается вылет без лога вообще. т.е. В лог-файл ничего не сохраняется.

Речь идет не о ошибках типа "лишняя скобка" или "нехватает слова end", а к примеру, точка вместо двоеточия при вызове методов или неправильные типы данных (у меня например, game_object* попал туда где ожидалась строка, и получился такой вылет)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

Еще бывают вылеты без лога из-за партиклов, нормально работающих и обычно не вызывающих проблем - в тех случаях, когда (предположительно - в онлайне) слишком много объектов использующих партиклы. Я недавно тестировал систему спавна артов после выброса, во время теста вся локация была завалена артефактами - они вываливались из каждой аномалии. В итоге вылет.

С более мудреными, чем у артов, партиклами, для такой ситуации наверно будет достаточно и меньшего количества объектов.

 

В логе в таком случае остается только такое:

 

Scheduler tried to update object particle_instance
stack trace:

001B:0384C36F xrParticles.dll, PAPI::ParticleManager()

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

Ну это как бы одно и то же. Не важно, как был создан диалог - скриптом или xml-файлом. Когда из диалога происходит обращение к несуществующей функции - тогда и вылет.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Дополню то что у вас в шапке:

Ошибка в вызове функции из диалога: после имени функции скобки писать НЕ НУЖНО.

Вот так

Код

<action>file.func()</action>

 

писать нельзя, нужно вот так:

Код

<action>file.func</action>

 

(file - имя файла скрипта, func - имя функции)

Кроме этого, безлоговый вылет может случиться при вызове функции, которой нет. Но - только если ее использовать в прекондишене. В экшенах вылета не будет.

т.е. если в файле file нет функции func, то:

<action>file.func</action>

Не произойдет ничего

<precondition>file.func</precondition>

Будет вылет без лога.

То же самое если в файле file синтаксическая ошибка.

Изменено пользователем ColR_iT

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

Поймал еще один безлоговый вылет, банальный до безобразия, но все же.

При использовании функции level.object_by_id(x) во время перебора объектов, забыл ограничить максимальное значение, в итоге х стало больше 65535, и - вылет без лога.

Не проверял, но предполагаю, что для серверных объектов, при попытке получить объект по id более 65 с половиной тысяч, реакция будет такая же.

Это все на ТЧ

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение

Напоролся на безлоговый вылет в довольно специфических условиях.

Сам вылет происходит еще до главного меню. Но - class_registrator.script не менялся достаточно давно, и игра работала на нынешней его версии. Причина оказалась очень неожиданной. В xml-файлах в папке config/text/rus, в одном из файлов тег

<string id="pdb8_geostory_5">

дублировался два раза с одинаковым id. Обычно это вызывает вылет с вполне вменяемым логом

Expression    : m_pItemDataVector->end() == t_it
Function    : CXML_IdToIndex<class CInfoPortion>::InitInternal
File        : e:\stalker\sources\trunk\xr_3da\xrgame\xml_str_id_loader.h
Line        : 184
Description    : duplicate item id

 

 

Но - не в этот раз. Проверил неоднократно и убедился - встретив повторяющийся id, движок валится без лога не добравшись до главного меню. Предполагаю что причина - измененная библиотека xrLua.dll. (за авторством RvP). Вещь сама по себе очень удобная и полезная, но вот такую странность вызывает. Кто тоже ее использует - будьте внимательны.

  • Нравится 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...