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

Справочник вылетов


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

Если у Вас случился вылет, возможно, здесь есть описание его причины, и как это исправить.

Если он здесь еще не описан, и Вы нашли его причину, опишите это здесь, по аналогии с имеющимся. Самое главное в описании: платформа (ТЧ, ЧН, ЗП), строка line : xxx, причина.

 

Все вылеты из этой темы собраны ЗДЕСЬ.

 

Поскольку публикаций по ПРИЧИНАМ вылетов я давно уже не вижу, а вижу исключительно флуд, тема закрыта. Если Вы обнаружили вылет, который здесь не описан, и знаете, как его лечить - напишите модераторам в л/c.

Изменено пользователем Dennis_Chikin
  • Полезно 2
Ссылка на комментарий

Вылет в ЗП

Возможны вылеты? при попытке начать новую игру (или загрузки сохранения) с таким логом:

FATAL ERROR
[error]Expression    : error handler is invoked!
[error]Function      : invalid_parameter_handler
[error]File          : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
[error]Line          : 805
[error]Description   : 

stack trace:

Причина: Природа его происхождения скрыта в плохой совместимости анимации оружия с «руками у костюмов ГГ»

Но сам по себе вылет не критичен – так как при последующей попытке загрузка проходит удачно!

Изменено пользователем deadzone
  • Сомнительно 1
Ссылка на комментарий

Очередной экзотический вылет

 

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...s.t.a.l.k.e.r\gamedata\scripts\dialogs_global.script:332: attempt to index a nil value
 

stack trace:

 

 

порожден вот такой строкой:

    

                   aa[i] = dlg:AddPhrase(dialin[1], new_id, inp_id, -10000):GetPhraseScript()

 

 

Так вот, ни одна из переменных в этой строке, не является nil. Вопреки тому что утверждает лог.

Выводим данные перед этой строкой

                        zander_utils.arguments_to_str({aa, i, dialin[1], new_id, inp_id})
                        aa[i] = dlg:AddPhrase(dialin[1], new_id, inp_id, -10000):GetPhraseScript()

И получаем такие данные:

 TABLE:;
   {
   [KEY:  NUMBER:1] = VALUE:  TABLE:;
   Table value:
      {
      [KEY:  NUMBER:1] = VALUE:  USERDATA;
      [KEY:  NUMBER:2] = VALUE:  USERDATA;
      }
   [KEY:  NUMBER:2] = VALUE:  NUMBER:3;
   [KEY:  NUMBER:3] = VALUE:  STRING:esc_s1_story1;
   [KEY:  NUMBER:4] = VALUE:  NUMBER:1;
   [KEY:  NUMBER:5] = VALUE:  NUMBER:1;
   }
 
FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...s.t.a.l.k.e.r\gamedata\scripts\dialogs_global.script:332: attempt to index a nil value
 

stack trace:

Оказывается, id этой фразы, и id фразы к которой идет привязка, равны друг другу. оба - число 1. никто из них не равен nil, но вот такой вот неинформативный вылет.

 

 

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

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

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

Ссылка на комментарий

ни одна из переменных в этой строке, не является nil

Ты уверен? Попытка индексации nil'ового значения, а как же результат метода AddPhrase?

Я вообще говоря не уверен, но ИМХО ругань идет как раз на то, что результата нет. А нет его как раз потому, что ты там сказал про иды.

Что будет, если написать так?

local phrase = dlg:AddPhrase(dialin[1], new_id, inp_id, -10000)
if phrase then
aa[i] = phrase:GetPhraseScript()
else
get_console():execute('WTF? phrase is nil?')
end
Ну или типа того. Я к тому, если я прав, что вылет вполне штатный, просто гдето надо написать, что нельзя указывать одинаковые иды, но все равно это тут останется :)

Смущает то, что оба вылета - строка 332.

А меня нет, вверху могла быть пустая строка. Привязка логов к строкам в авторских скриптах бессмысленна. Это в готовых модах или вылетам на "чистых" версиях игры имеет смысл говорить. Изменено пользователем Desertir
  • Полезно 1

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Привет вылечил у себя вылет типа:

[error]Expression : ai().level_graph().valid_vertex_id(vertex->data().level_vertex_id())
[error]Function : CPatrolPathManager::select_point
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\patrol_path_manager.cpp
[error]Line : 164
[error]Description : patrol path[имя_пути], point on path [имя_точки_пути],object [объект_использующий_этот_путь]

У меня был заспавнен НПС у которого была простая логика: идем к точке А и смотрим в точку Б.

Но постоянно мучил этот вылет(( Не понимал в чем проблема, да и не понимаю... :russian_ru: , короче убрал я у своего НПСа галочку Used AI locations в SDK, собрал алл.спавн - вылет пропал.

 

В алл.спавне (если без СДК) чтобы убрать эту галочку, нужно по ходу после строки level_vertex_id у нужного нпс вставить вместо:

object_flags = 0xffffffbf (или что там будет)

вот это:

object_flags = 0xffffff3f

За скриптовый спавн не в курсе...

 

п.с. Спасибо за сообщение: http://www.amk-team.ru/forum/index.php?showtopic=1560&p=883457

Мой архив

Сталкером не занимаюсь.

Ссылка на комментарий

@amik, буквально недавно столкнулся с таким вылетом. НПС был заспавнен через сквад-вариант (simulation.ltx), но не суть. Просто на месте не оказалось аи-сетки.

c57d8f0c86.png

Ссылка на комментарий

Помню была тема (не у нас на форуме) про исправление сгорания нпс в кострах. Помним же, есть две точки:

center_point = mil_camp_les_center ; центр костра, собираемся вокруг ее.
path_walk = mil_camp_les_center_task ; если что идем не в костер а в эту точку.

Так вот path_walk есть а все равно дохнут, в этом и был весь вопрос, и помню было предложение удалить АИ сетку под кострами (про рестриктор IN тоже было, не помогает - проверенно).

Так случилось что мне пришлось посадить двух нпс за такой костерчик, без АИ сетки.

6170512m.jpg

 

Это на складах, думаю вспомнили где:

[logic]
active = kamp@camp_fire_les_lider

[kamp@camp_fire_les_lider]
center_point = mil_camp_les_center
path_walk = mil_camp_les_center_task
meet = no_meet
soundgroup = mil_camp_lesok

Ну и второй:

[logic]
active = kamp@camp_fire_les

[kamp@camp_fire_les]
center_point = mil_camp_les_center
path_walk = mil_camp_les_center_task
meet = no_meet
soundgroup = mil_camp_lesok

 

Запускаю игру (4-й патч) они расходятся (будто у них логика nil),  начинаю в них стрелять получаю вылеты:

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...les\s.t.a.l.k.e.r\gamedata\scripts\xr_wounded.script:467: attempt to index field '?' (a nil value)
Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:157: attempt to index field 'object' (a nil value)
Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...ogram files\s.t.a.l.k.e.r\gamedata\scripts\_g.script:1113: bad argument #2 to 'format' (string expected, got nil)

 

При этом правленый у меня только  _g.script и в этой строке у меня там:

-- Крешнуть игру (после вывода сообщения об ошибке в лог)
function abort(fmt, ...)
local reason = string.format(fmt, ...) -- вот это!

Ставлю им активную логику nil, стреляю - все хорошо! Остаюсь довольным и вылетов нема.

 

Есть модик с этим вылетом, можно все проверить: https://yadi.sk/d/hXF_dFH_cQzsp (из моей подписи про логику, удалять ее не буду раз уж так) стреляйте в тех кто уходит из того лагеря.

 

Еще одно искал точку mil_camp_les_center в way_l07_military не нашел, хотя в СДК она видна, она оказалась в way__level_unknown.ltx в котором содержатся все пути которые находятся за АИ сеткой.

Я еще раньше пробовал из него удалить такие точки как bar_bar_square_2_place_1_look, bar_bar_square_2_place_2_walk, bar_bar_square_2_place_3_walk Но получал вылет без лога, оказываются они использовались кем-то из нпс гулагом бара. Вернул их обратно - все заработало.

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

Мой архив

Сталкером не занимаюсь.

Ссылка на комментарий

Делал, не так давно справочник вылетов, правда сыроватый может кому пригодится http://yadi.sk/d/C2qJVuySWABiK

xr_gulag.script:1190: attempt to index field 'gulag' (a nil - смотрим строку 1190 для 1.0006, и видим там:
end

Понятно, что такого вылета в этой строке быть не может. То есть, работа проделана вроде как большая, а результаты - сомнительные. 8( dc

Изменено пользователем Dennis_Chikin
  • Сомнительно 1
Ссылка на комментарий
FATAL ERROR
 
[error]Expression    : i < (int)m_text.size()
[error]Function      : CUISubLine::Cut2Pos
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UISubLine.cpp
[error]Line          : 86
[error]Description   : CUISubLine::Cut2Pos - invalid parameter
 

stack trace:

Причина - достаточно странная, но... возникает это чудо в случае когда в метод db.actor:give_talk_message(text, texture, rect, info)

в качестве параметра text передана строка, сформированная таким образом

text = string.format("%s %s %s", t1, t2, t3) 

- если один из элементов t1, t2, t3 является пустой строкой, то будет этот вылет. т.е. видимо причина - два пробела подряд в строке? или два пробела по бокам от пустой строки.

Изменил формирование строки на такое

text = string.format("%s; %s; %s", t1, t2, t3)

 - и вылет исчез, при том что t-параметры оставались какими угодно, и пустыми строками в том числе.

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

  • Полезно 1

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

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

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

Ссылка на комментарий

@Zander_driver, тесты не эквивалентны, при добавлении доп. разделителей ничего нельзя сказать, строка поменялась совсем. Возможно стОит отловить конкретные значения (пустые они или нет, неважно), при которых происходит вылет, вколотить их непосредственно в строку и начать ее изменять. Как только вылет пропадет, будет установлена причина, которых кстати может быть больше.

Возможно двиг пытается распарсить строку по пробелам, чтобы выдать многострочное сообщение, не по середине слОва же обрезать, и встречает кактойто затык. Это чисто предположение исходя из всего поста.

Метод класса в ЛуаБинде та же функция, скорее всего, там тоже чтото неладно с данными.

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

@Desertir, чего? Это с каких пор в формате паттерны появились? Может я пропустил чего? Явно видно что парсится до передачи в функцию, так какое тогда распарсивание по пробелам может быть?
С классом нужно простой эксперимент провести, написать его можно as is на метатаблицах и попробовать вызвать оттуда, поймем косячит пысовский код или сам луа, и вся чертовщина ясна будет.
А так если точки с запятой не нужны можно костыль написать, типа:


t1 = (not t1 or t1 == "") and "" or t1.." "
t2 = (not t2 or t2 == "") and "" or t2.." "
t3 = (not t3 or t3 == "") and "" or t3
text = t1..t2..t3
if text ~= "" then
text:match('^%s*(.*%S)')
--...
else
exit()
end
Изменено пользователем Kirgudu
Ссылка на комментарий
Это с каких пор в формате паттерны появились? Может я пропустил чего? Явно видно что парсится до передачи в функцию

Ты сам то о чем, какие паттерны, какой парсинг? Речь не о string.format, а give_talk_message, и считаю это очевидным. Сформированная строка отправляется движку, вот там и косяк. Ни о каком (рас)парсинге в скриптах я не говорю.

Я читал лог вылета, и как мы видим, там чтото не так с i < (int)m_text.size() в методе CUISubLine::Cut2Pos. Исходя из этого я сделал предположение, что движок, выводя на экран сообщение, делит его на строки, и выводит уже многострочное сообщение. А может быть и нет.

И не надо никаких костылей, некоторые умные люди заключают выводимые данные в скобки/кавычки и т.п. А если надо сформировать именно нормальное сообщение, чтобы человек прочел без скобочек/кавычек, то проверяют данные.

PS: за такие костыли в продакшене прогера могут и без премии оставить, да и без работы...

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

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

 

 

Возможно стОит отловить конкретные значения (пустые они или нет, неважно), при которых происходит вылет, вколотить их непосредственно в строку и начать ее изменять. Как только вылет пропадет, будет установлена причина, которых кстати может быть больше.

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

 

 

PS: за такие костыли в продакшене прогера могут и без премии оставить, да и без работы...

В сталкермодинге вообще нехорошая привычка у всех - решать все проблемы всяческими костылями, а не устранением самой проблемы. Может оттого они и копятся с годами, как снежный ком...

  • Согласен 2

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

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

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

Ссылка на комментарий
FATAL ERROR
 
[error]Expression    : (*elements.begin())->numberOfGeoms()
[error]Function      : CPHShell::preBuild_FromKinematics
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\PHShell.cpp
[error]Line          : 616
[error]Description   : No physics shapes was assigned for model or no shapes in main root bone!!!
 

stack trace:

Возникает из-за модели НПС, у которой не настроены шейпы (простите мой лексикон, если он не совсем корректен, я не моделлер, но думаю вы поняли о чем идет речь). Если быть точнее - повидимому когда такая модель пытается совершать определенные анимации. Так что вариантов проявления может быть много. Лечение - найти недоработанную модель и прогнать через СДК или заменить на другую.

Плохо то что в самом логе нет никакого указания на то, какая именно модель вызвала вылет. Это придется выяснять самостоятельно. Могу лишь поделиться методикой как у себя ее ловил. Вылет происходил от анимации, являющейся реакцией на хит, причем почему-то только от аномалий. Скрипты успевали отработать хит-коллбек нпс перед вылетом, в коллбеке я брал нетпакет нпс, вытаскивал оттуда визуал и сбрасывал в лог. Так и нашел виновную модель. Хотя вероятно вылет может происходить и при каких-то иных действиях модели, не связанных с хитом.

  • Полезно 4

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

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

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

Ссылка на комментарий

 

FATAL ERROR

 
 [error]Expression    : <no expression>
 [error]Function      : _terminate
 [error]File          : xrDebugNew.cpp
 [error]Line          : 883
 [error]Description   : Unexpected application termination
 
 DEBUG CONTEXT DUMP:

 
Возникает если в SDK при настройка модели вы не задействовали  Bone Parts

c5f7f007f20ffa9e53e404b22f49e02e25d70320


2d658de32ce5a4aa9ec5274e2356644925d70320


 

  • Спасибо 1
  • Не нравится 1
  • Сомнительно 1

ba9599747b.png  36914dd0ee.png

Ссылка на комментарий

FATAL ERROR

[error]Expression : M2.valid()
[error]Function : attachable_hud_item::anim_play
[error]File : E:\priquel\sources\engine\xrGame\player_hud.cpp
[error]Line : 350
[error]Description : model has no motion [idle]
[error]Arguments : dynamics\devices\hud\бла-бла-бла.ogf


stack trace:

ЧН.

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

Лечение соотв. касается в правильности указания названия анимации в модели.

Изменено пользователем Kirgudu
  • Нравится 1
  • Полезно 1
Ссылка на комментарий

При загрузке одной из локаций стало стабильно выбивать игру с таким логом:

Загрузка шейдеров...
stack trace:

0023:0049FF36 XR_3DA.exe, CBlender_Compile::_lua_Compile()
0023:00493DD0 XR_3DA.exe, CResourceManager::Create()

Возможно, как-то связано с текстурами, над которыми я работаю все последнее время. Но куда копать, даже близко не знаю. Если кто сталкивался с подобным - разъясните.


upd. Разобрался. На локации был "кривой" файл level. Скорее всего допустил где-то ошибку во время его правки и перекомпиляции.

Добавлено Dennis_Chikin,

Перетащил сюда. Хоть и "безлоговый", но для диагностики достаточно, imho.

  • Полезно 4
  • Сомнительно 1

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

От Дормидонт:

 

"Зов Припяти"

 

stack trace:

0023:099D0CC3 xrGame.dll, CDialogHolder::CDialogHolder()

 

в общем можно и так:

stack trace:

00**:0***0CC3 xrGame.dll, CDialogHolder::CDialogHolder()

 

Причина: npc:bone_position( "bip01_neck" ) примененное к химере.

Ну, то есть, как вариант, любая кость, которая отсутствует в модели того,к кому применяют.

 

Найдено НаноБот.

 

P.S. (DC) Однако, весьма забавное сочетание причины и выводимого в лог.

Изменено пользователем Dennis_Chikin
  • Сомнительно 1
Ссылка на комментарий

Так как справочник вылетов закрыт, и подобного вылета там не описано, напишу сюда. Может кому интересно будет.

Expression    : error handler is invoked!
Function      : invalid_parameter_handler
File          : E:\stalker\sources\trunk\xrCore\xrDebugNew.cpp
Line          : 804
Description   : 
 

 

 

Вылет возникает, при таких оплошностях.

 

 


Примерный вылет описан в 815, так что можно затереть сообщение.

Добавлено Kirgudu,

Перенёс в справочник.

  • Согласен 1
  • Полезно 1

                                                                                                                                                                                                                                             Sonata Arctica – Fade To Black [Metallica Cover]

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

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