Коды ошибок и диагностики

Документация версии v0.1.0-beta.3Исходник на GitHub

Перевод исходной страницы на английском языке для OmsiLaunch 0.1.0-beta3. Нормативной является английская страница: при расхождениях приоритет имеют английская страница и код.

Эта страница — нормативный справочник по всем кодам из PublicErrorCodes (src/OmsiLaunch.Api/PublicErrorCodes.cs): 142 кода ошибок OL_E_ и одно предупреждение OL_W_, сгруппированные по категориям каталога, а также информационные диагностические коды, которые не являются ошибками. Для каждого кода указано, где его выдаёт текущий код, что он означает, как он доходит до вас (выброшенное исключение, поле результата, диагностическое сообщение, ответ плоскости управления или CLI-конверт) и что делать. Значения взяты из мест, где коды выдаются; если код определён, но в текущем коде нет пути, по которому он выдаётся, это указано явно.

Связанные страницы: публичный API, коды выхода, LaunchSpec, жизненный цикл сеанса, транзакции и восстановление после сбоя, локальная плоскость управления, runtime-управление, профили сеанса, постоянный плагин.

Как коды доходят до вас#

КаналЗначение
ИсключениеИсключение, Message которого начинается с кода (InvalidOperationException, IOException, TimeoutException, InvalidDataException, FileNotFoundException, ArgumentException, SessionProfileException). CLI извлекает код из сообщения и сопоставляет его с кодом выхода (CliProgram.Classify).
Диагностическое сообщение планаLaunchDiagnostic в SessionPlan.Diagnostics; любой код OL_E_ делает IsRunnable равным false (CLI: план NOT RUNNABLE, код выхода 1).
Диагностическое сообщение сеансаLaunchDiagnostic в SessionStatus.Diagnostics; состояние сеанса — Failed (код выхода CLI 1). OL_E_START_SESSION, OL_E_PROCESS_SUPERVISION и OL_E_RESTORE_FAILED оборачивают в своём сообщении внутренний код.
Runtime-результатRuntimeCommandResult.ErrorCode при Succeeded = false.
Runtime-детальRuntimeCommandResult.ErrorCode = OL_E_RUNTIME_OPERATION_FAILED, а конкретный код — первый токен Values["detail"] (вместе с Values["exception"]). Так передаются все коды InvalidOperationException/ArgumentException на стороне плагина.
Ответ управленияErrorCode ответа локальной плоскости управления (LocalControlResponse).
CLI-конвертerror.code в JSON-конверте (envelope) --json или <code>: <message> в консоли; указан код выхода.
ТелеметрияИмя runtime-события, которое хост сопоставляет с диагностическим сообщением сеанса.

Cli#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_CANCELLEDCliProgram.ClassifyНе было перехвачено исключение OperationCanceledException (Ctrl+C или отменённое ожидание клиента).CLI-конверт, код выхода 7Повторите команду.
OL_E_INTERNALCliProgram.ClassifyНе было перехвачено исключение без кода OL_E_: некорректный JSON в /spec, null в обязательном члене спецификации, непредвиденный сбой.CLI-конверт, код выхода 10Прочитайте сообщение и <root>\.omsilaunch\diagnostics\<sessionId>-host.log; исправьте входные данные; если причина неясна, сообщите о проблеме.
OL_E_TIMEOUTCliProgram.Classify; LocalControlPlane.TryRequestAsyncНе было перехвачено исключение TimeoutException без кода; либо клиент локального управления подключился к владельцу, который не ответил в пределах тайм-аута (владелец существует, поэтому это не сообщается как OL_E_NO_ACTIVE_SESSION). (Тайм-ауты почтового ящика (mailbox) вместо этого несут OL_E_RUNTIME_REQUEST_TIMEOUT.)CLI-конверт, ответ управления; код выхода 5 из Classify, код выхода 7 для ответа управленияПовторите попытку; проверьте, что OMSI и владелец отвечают.
OL_E_WINDOWS_HOST_MISSINGCliProgram.RunAsync (/silent)OmsiLaunchW.exe отсутствует рядом с OmsiLaunch.exe.CLI-конверт, код выхода 7Переустановите пакет.
OL_E_WINDOWS_HOST_START_FAILEDCliProgram.RunAsync (/silent)Process.Start для OmsiLaunchW.exe не вернул процесс.CLI-конверт, код выхода 7Проверьте файлы пакета и права доступа; запустите без /silent, чтобы увидеть ошибку.

Compatibility#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_BUILD_VALIDATION_FAILEDOmsiLaunchService.ApplyTelemetry по plugin.build.invalidВнутрипроцессная проверка build в плагине (профиль Omsi23004_692EBFBF плюс нативная проверка VMT) завершилась неудачей, хотя хост принял исполняемый файл: например, build Steam LAA из списка разрешённых с другой раскладкой в памяти или пропатченная OMSI.Диагностическое сообщение сеанса (Failed)Используйте build, проверенный в runtime; см. совместимость.
OL_E_UNSUPPORTED_BUILDSessionPlanner (omsi.profile.OMSI23004 недоступна)Omsi.exe отсутствует, либо его размер/SHA-256 не совпадает ни с отпечатком профиля, ни со списком разрешённых.Диагностическое сообщение планаУстановите поддерживаемый build OMSI 2.3.004.
OL_E_UNSUPPORTED_OPERATING_SYSTEMSessionPlanner (runtime.current-windows-x64 недоступна); также выбрасывается CurrentWindowsX64Platform.ValidateCurrent, который сервис не вызываетНе Windows 10 или новее, либо ОС или процесс хоста не x64.Диагностическое сообщение плана (код выхода CLI 3, если выброшено исключение)Запускайте на 64-разрядной Windows 10 или новее.
OL_E_UNSUPPORTED_OS_ARCHITECTUREТолько CurrentWindowsX64Platform.ValidateCurrentАрхитектура ОС или хоста не x64. Сервис не вызывает ValidateCurrent; в текущем коде нет пути, по которому код выдаётся.Выбрасывается (PlatformNotSupportedException) только этим методомСм. исходный код src/OmsiLaunch.Process/RuntimePlatform.cs.

Content#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_ENTRYPOINT_NOT_FOUNDLaunchValidationNEW_MAP без EntrypointIdentity и с незаданным или отрицательным PresentedEntrypointIndex.Диагностическое сообщение планаЗадайте PresentedEntrypointIndex (/entrypoint-index:<n>); точки входа можно найти с помощью /list:entrypoints /map:<id>.
OL_E_ENTRYPOINT_REQUIREDSessionPlanner (world.presented-entrypoint недоступна)Карта NEW_MAP определена, но нет ни представленного индекса, ни идентичности. Всегда сопровождает OL_E_ENTRYPOINT_NOT_FOUND.Диагностическое сообщение планаТо же.
OL_E_HOF_NOT_FOUNDSessionPlannerPlayerVehicle.Hof не является установленным Vehicles\...\*.hof.Диагностическое сообщение планаИспользуйте идентичность из /list:hofs. (Поля транспортного средства игрока на этом build в любом случае делают план неисполнимым.)
OL_E_MAP_NOT_FOUNDLaunchValidation; SessionPlannerПроверка: NEW_MAP с незаданным MapIdentity или не в форме maps\<dir>\global.cfg. Планировщик: карта не установлена.Диагностическое сообщение планаИспользуйте идентичность из /list:maps.
OL_E_NOT_FOUNDCliProgram.ClassifyНе было перехвачено исключение FileNotFoundException/DirectoryNotFoundException без кода, например /list:repaints с неизвестным /vehicle-scope или /list:entrypoints с неизвестным /map.CLI-конверт, код выхода 6Исправьте идентичность.
OL_E_REPAINT_NOT_FOUNDSessionPlannerPlayerVehicle.Repaint не является элементом .cti этой модели (проверяется только при заданном Model).Диагностическое сообщение планаИспользуйте идентичность из /list:repaints /vehicle-scope:<bus>.
OL_E_SITUATION_MAP_NOT_FOUNDSessionPlannerКарта, на которую ссылается выбранный .osn, не установлена.Диагностическое сообщение планаУстановите карту или выберите другую ситуацию.
OL_E_SITUATION_NOT_FOUNDLaunchValidation; SessionPlannerSAVED_SITUATION без SituationIdentity, либо .osn не установлен.Диагностическое сообщение планаИспользуйте идентичность из /list:situations.
OL_E_VEHICLE_NOT_FOUNDSessionPlannerPlayerVehicle.Model не является установленным Vehicles\...\*.bus.Диагностическое сообщение планаИспользуйте идентичность из /list:vehicles.

Installation#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_INSTALLATION_BUSYInstallationLease.Acquire; OmsiLaunchService.RecoverPendingAsync; FileConfigurationTransaction.RestorePendingAsyncАренду установки (lease) (Local\OmsiLaunch.Installation.<hash>) удерживает другой владелец в этом сеансе входа в систему, либо ещё жив процесс OMSI, записанный в журнал (PID + время создания + путь к исполняемому файлу; или любой Omsi.exe из корневого каталога для журнала после HandoffCreated без PID).Запуск: диагностическое сообщение сеанса через OL_E_START_SESSION. Восстановление после сбоя: выбрасывается (InvalidOperationException / IOException). Код выхода CLI 7.Остановите другого владельца (session stop) или дождитесь завершения OMSI, затем повторите попытку или выполните /recover.
OL_E_INSTALLATION_NOT_FOUNDLaunchValidationInstallation.RootPath пуст.Диагностическое сообщение планаПередайте каталог установки.
OL_E_INSTALLATION_NOT_WRITABLESessionPlanner (transaction.exact-restore недоступна); также ValidateCurrentКорневой каталог не существует, имеет атрибут «только для чтения» или не содержит каталога plugins\.Диагностическое сообщение планаУкажите реальную установку OMSI, доступную для записи.
OL_E_PERMANENT_PLUGIN_HASH_MISMATCHRuntimeArtifactSet.ValidateInstalled (план и запуск)Установленный файл plugins\OmsiLaunch.* отличается от hash в release-manifest.json (или от эталонного замыкания плагина при отсутствии манифеста).Диагностическое сообщение плана (план неисполним, код выхода CLI 1); диагностическое сообщение сеанса через OL_E_START_SESSION — только если файлы изменились между планированием и запускомПереустановите пакет OmsiLaunch, чтобы plugins\ и манифест совпадали.
OL_E_PERMANENT_PLUGIN_MANIFEST_INCOMPLETERuntimeArtifactSet.ValidateInstalled (план и запуск)В манифесте нет записи для обязательного файла плагина.Диагностическое сообщение плана; диагностическое сообщение сеанса через OL_E_START_SESSION при той же гонке, что вышеПереустановите пакет.
OL_E_PERMANENT_PLUGIN_MISSINGRuntimeArtifactSet.ValidateInstalled (план и запуск)Обязательный файл plugins\OmsiLaunch.* отсутствует в установке OMSI, либо файл plugins/, указанный в release-manifest.json, не установлен.Диагностическое сообщение плана; диагностическое сообщение сеанса через OL_E_START_SESSION при той же гонке, что вышеУстановите замыкание постоянного плагина (набор его файлов) (установка).
OL_E_PLATFORM_CAPABILITY_MISSINGТолько CurrentWindowsX64Platform.ValidateCurrentCurrentPlatformSupported равно false. Сервис этот метод не вызывает; в текущем коде нет пути, по которому код выдаётся.Выбрасывается только этим методомСм. исходный код.
OL_E_RELEASE_MANIFEST_INVALIDReleaseManifest.TryReadPluginHashes / ParsePluginHashesrelease-manifest.json пуст, не является JSON, не содержит массива files или содержит запись без path/sha256, hash не из 64 шестнадцатеричных цифр, абсолютный путь, путь с :, пустым сегментом, сегментом . или .., либо путь, указанный дважды (сравнение без учёта регистра, / и \ эквивалентны). UTF-8 BOM допускается.План: обёрнут в OL_E_RUNTIME_ARTIFACT_MISSING; запуск: через OL_E_START_SESSIONПереустановите пакет.

InvalidArgument#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_INVALID_ARGUMENTLaunchValidation; CliInput.Parse/ClassifyПроверка: Date.Value/Time.Value задано, а режим не Explicit. CLI: неизвестный флаг, отсутствующее значение, неверное целое число или диапазон, /saved в сочетании с /map//entrypoint, неизвестный маршрут команды, любое ArgumentException/FormatException без кода.Диагностическое сообщение плана; CLI-конверт, код выхода 2Исправьте аргумент.
OL_E_INVALID_SETTING_VALUEConfigurationCatalog.CreatePatch (запуск)Значение семантического параметра вне диапазона, не логическое, не из допустимого набора или имеет неверный формат (graphics.particles требует четыре поля). При планировании значения не проверяются.Диагностическое сообщение сеанса через OL_E_START_SESSIONИспользуйте значение из таблицы параметров.
OL_E_SETTING_NOT_WRITABLESessionPlanner; CliInput.BuildSpecAsync; BuildTransactionalOverlaysКлюч существует, но недоступен для записи (advanced.multithreadingCalculate, advanced.multithreadingTextureLoad, graphics.texture, graphics.textureFilter).Диагностическое сообщение плана; код выхода CLI 2Удалите ключ.
OL_E_UNKNOWN_SETTINGSessionPlanner; CliInput.BuildSpecAsync; BuildTransactionalOverlaysКлюча нет в ConfigurationCatalog.Диагностическое сообщение плана; код выхода CLI 2Используйте ключ из каталога.

LaunchSpec#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_SPEC_INVALIDLaunchSpecJson.ParseКорень не является JSON-объектом, либо десериализация не дала записи.Выбрасывается (InvalidDataException), код выхода CLI 2Исправьте файл (LaunchSpec).
OL_E_SPEC_NOT_FOUNDLaunchSpecJson.LoadAsyncФайл /spec не существует.Выбрасывается (FileNotFoundException), код выхода CLI 6Проверьте путь.
OL_E_SPEC_TOO_LARGELaunchSpecJson.LoadAsyncФайл превышает 1 MiB.Выбрасывается (InvalidDataException), код выхода CLI 2Уменьшите файл.
OL_E_SPEC_UNKNOWN_PROPERTYLaunchSpecJson.ValidateЧлен, не являющийся публичным свойством записи в этой позиции; сообщение OL_E_SPEC_UNKNOWN_PROPERTY: $.Path.Name.Выбрасывается (InvalidDataException), код выхода CLI 2Удалите или переименуйте член.

LocalControl#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_CONTROL_COMMAND_UNKNOWNОбработчик владельца (OwnerSession)Команда не является session.status, session.events, session.stop или runtime.execute с аргументом operation.Ответ управления; код выхода CLI 7Используйте поддерживаемую команду.
OL_E_CONTROL_FAILEDКлиент CLI (ReportForwarded, CliEventWatch)Владелец ответил Ok = false без кода ошибки.CLI-конверт, код выхода 7Прочитайте сообщение; проверьте консоль/диагностику владельца.
OL_E_CONTROL_HANDLER_FAILEDLocalControlPlane.ServeAsyncОбработчик владельца выбросил исключение, сообщение которого не содержит кода OL_E_ (например, сеанс уже был закрыт), либо ответ обработчика не удалось сериализовать.Ответ управленияПрочитайте session status; перезапустите владельца, если его больше нет.
OL_E_CONTROL_MESSAGE_INVALIDLocalControlPlane (обе стороны)Префикс длины отрицательный или больше 64 KiB (включая слишком большой фрейм запроса), пустой фрейм, JSON null, запрос без Command или JSON, который не удалось декодировать.Ответ управления / CLI-конвертИспользуйте документированный протокол (локальная плоскость управления).
OL_E_CONTROL_MESSAGE_TOO_LARGELocalControlPlane.TryRequestAsync (клиент)Собственный сериализованный запрос клиента превышает 64 KiB. Сообщается вызывающей стороне; ничего не отправляется.Ответ управления / CLI-конвертУменьшите запрос.
OL_E_CONTROL_RESPONSE_TOO_LARGELocalControlPlane.ServeAsync (владелец)Ответ владельца не помещается во фрейм 64 KiB. Вместо того чтобы отбросить ответ, владелец отвечает этой типизированной ошибкой. session.status и session.events до неё никогда не доходят: их история событий усекается начиная с самых старых, чтобы уместиться.Ответ управления / CLI-конвертПовторите попытку; для событий читайте их чаще.
OL_E_CONTROL_PROTOCOLLocalControlPlane, TryRequestBoundAsyncProtocolVersion запроса не равен 0.1; ответ владельца не удалось декодировать или он пуст; владелец закрыл соединение, не ответив, или соединение оборвалось после установления; владелец не сообщил SessionId.Ответ управления / CLI-конвертСогласуйте версии клиента и владельца; прочитайте session status.
OL_E_CONTROL_SESSION_MISMATCHОбработчик владельцаsession.stop или runtime.execute без session_id, равного активному сеансу.Ответ управления; код выхода CLI 7Сначала прочитайте session.status и привяжите запрос (CLI делает это автоматически).

Other#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_PLAN_NOT_RUNNABLEOmsiLaunchService.StartSessionAsyncУ переданного плана IsRunnable = false, либо повторное планирование при запуске даёт неисполнимый план (Omsi.exe изменился, контент удалён, отсутствует замыкание плагина); в сообщении перечислены текущие коды OL_E_.Выбрасывается (InvalidOperationException); код выхода CLI 1Выполните планирование заново и устраните перечисленные диагностические сообщения.

Presentation#

Все выдаются SessionVisualAssets (src/OmsiLaunch.Core/SessionVisualAssets.cs). При планировании они оборачиваются в OL_E_SESSION_PRESENTATION_INVALID (сообщение содержит код); при запуске передаются через OL_E_START_SESSION.

КодЗначение / типичная причинаЧто делать
OL_E_ITX_PROFILE_INVALIDФайл .itx пуст, содержит нечётное число непустых строк, либо строка URL не является абсолютным URL http/https.Используйте пары строк «URL / цель».
OL_E_ITX_PROFILE_MISSINGOverrideProfilePath (разрешается относительно рабочего каталога процесса) не существует. Выбрасывается как FileNotFoundException.Передайте путь к существующему .itx.
OL_E_ITX_PROFILE_REQUIREDInternetTextures.Mode равен Override без OverrideProfilePath. Код выхода CLI 2, если выброшено исключение.Укажите /internet-textures-profile:<file.itx>.
OL_E_ITX_TARGET_OUTSIDE_TEXTURE_PATHСтрока цели содержит абсолютный путь, содержит .., начинается с \, разрешается за пределы установки, не содержит компонента Texture\ или проходит через junction/symlink.Используйте относительные цели Texture\....
OL_E_SPLASH_ASSET_DIRECTORY_MISSINGCustomAssetDirectory не существует.Исправьте каталог.
OL_E_SPLASH_ASSET_MISSINGВ каталоге ресурсов отсутствует ENG.bmp или <LANG>.bmp, либо при заполнении .omsilaunch\assets\splash отсутствует упакованный assets\splash\<LANG>.bmp.Предоставьте файлы BMP / переустановите пакет.
OL_E_SPLASH_FORMAT_UNSUPPORTEDBMP заставки (splash) не является 24-битным растровым изображением BM размером 640×480.Преобразуйте изображение.

Process#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_PROCESS_CLEANUP_FAILEDOmsiLaunchService (пути сбоя запуска и сбоя супервизора)Завершение OMSI или ожидание её завершения при очистке после ошибки выбросило исключение; далее следует внутреннее сообщение.Диагностическое сообщение сеанса (добавляется к сеансу Failed)Убедитесь, что не осталось Omsi.exe, затем выполните /recover, если есть незавершённый журнал.
OL_E_PROCESS_CREATION_TIME_FAILEDCurrentWindowsX64Platform.StartAsyncGetProcessTimes завершился ошибкой сразу после CreateProcessW (Win32=<code>); процесс завершается.Диагностическое сообщение сеанса через OL_E_START_SESSIONПовторите попытку; проверьте антивирус/права доступа.
OL_E_PROCESS_EXITED_EARLYOmsiLaunchService.SuperviseAsyncOMSI завершилась до gameplay.entered (аварийное завершение, закрыт диалог ошибки OMSI, закрыто окно).Диагностическое сообщение сеанса (Failed); выполняется восстановлениеПроверьте собственные логи OMSI и logfile.txt; найдите в RuntimeEvents последнее событие плагина.
OL_E_PROCESS_START_FAILEDCurrentWindowsX64Platform.StartAsyncCreateProcessW завершился ошибкой (Win32=<code> в сообщении).Диагностическое сообщение сеанса через OL_E_START_SESSIONУстраните ошибку Win32 (отсутствующий файл, отказ в доступе, политика).
OL_E_PROCESS_SUPERVISIONOmsiLaunchService.SuperviseAsyncЦикл супервизора выбросил исключение (чтение телеметрии, ожидание/завершение процесса, запись журнала); OMSI завершается, выполняется попытка восстановления.Диагностическое сообщение сеанса (Failed)Прочитайте внутреннее сообщение и лог хоста.
OL_E_PROCESS_TERMINATE_FAILEDCurrentWindowsX64Platform.TerminateTerminateProcess завершился ошибкой (Win32=<code>).Внутри сообщений OL_E_PROCESS_SUPERVISION / OL_E_PROCESS_CLEANUP_FAILEDЗавершите OMSI вручную, затем выполните /recover.
OL_E_PROCESS_WAIT_FAILEDCurrentWindowsX64Platform.WaitForExitAsyncWaitForSingleObject для дескриптора процесса завершился ошибкой.Внутри сообщений OL_E_PROCESS_SUPERVISION / OL_E_PROCESS_CLEANUP_FAILEDТо же.

Runtime#

«Runtime-деталь» означает ErrorCode = OL_E_RUNTIME_OPERATION_FAILED с кодом в начале Values["detail"].

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_CAMERA_PRESET_FAMILY_UNSUPPORTEDOmsiCameraLockWritercamera.lock с preset при family, равном 2 (внешняя) или 3 (карта); пресеты есть только для водителя (0) и пассажира (1).Runtime-детальНе указывайте preset или используйте family 0/1.
OL_E_DATE_TIME_APPLY_FAILEDLaunchValidationРежим Date/Time равен Explicit без значения или с компонентами вне диапазона. Название историческое; это ошибка проверки на этапе планирования.Диагностическое сообщение планаИсправьте значение (и учтите, что явные дата/время на этом build делают план неисполнимым).
OL_E_MAKEVEHICLE_BUS_NOT_FOUNDCurrentRuntimeControl.MakeBasicRoadVehicleroad-vehicles.spawn: путь .bus не существует в рабочем каталоге OMSI (проверяется до нативного вызова, чтобы OMSI не могла подставить запасной вариант).Runtime-детальИспользуйте идентичность из vehicles list//list:vehicles.
OL_E_MAKEVEHICLE_DELTA_MULTIPLEто жеНативный MakeVehicle изменил коллекцию дорожных ТС более чем на один объект.Runtime-деталь (native_status, счётчики в сообщении)Сообщите о проблеме; созданные объекты остаются до конца сеанса.
OL_E_MAKEVEHICLE_DELTA_ZEROто жеКоллекция не изменилась; OMSI молча отклонила ТС.Runtime-детальПроверьте файл .bus; попробуйте другую модель.
OL_E_MAKEVEHICLE_NATIVE_FAILEDто жеЛюбой другой ненулевой нативный статус.Runtime-детальСообщите о проблеме, приложив счётчики из сообщения.
OL_E_PLACE_RANDOM_BUS_FAILEDCurrentRuntimeControl.PlaceRandomBusПрофилированный вызов PlaceRandomBus вернул статус ошибки.Runtime-детальПовторите попытку, когда игровой процесс стабилизируется; сообщите о проблеме.
OL_E_RUNTIME_ARGUMENT_REQUIREDPublicCapabilityRegistry.ValidateRuntimeArguments; проверки на стороне плагина (time.set без hour/minute/second; camera.set без family/field_of_view; camera.lock без разбираемого family; операции с ТС/кривыми)Обязательный аргумент отсутствует или пуст.Runtime-результат (реестр; код выхода CLI 2) или runtime-деталь (плагин)Передайте аргумент (runtime-управление).
OL_E_RUNTIME_ARTIFACT_MISSINGOmsiLaunchService.PlanSessionAsyncЭталонный каталог/файл замыкания плагина или нативный мост, заданные в OmsiLaunchRuntimePaths, не удаётся загрузить (может оборачивать OL_E_RELEASE_MANIFEST_INVALID).Диагностическое сообщение планаЗапускайте из неповреждённого пакета.
OL_E_RUNTIME_BASELINE_UNAVAILABLERuntimeBatch (/runtime-write-batch, INTERNAL-стенд)Базовое чтение time.read/camera.read завершилось неудачей, поэтому тест записи пропущен.Только артефакт пакетного прогонаНе предназначено для пользователей.
OL_E_RUNTIME_BUS_IDENTITY_INVALIDCurrentRuntimeControl.ValidateBasicBusIdentitymodel пуст, длиннее 240 символов, содержит NUL или .., не начинается с Vehicles\ или не заканчивается на .bus.Runtime-детальПередайте Vehicles\<dir>\<file>.bus.
OL_E_RUNTIME_CHANNEL_BUSYнет (сохранён для совместимости)Больше не выдаётся. Ранние build выдавали его, когда отменённый запрос оставался в слоте; теперь каждый конечный путь запроса сбрасывает слот, а оставшийся запрос или ответ, обнаруженный в начале нового запроса, очищается.——
OL_E_RUNTIME_CHANNEL_CLOSEDOmsiLaunchService.LiveSession.RequestRuntimeAsyncПочтовый ящик (mailbox) освобождён, потому что сеанс завершается.Выбрасывается (InvalidOperationException)Ничего; сеанс окончен.
OL_E_RUNTIME_CHANNEL_STATE_INVALIDCurrentRuntimeCommandStore.RequestAsyncСлот почтового ящика содержал значение состояния, отличное от idle, requested или responded (повреждение). Слот сбрасывается, и выдаётся ошибка; следующий запрос работает нормально.Выбрасывается (InvalidDataException)Повторите попытку; если ошибка повторяется, сообщите о проблеме.
OL_E_RUNTIME_CONSTANTS_UNAVAILABLEOmsiRuntimeReadersУказатель на блок констант ТС равен null.Runtime-детальУ ТС нет констант; ничего делать не нужно.
OL_E_RUNTIME_CONSTANT_NOT_FOUNDOmsiRuntimeReadersname отсутствует в таблице констант ТС.Runtime-детальСначала получите список констант.
OL_E_RUNTIME_CREATED_OBJECT_INVALIDOmsiRuntimeReaders.RegisterRoadVehicleHandleAsyncУ объекта, созданного через spawn, VMT находится вне диапазона образа OMSI.Runtime-детальСообщите о проблеме.
OL_E_RUNTIME_CREATED_OBJECT_NOT_IN_COLLECTIONто жеСозданного объекта нет в коллекции дорожных ТС.Runtime-детальСообщите о проблеме.
OL_E_RUNTIME_CURVE_DEGENERATEOmsiRuntimeReaders.EvaluateRoadVehicleCurveAsyncДве соседние точки кривой имеют одинаковый X.Runtime-детальПроблема контента в кривой ТС.
OL_E_RUNTIME_CURVE_EMPTYто жеУ кривой нет точек.Runtime-детальТо же.
OL_E_RUNTIME_CURVE_INVALIDто жеНи один сегмент кривой не содержит x.Runtime-детальВычисляйте в пределах области определения кривой.
OL_E_RUNTIME_CURVE_NOT_FOUNDто жеname неизвестен или его указатель на функцию равен null.Runtime-детальСначала получите список кривых.
OL_E_RUNTIME_HOF_UNAVAILABLEOmsiRuntimeReaders.ReadRoadVehicleHofsAsyncУказатель на определение ТС равен null.Runtime-детальHandle указывает на ТС без данных определения.
OL_E_RUNTIME_INSTALLATION_INCOMPLETECliProgram.RunAsync (режим владельца)Рядом с исполняемым файлом отсутствует plugins\OmsiLaunch.Plugin.opl или plugins\OmsiLaunch.Native.x86.dll.CLI-конверт, код выхода 7Переустановите пакет.
OL_E_RUNTIME_OBJECT_HANDLE_REQUIREDCurrentRuntimeControlhandle отсутствует или пуст для road-vehicle.read, human.read, vehicle.variables.list, vehicle.string-variables.list, vehicle.constants.list, vehicle.curves.list (обычно реестр отклоняет такие запросы раньше с OL_E_RUNTIME_ARGUMENT_REQUIRED).Runtime-детальПередайте handle.
OL_E_RUNTIME_OBJECT_HANDLE_STALEOmsiRuntimeReadersHandle неизвестен, объект покинул коллекцию, поколение адреса увеличилось, либо отпечаток объекта (VMT + идентичность определения/модели) изменился, потому что адрес был использован повторно. Остаточная слепая зона: объект того же класса и модели, воссозданный по тому же адресу между двумя чтениями списка.Runtime-детальСнова выполните road-vehicles.list/humans.list и используйте новый handle.
OL_E_RUNTIME_OPERATION_FAILEDCurrentRuntimeControl.Execute; CurrentRuntimeCommandMailbox.TryDispatch; запасной путь D3DRuntimeApiОбщая обёртка для сбоев на стороне плагина; Values["detail"] содержит сообщение (часто более конкретный код), а Values["exception"] — тип исключения. На исключение, вышедшее из операции внутри диспетчера почтового ящика, также отвечается этим кодом (без значений), вместо того чтобы оставить запрос без ответа.Runtime-результатПрочитайте detail.
OL_E_RUNTIME_OPERATION_UNAVAILABLECurrentRuntimeControl.ExecuteУ плагина нет реализации операции, которую разрешил реестр (расхождение версий реестра и плагина).Runtime-детальПереустановите согласованный пакет.
OL_E_RUNTIME_OPERATION_UNKNOWNPublicCapabilityRegistry.ValidateRuntimeArgumentsОперации нет в PublicRuntimeOperationIds; это касается и всех операций internal.*. Проверяется до поиска сеанса.Runtime-результат; ответ управления; код выхода CLI 2Используйте публичный идентификатор операции.
OL_E_RUNTIME_PLAYER_VEHICLE_UNAVAILABLEOmsiCameraLockWritercamera.lock с preset при отсутствии транспортного средства игрока (в headless-сеансах его нет). Также сообщается как code события camera.lock.degraded, если повторное применение не удалось.Runtime-деталь / runtime-событиеВыполните фиксацию без пресета или используйте сеанс с транспортным средством игрока.
OL_E_RUNTIME_PROTOCOL_MISMATCHD3DRuntimeApiУспешный результат D3D не содержал значений или содержал неизвестную строку состояния устройства.Выбрасывается (OmsiRuntimeException)Согласуйте версии хоста и плагина.
OL_E_RUNTIME_REQUEST_ID_REUSEDCurrentRuntimeCommandStore.RequestAsyncВ слоте находится устаревший ответ с тем же идентификатором запроса, что и у нового запроса. Устаревший ответ очищается до выдачи ошибки.Выбрасывается (InvalidOperationException)Используйте строго возрастающие идентификаторы запросов.
OL_E_RUNTIME_REQUEST_TIMEOUTCurrentRuntimeCommandStore.RequestAsyncНет ответа в пределах timeout; слот сбрасывается, а запоздавший ответ отбрасывается.Выбрасывается (TimeoutException); код выхода CLI 5Повторите попытку с более длинным тайм-аутом; проверьте, что OMSI не заблокирована (модальный диалог, загрузка).
OL_E_RUNTIME_RESPONSE_INVALIDCurrentRuntimeCommandStoreКонверт ответа повреждён, имеет неверную длину (отрицательную, нулевую или больше слота), чужой идентификатор сеанса или другой идентификатор запроса. Слот сбрасывается до выдачи ошибки, поэтому следующий запрос работает нормально.Выбрасывается (InvalidDataException)Повторите попытку; если ошибка повторяется, сообщите о проблеме.
OL_E_RUNTIME_RESPONSE_TOO_LARGECurrentRuntimeCommandMailbox.TryDispatchСериализованный результат превышает почтовый ящик 64 KiB. Результаты ограниченных списков (с returned_count и truncated) вместо этого сокращаются, чтобы уместиться (аудит документации BUG-05); на практике код остаётся достижимым для timetable.logs.read, который не является ограниченным списком.Runtime-результатИспользуйте более узкую операцию (например, road-vehicles.read вместо road-vehicles.list на огромных коллекциях).
OL_E_RUNTIME_SCRIPT_OBJECT_UNAVAILABLEOmsiRuntimeReadersУказатель на определение или состояние скрипта ТС равен null.Runtime-детальУ ТС нет скриптовых объектов.
OL_E_RUNTIME_SESSION_MISMATCHOmsiLaunchService.ExecuteRuntimeAsync; CurrentRuntimeCommandStore; почтовый ящик плагинаRuntimeCommand.SessionId отличается от идентификатора сеанса handle (выбрасывается хостом), либо запрос дошёл до плагина, привязанного к другому сеансу (возвращается плагином как типизированный результат).Выбрасывается (InvalidOperationException) / runtime-результатФормируйте команду с session.SessionId.
OL_E_RUNTIME_SETTING_NOT_PERSISTENTCurrentRuntimeControl.SetWeatherweather.set всегда отклоняется: OMSI перезаписывает профилированные поля погоды на следующем такте погоды, поэтому запись нельзя считать семантическим изменением.Runtime-результатНичего; weather.set имеет статус UNAVAILABLE.
OL_E_RUNTIME_SETTING_UNAVAILABLEOmsiWeatherWriterНеизвестное имя поля погоды. Сейчас недостижимо, потому что weather.set отклоняется раньше.Runtime-деталь (определено)См. исходный код src/OmsiLaunch.Interop/OmsiWeatherWriter.cs.
OL_E_RUNTIME_STRING_VARIABLE_NOT_FOUNDOmsiRuntimeReadersname отсутствует в таблице строковых переменных.Runtime-детальСначала получите список строковых переменных.
OL_E_RUNTIME_VALUE_INVALIDOmsiWeatherWriter.ParseBooleanЛогическое значение погоды не равно true/false/1/0. Сейчас недостижимо (см. выше).Runtime-деталь (определено)См. исходный код.
OL_E_RUNTIME_VALUE_OUT_OF_RANGECurrentRuntimeControl, OmsiCameraWriter, OmsiCameraLockWriter, OmsiRuntimeReaders, OmsiWeatherWritertime.set: hour 0..23, minute 0..59, second 0..59.999; camera.set: family 0..3, field_of_view 10..170; camera.lock: preset не целое число, family 0..3, preset 0..255; road-vehicles.place-random: ai_type 0..255, group/type/tour/line 0..65535 (type может быть -1), scheduled 0..1; vehicle.variable.set: value не конечно; vehicle.curve.evaluate: x не конечно.Runtime-детальИспользуйте значение из допустимого диапазона.
OL_E_RUNTIME_VARIABLE_NOT_FOUNDOmsiRuntimeReadersname отсутствует в таблице числовых переменных.Runtime-детальСначала получите список переменных.
OL_E_RUNTIME_VARIABLE_UNAVAILABLEOmsiRuntimeReadersСлот переменной или адрес значения равен null.Runtime-детальПеременная не материализована для этого ТС.
OL_E_TIME_APPLY_FAILEDCurrentRuntimeControl.SetTimeСкалярные значения часов записаны, но профилированный нативный вызов SetTime вернул ошибку.Runtime-детальПовторите попытку; прочитайте значение обратно с помощью time.read.

RuntimeD3D#

Все выдаются CurrentRuntimeControl (сопоставление нативного статуса в ThrowD3D; detail содержит операцию и HRESULT, native_status — числовой статус). Канал: runtime-результат с кодом в ErrorCode; D3DRuntimeApi повторно выбрасывает его как OmsiRuntimeException.

КодНативный статус / причинаЧто делать
OL_E_D3D_DEVICE_LOST8: устройство Direct3D потеряно.Дождитесь d3d.restored; пересоздайте текстуры (поколение изменилось).
OL_E_D3D_INVALID_ARGUMENT14: отсутствует или неверен width, height, level, x, y, format или handle (диапазоны: width/height 1..4096, уровни 0..16, level 0..15, x/y 0..4095).Исправьте аргументы.
OL_E_D3D_INVALID_PIXEL_BUFFERpixels_base64 не является корректным Base64 или превышает 48 KiB.Отправляйте прямоугольники меньшего размера.
OL_E_D3D_INVALID_TEXTURE_FORMAT6 или неизвестное имя format (допустимые: A8R8G8B8, X8R8G8B8, R5G6B5, X1R5G5B5, A1R5G5B5, A4R4G4B4, A8, L8, A8L8).Используйте формат из списка.
OL_E_D3D_NATIVE_CALL_FAILEDЛюбой другой статус; HRESULT находится в detail.Сообщите о проблеме, указав HRESULT.
OL_E_D3D_NOT_READY7: устройство не готово (до первого кадра или во время остановки).Повторите попытку после d3d.ready.
OL_E_D3D_RESET_IN_PROGRESS9: выполняется сброс устройства (device reset).Повторите попытку после d3d.restored.
OL_E_D3D_RESOURCE_RELEASED13: handle текстуры уже освобождён.Не используйте освобождённые handle повторно.
OL_E_D3D_STALE_RESOURCE_HANDLE12: handle относится к предыдущему поколению устройства; либо строка handle не соответствует d3dtex-<session>-<hex> / равна нулю.Пересоздайте текстуру.

Session#

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_CAPABILITY_UNAVAILABLESessionPlanner; ApplyTelemetry по plugin.request.unsupportedПлан: запрошены LastMapState, EntrypointIdentity, режим даты/времени/года, режим погоды, поля транспортного средства игрока или входные документы (Requested capability unavailable: <name>). Телеметрия: плагин отклонил передачу управления (handoff) (для исполнимого плана это невозможно).Диагностическое сообщение плана; диагностическое сообщение сеансаУдалите неподдерживаемый запрос (известные ограничения).
OL_E_HEADLESS_ARM_FAILEDApplyTelemetry по headless.arm.failedПлагин не смог взвести в OMSI одноразовый hook headless-запуска.Диагностическое сообщение сеанса (Failed)Проверьте build; сообщите о проблеме.
OL_E_NO_ACTIVE_SESSIONКлиент CLI (ReportForwarded, CliEventWatch)Ни один владелец не отвечает на управляющем канале (pipe) установки (сеанса нет, либо владелец ещё запускается/выполняет проверку).CLI-конверт, код выхода 4Запустите сеанс или дождитесь, пока он перейдёт в Running.
OL_E_PLUGIN_NOT_LOADEDSuperviseAsyncStartupTimeoutSeconds истёк до plugin.started (OMSI не загрузила plugins\OmsiLaunch.Plugin.opl или зависла до инициализации плагина).Диагностическое сообщение сеанса (Failed)Проверьте замыкание плагина, plugins\OmsiLaunch.Plugin.opl и logfile.txt OMSI.
OL_E_PLUGIN_PROTOCOL_MISMATCHApplyTelemetry по plugin.handoff.invalid или при неразбираемом JSON телеметрииПлагин не смог прочитать/проверить данные передачи управления при запуске (handoff) (версия 3/4, SHA-256) или отправил некорректную телеметрию.Диагностическое сообщение сеанса (Failed)Согласуйте версии хоста и плагина (переустановите пакет).
OL_E_SESSION_ALREADY_ACTIVECliProgram.RunAsyncДля этой установки уже есть владелец, который отвечает на session.status.CLI-конверт, код выхода 7Используйте команды клиента (session status, session stop, runtime-команды).
OL_E_SESSION_NOT_RUNNINGOmsiLaunchService.ExecuteRuntimeAsyncСостояние сеанса не Running.Выбрасывается (InvalidOperationException)Сначала вызовите WaitForAsync(session, SessionState.Running, ...).
OL_E_SESSION_PRESENTATION_INVALIDSessionPlannerНе удалось построить план заставки/ITX; сообщение содержит код представления.Диагностическое сообщение планаСм. Presentation.
OL_E_SESSION_START_FAILEDWindowsHost.ShowFailure (диалог OmsiLaunchW)Запасной код, который показывается, если план запуска неисполним или сеанс не дошёл до игрового процесса, а диагностического сообщения OL_E_ нет.Только окно сообщения (message box)Прочитайте .omsilaunch\diagnostics.
OL_E_SITUATION_LOAD_FAILEDApplyTelemetry по world.situation.failedНативный запуск сохранённой ситуации вернул ошибку (native_status в событии).Диагностическое сообщение сеанса (Failed)Проверьте .osn и его карту.
OL_E_STARTUP_TIMEOUTSuperviseAsyncПлагин запустился, но Running не был достигнут в пределах StartupTimeoutSeconds.Диагностическое сообщение сеанса (Failed)Для больших карт увеличьте /startup-timeout; найдите в RuntimeEvents последнее событие мира.
OL_E_START_SESSIONOmsiLaunchService.StartAsyncЛюбое исключение на пути запуска; сообщение — это внутреннее сообщение (обычно начинается с внутреннего кода).Диагностическое сообщение сеанса (Failed)Действуйте по внутреннему коду.
OL_E_WORLD_START_FAILEDApplyTelemetry по world.failedНативный запуск NEW_MAP вернул ошибку (native_status в событии).Диагностическое сообщение сеанса (Failed)Проверьте карту, индекс точки входа и логи OMSI.

SessionProfile#

Все выдаются SessionProfileCompiler (src/OmsiLaunch.Core/SessionProfiles.cs) или CliInput и выбрасываются как SessionProfileException (IOException с Code), код выхода CLI 2. См. профили сеанса.

КодЗначение / типичная причинаЧто делать
OL_E_SESSION_PROFILE_ASSET_MISSINGКаталог assets заставки пресета или файл profile интернет-текстур не существует внутри пакета.Добавьте ресурс.
OL_E_SESSION_PROFILE_INVALIDНарушение структуры или лимита: больше 256 KiB, не ровно одно корневое отображение, якоря YAML, неизвестный ключ, отсутствует обязательный ключ, не скаляр там, где требуется скаляр, id отличается от имени каталога, пресетов не 1..5 или повторяющийся index, неположительные тайм-ауты, неподдерживаемый режим погоды/заставки/интернет-текстур, дата/время не explicit, некорректный YAML, ошибки разбора чисел/дат.Исправьте YAML согласно сообщению.
OL_E_SESSION_PROFILE_MAP_MISMATCHcompatibility.maps не пуст и не содержит выбранную карту (NEW_MAP) или карту выбранной ситуации (SAVED_SITUATION).Выберите совместимый мир.
OL_E_SESSION_PROFILE_NOT_FOUND<root>\.omsilaunch\session-profiles\<id>\profile.yaml не существует.Проверьте id.
OL_E_SESSION_PROFILE_OVERRIDE_CONFLICTЯвный аргумент CLI задаёт поле, которым владеет выбранный профиль/пресет.Уберите флаг или выберите другой пресет.
OL_E_SESSION_PROFILE_PATH_ESCAPEId содержит \, /, : или ..; либо путь ресурса абсолютный, выходит за пределы пакета или проходит через junction/symlink.Держите пути внутри пакета.
OL_E_SESSION_PROFILE_PRESET_NOT_FOUND/predefined-profile-index отсутствует, вне диапазона 1..5 или не объявлен в профиле.Используйте объявленный индекс пресета.
OL_E_SESSION_PROFILE_SCHEMA_UNSUPPORTEDschema не равна omsilaunch.session-profile/v1.Используйте поддерживаемую схему.
OL_E_SESSION_PROFILE_SETTING_NOT_WRITABLEКлюч параметра пресета известен, но недоступен для записи.Удалите ключ.
OL_E_SESSION_PROFILE_SETTING_UNKNOWNКлюча параметра пресета нет в каталоге.Используйте ключ из каталога.

Transaction#

См. транзакции и восстановление после сбоя.

КодКем выдаётсяЗначение / типичная причинаКаналЧто делать
OL_E_CLOSECHECK_REMOVE_FAILEDOmsiLaunchService.RemoveStaleClosecheckУстаревший closecheck всё ещё существует после File.Delete.Диагностическое сообщение сеанса через OL_E_START_SESSIONУдалите <root>\closecheck вручную (права доступа).
OL_E_RECOVERY_ABSENT_OWNERSHIP_MISMATCHFileConfigurationTransaction.RestoreAsyncПуть, которого не было до сеанса, теперь содержит контент, отличающийся от записанного сеансом; он не удаляется, журнал сохраняется.Выбрасывается (IOException); внутри OL_E_RESTORE_FAILED / OL_E_START_SESSION; код выхода CLI 8Изучите файл; удалите или переместите его, затем выполните /recover.
OL_E_RECOVERY_ABSENT_OWNERSHIP_UNVERIFIEDRestoreAsync (журнал без отпечатков)В журнале нет отпечатка записанного контента для изначально отсутствовавшего пути, не предназначенного для удаления, поэтому владение доказать нельзя. При запуске сеанса восстановление (recovery) откладывается и повторяется с байтами, запланированными этим сеансом; через RecoverPendingAsync код выбрасывается.Выбрасывается (IOException); код выхода CLI 8Запустите сеанс с той же спецификацией (она предоставит байты) или изучите и удалите файл, затем выполните /recover.
OL_E_RECOVERY_BACKUP_CORRUPTRestoreAsyncSHA-256 резервной копии не совпадает со снимком (snapshot), записанным в журнале; ничего не записывается.Выбрасывается; внутри OL_E_RESTORE_FAILED; код выхода CLI 8Восстановите файл из собственной резервной копии; удаляйте журнал, только если вы уверены.
OL_E_RECOVERY_JOURNAL_MISSINGRestoreAsyncСнимки существуют в памяти, но journal.json исчез (удалён во время сеанса).Выбрасывается; внутри OL_E_RESTORE_FAILEDПроверьте файлы сеанса вручную.
OL_E_RECOVERY_JOURNAL_REMOVE_FAILEDFileConfigurationTransaction.RemoveJournaljournal.json всё ещё существует после удаления (само восстановление прошло успешно и проверено).Выбрасывается; внутри OL_E_RESTORE_FAILED; код выхода CLI 8Удалите <root>\.omsilaunch\journal.json (права доступа) или снова выполните /recover (операция идемпотентна).
OL_E_RESTORE_DEFERREDOmsiLaunchService (сбой запуска / супервизор)Завершение OMSI не удалось подтвердить, поэтому файлы не заменялись, пока OMSI может их ещё использовать; журнал сохраняется.Диагностическое сообщение сеанса (Failed)После завершения Omsi.exe выполните /recover (или следующий запуск выполнит восстановление автоматически).
OL_E_RESTORE_FAILEDOmsiLaunchService (сбой запуска / супервизор)RestoreAsync выбросил исключение; сообщение содержит внутренний код; журнал сохраняется.Диагностическое сообщение сеанса (Failed); код выхода CLI 8, если выброшено из /recoverДействуйте по внутреннему коду, затем выполните /recover.

Warning#

КодКем выдаётсяЗначениеКаналЧто делать
OL_W_RESTORE_FOREIGN_FILE_RETAINEDFileConfigurationTransaction.RestoreAsyncПуть, удаляемый сеансом (цель ITX, Texture\standard.ipr, closecheck), не существовал до сеанса и существует сейчас, но ни один процесс OMSI под этим журналом не запускался, поэтому файл не может быть побочным продуктом сеанса. Он сохраняется, о нём сообщается (сообщение = относительный путь, Data["sha256"]); транзакция всё равно завершается.Диагностическое сообщение сеанса / RecoveryStatus.Diagnostics (на состояние не влияет)Изучите файл; при необходимости удалите его сами.

Диагностические коды, не являющиеся ошибками#

КодКем выдаётсяСообщение / данныеЗначение
process.startedOmsiLaunchService.LiveSession.Attachсообщение = PID; Data["thread_id"], Data["creation_utc"] (ISO 8601)Omsi.exe создан, его идентичность записана. Диагностическое сообщение сеанса.
closecheck.stale-removedOmsiLaunchService.RemoveStaleClosecheckсообщение = SHA-256 удалённого файлаclosecheck, существовавший до сеанса, был безвозвратно удалён (SuppressStaleClosecheckWarning = true). Диагностическое сообщение сеанса.
restore.session-artifact-removedFileConfigurationTransaction.RestoreAsyncсообщение = относительный путь; Data["sha256"]Путь, удаляемый сеансом, был воссоздан OMSI во время сеанса, процесс которого был запущен; он удалён, чтобы восстановить исходное отсутствие файла. Диагностическое сообщение сеанса / RecoveryStatus.Diagnostics.
plugin.integrity.referenceOmsiLaunchService.PlanSessionAsyncсообщение = manifest или selfКакой эталон использует проверка постоянного плагина. Диагностическое сообщение плана.
session_profile.selectedSessionPlannerсообщение = id профиля; Data["session_profile.id|name|version|author|preset_id|preset_index|preset_name|path"]Происхождение сеанса, скомпилированного из профиля сеанса. Диагностическое сообщение плана.

Имена runtime-событий (RuntimeEvent.Type, не диагностические сообщения) перечислены на странице жизненный цикл сеанса.