PDA

Просмотр полной версии : Вылеты связанные с сигналкой в маршруте Суоярви


E69
01.03.2025, 20:02
Всем привет, последнюю неделю борюсь с такой штукой.

Выяснил, что OR некорректно воспринимает двузначные выходные TK_GR-KL в маршруте Суоярви. Они стоят возле вагоноопрокидывателя на станции Фабрика.

Симптомы такие:

а) в логах при загрузке маршрута с любой стартовой точки будут строки
Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: SignalObject trItem=6521, trackNode=1672 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6517, trackNode=1674 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6519, trackNode=1676 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6515, trackNode=1677 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6523, trackNode=1762 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6525, trackNode=1775 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6527, trackNode=1776 has SignalHead with undefined SignalType tk_gr-kl.

б) Тестовая сборка OR (версия T1.5.1-1546-g597dfc744, а также предыдущая) падает, если проехать близко к месту установки сигналов. Пишет такое:

Error: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в Orts.Simulation.Physics.Train.<>c.<UpdatePlayerTrainData>b__428_0(SignalHead x) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\Physics\Train.cs:строка 14794
в System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
в Orts.Simulation.Physics.Train.UpdatePlayerTrainDat a(Single maxDistanceM) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\Physics\Train.cs:строка 14794
в Orts.Simulation.RollingStocks.SubSystems.ScriptedT rainControlSystem.Update(Single elapsedClockSeconds) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\RollingStocks\SubSystems\TrainControlSystem.cs:с трока 833
в Orts.Simulation.RollingStocks.MSTSLocomotive.Updat e(Single elapsedClockSeconds) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\RollingStocks\MSTSLocomotive.cs:строка 2098
в Orts.Simulation.RollingStocks.MSTSDieselLocomotive .Update(Single elapsedClockSeconds) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\RollingStocks\MSTSDieselLocomotive.cs:строка 582
в Orts.Simulation.Physics.Train.physicsUpdate(Single elapsedClockSeconds) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\Physics\Train.cs:строка 2050
в Orts.Simulation.Physics.Train.Update(Single elapsedClockSeconds, Boolean auxiliaryUpdate) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\Physics\Train.cs:строка 1931
в Orts.Simulation.Simulator.Update(Single elapsedClockSeconds) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\Orts.Simulation\Simulatio n\Simulator.cs:строка 850
в Orts.Viewer3D.Viewer.Update(RenderFrame frame, Single elapsedRealTime) в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\View er.cs:строка 787
в Orts.Viewer3D.Processes.UpdaterProcess.Update() в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Proc esses\UpdaterProcess.cs:строка 128
в Orts.Viewer3D.Processes.UpdaterProcess.DoUpdate() в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Proc esses\UpdaterProcess.cs:строка 108
в Orts.Viewer3D.Processes.UpdaterProcess.UpdaterThre ad() в C:\Jenkins\jobs\Open Rails Testing\workspace\Source\RunActivity\Viewer3D\Proc esses\UpdaterProcess.cs:строка 74
в System.Threading.ExecutionContext.RunInternal(Exec utionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()

"Стабильная" сборка запускается, однако если посмотреть на головку светофора (она спрятана под насыпь, из кабины не видно) - огни не горят и TrackMonitor их не покажет, только тупиковые маркеры.

Для проверки можете использовать этот path, выберите местом отправления станцию Рудная:
https://disk.yandex.ru/d/tB4m_auUVmkq8w

в) Нежный классический МСТС работает корректно! :D Все светит, даже один огонь слегка заметен из-под насыпи.

г) В редакторе TSRE на Суоярви светофоры вроде бы ведут себя нормально, но вообще-то редактор может реагировать на них по-разному.

Почему я собственно так заинтересовался проблемой, - я использовал эти сигналы (TK_GR-kl и TK_GR-ov) на тестовом маршруте у себя. И внезапно заметил вылеты игры, редактор же в зависимости от версии удаляет сигналы при загрузке тайла либо падает при попытке их отредактировать (скажем, подвигать в пространстве).
Что ещё интереснее, проблема начала проявляться довольно внезапно, в январе я тестил сигналку и вылетов не было (и старый лог, насколько удалось проверить, был чистый - но специально за всем, конечно, не следил, пока проблемы не было).



Что ещё добавить?

- Подменял скрипты в маршруте на лежащие в папке OR, нет разницы между скриптами для OR и MSTS.

- Правил одну мелкую ошибку в sigcfg, упомянутую в логе, также не влияет ни на что.

- Остальные сигналы, например головки БКЗ с маневровым белым, работали без проблем!

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

- Воспроизвел ситуацию со схожим результатом на рабочем компе, где не было установлено игры.



Попробуйте запустить path и глянуть логи у себя, что ли :o

Буду думать, лечится ли это или надо что-то радикально менять в маршруте :confused:

Почтовик
01.03.2025, 20:28
Тоже самое
Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

WWWWWWWWW

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: Signal not found : TK_GR-KL.S n

Warning: SignalObject trItem=6521, trackNode=1672 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6517, trackNode=1674 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6519, trackNode=1676 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6515, trackNode=1677 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6523, trackNode=1762 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6525, trackNode=1775 has SignalHead with undefined SignalType tk_gr-kl.

Warning: SignalObject trItem=6527, trackNode=1776 has SignalHead with undefined SignalType tk_gr-kl.

+ ещё кучи ошибок на всякую ерунду (звуки, объекты, и пр)

E69
01.03.2025, 20:44
Спасибо.

Ну остальное не должно быть особо критично, к тому же понятно как поправить carspawn, звуки и т.п. А тут падает, причем а) непонятно, почему именно эти сигналы и б) не пойму точно, что изменилось :(

E69
02.03.2025, 16:39
Поскольку некоторые сборки OR от такого падают, придумал пока что костыль.

Решение временное - не устраняет причину, но сохраняет работоспособность.

Надо в файле .tdb пройтись заменой и поменять имена сигналов:
TK_GR-kl заменить на TK_WGR_kl
TK_GR-ov заменить на TK_WGR_MU-ov
После этого игра не вылетает, а сигналы работают - но уже по скрипту с маневровым огнем. Правда, огни могут не гореть, но для спрятанных сигналов это и не важно.

Чтобы поиграть без вылетов этого в целом достаточно. Измененный tdb вот (делайте бэкапы на всякий случай):

https://disk.yandex.ru/d/wqnT4Ym1lIzgVw





Если есть желание отредактировать маршрут, можно эти SignalItem в файлк .tdb замемнить на .EmptyItem и пересохранить тайл в TSRE. Тогда глючные сигналы удалятся, и можно вместо них поставить другие.


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