This page is the normative reference for every code in PublicErrorCodes (src/OmsiLaunch.Api/PublicErrorCodes.cs): 167 OL_E_ error codes and 4 OL_W_ warnings, grouped by catalog category, plus the informational diagnostic codes that are not errors. For each code it states where the current code raises it, what it means, how it reaches you (thrown exception, result field, diagnostic, control-plane reply or CLI envelope) and what to do. Meanings are taken from the raise sites; where a code is defined but has no current raise path, the page says so.
Related pages: public API, exit codes, LaunchSpec, session lifecycle, transactions and recovery, local control plane, runtime control, session profiles, permanent plugin.
| Surface | Meaning |
|---|---|
| Thrown | An exception whose Message starts with the code (InvalidOperationException, IOException, TimeoutException, InvalidDataException, FileNotFoundException, ArgumentException, SessionProfileException). The CLI extracts the code from the message and maps it to an exit code (CliProgram.Classify). |
| Plan diagnostic | A LaunchDiagnostic in SessionPlan.Diagnostics; any OL_E_ code makes IsRunnable false (CLI: plan NOT RUNNABLE, exit 1). |
| Session diagnostic | A LaunchDiagnostic in SessionStatus.Diagnostics; the session state is Failed (CLI exit 1). OL_E_START_SESSION, OL_E_PROCESS_SUPERVISION and OL_E_RESTORE_FAILED wrap an inner code in their message. |
| Runtime result | RuntimeCommandResult.ErrorCode with Succeeded = false. |
| Runtime detail | RuntimeCommandResult.ErrorCode is the specific code and Values["detail"] the message (with Values["exception"], the .NET type). Beta 4: a typed plugin-side code reaches the API and the CLI unchanged; only a failure without a catalogued code becomes OL_E_RUNTIME_OPERATION_FAILED. |
| Control reply | ErrorCode of a local control plane reply (LocalControlResponse). |
| CLI envelope | error.code in the --json envelope, or <code>: <message> on the console; the exit code is given. |
| Telemetry | A runtime event name that the host maps to a session diagnostic. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_CANCELLED |
CliProgram.Classify |
An OperationCanceledException escaped (Ctrl+C or a cancelled client wait). |
CLI envelope, exit 7 | Retry the command. |
OL_E_INTERNAL |
CliProgram.Classify |
An exception without an OL_E_ code escaped: malformed /spec JSON, a null required spec member, an unexpected fault. |
CLI envelope, exit 10 | Read the message and <root>\.omsilaunch\diagnostics\<sessionId>-host.log; fix the input; report if unexplained. |
OL_E_TIMEOUT |
CliProgram.Classify; LocalControlPlane.TryRequestAsync |
A TimeoutException without a code escaped; or the local control client was connected to an owner that did not reply within the timeout (the owner exists, so this is not reported as OL_E_NO_ACTIVE_SESSION). (Mailbox timeouts carry OL_E_RUNTIME_REQUEST_TIMEOUT instead.) |
CLI envelope, control reply; exit 5 from Classify, exit 7 for a control reply |
Retry; check that OMSI and the owner are responsive. |
OL_E_WINDOWS_HOST_MISSING |
CliProgram.RunAsync (/silent) |
OmsiLaunchW.exe is not beside OmsiLaunch.exe. |
CLI envelope, exit 7 | Reinstall the package. |
OL_E_WINDOWS_HOST_START_FAILED |
CliProgram.RunAsync (/silent) |
Process.Start of OmsiLaunchW.exe returned no process. |
CLI envelope, exit 7 | Check the package files and permissions; run without /silent to see the failure. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_BUILD_VALIDATION_FAILED |
OmsiLaunchService.ApplyTelemetry on plugin.build.invalid |
The start capabilities resolved, but the live Start form or one of its hook sites is not in the expected state when the plugin arms the headless start (for example another plugin already patched it). | Session diagnostic (Failed) |
Remove the conflicting plugin; see compatibility. |
OL_E_CAPABILITY_UNRESOLVED |
Plugin (plugin.capability.unresolved at start; runtime operations) |
A native capability the request needs could not be resolved and verified on this OMSI build, so it is unavailable. At start the session fails before any hook and the files are restored; a runtime operation is rejected without touching OMSI memory. Data["capability"] (runtime) or the telemetry capabilities value names it. |
Session diagnostic (Failed); runtime result |
See compatibility: the capability is not available on this build. |
OL_E_UNSUPPORTED_BUILD |
SessionPlanner (omsi.omsi2 unavailable) |
The installation is not an OMSI 2 installation: Omsi.exe is missing, is not a 32-bit x86 PE image, has no OMSI 2 (2.x) version, or the root has no maps\ or Vehicles\ directory. The executable's hash is not a criterion. |
Plan diagnostic | Point OmsiLaunch at an OMSI 2 installation root. |
OL_E_UNSUPPORTED_OPERATING_SYSTEM |
SessionPlanner (runtime.current-windows-x64 unavailable); also thrown by CurrentWindowsX64Platform.ValidateCurrent, which the service does not call |
Not Windows 10 or later, or the OS or the host process is not x64. | Plan diagnostic (CLI exit 3 when thrown) | Run on 64-bit Windows 10 or later. |
OL_E_UNSUPPORTED_OS_ARCHITECTURE |
CurrentWindowsX64Platform.ValidateCurrent only |
OS or host architecture is not x64. The service does not call ValidateCurrent; no current raise path. |
Thrown (PlatformNotSupportedException) by that method only |
See source src/OmsiLaunch.Process/RuntimePlatform.cs. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_ENTRYPOINT_NOT_FOUND |
LaunchValidation; SessionPlanner |
Validation: NEW_MAP without EntrypointIdentity and with PresentedEntrypointIndex unset or negative. Planner: the map has no entrypoint with the requested identity or exact (case-sensitive) label. |
Plan diagnostic | Set PresentedEntrypointIndex (/entrypoint-index:<n>) or an identity from /list:entrypoints /map:<id>. |
OL_E_WEATHER_INVALID |
SessionPlanner (StartWeatherResolver) |
The start weather cannot be applied: a preset that is not a file of the installation's weather folder, or an ICAO that is not four letters or digits. |
Plan diagnostic | Use an installed preset or a valid station code. |
OL_E_ENTRYPOINT_NOT_PRESENTED |
SessionPlanner |
The requested entrypoint shares its label with an earlier record of the map; OMSI presents only the first record of each label, so it cannot be selected at start. | Plan diagnostic | Choose the first record with that label, or another entrypoint. |
OL_E_ENTRYPOINT_REQUIRED |
SessionPlanner (world.presented-entrypoint unavailable) |
NEW_MAP map resolved, but no presented index and no identity. Always accompanies OL_E_ENTRYPOINT_NOT_FOUND. |
Plan diagnostic | Same. |
OL_E_HOF_NOT_FOUND |
SessionPlanner |
PlayerVehicle.Hof is not an installed Vehicles\...\*.hof. |
Plan diagnostic | Use an identity from /list:hofs. (Player vehicle fields are non-runnable on this build anyway.) |
OL_E_HOF_SOURCE_NOT_FOUND |
HofPlanner |
A HOF management source (collection, directory, vehicle or file) does not exist, has no .hof, or lacks a file named in Files. |
Plan diagnostic; start failure | Fix the source or the file list. |
OL_E_HOF_TARGET_NOT_FOUND |
HofPlanner |
A HOF target vehicle file or folder is not installed. | Plan diagnostic; start failure | Use a vehicle identity from /list:vehicles or an existing folder below Vehicles\. |
OL_E_HOF_PATH_ESCAPE |
HofPlanner |
A HOF path leaves the installation, a target is not below Vehicles\, a collection name is not a plain name, or a junction/symlink is traversed. |
Plan diagnostic; start failure | Use installation-relative paths without .. and without links. |
OL_E_HOF_CONFLICT |
HofPlanner, OmsiLaunchService |
Two HOF operations write different bytes to one file, or a mirror removes a file another operation writes. | Plan diagnostic; start failure | Reorder, split or remove conflicting operations. |
OL_E_HOF_INVALID |
HofPlanner |
HOF operation without targets or source, a non-.hof file source, a target file that is not .bus/.ovh, or a size/count limit (8 MiB per file, 256 files per operation, 256 MiB per session). |
Plan diagnostic; start failure | Fix the operation. |
OL_E_MAP_NOT_FOUND |
LaunchValidation; SessionPlanner |
Validation: NEW_MAP with MapIdentity unset or not of the form maps\<dir>\global.cfg. Planner: the map is not installed. |
Plan diagnostic | Use an identity from /list:maps. |
OL_E_NOT_FOUND |
CliProgram.Classify |
A FileNotFoundException/DirectoryNotFoundException without a code escaped, for example /list:repaints with an unknown /vehicle-scope, or /list:entrypoints with an unknown /map. |
CLI envelope, exit 6 | Correct the identity. |
OL_E_REPAINT_NOT_FOUND |
SessionPlanner |
PlayerVehicle.Repaint is not a .cti item of the model (checked only when Model is set). |
Plan diagnostic | Use an identity from /list:repaints /vehicle-scope:<bus>. |
OL_E_SITUATION_MAP_NOT_FOUND |
SessionPlanner |
The map referenced inside the selected .osn is not installed. |
Plan diagnostic | Install the map or choose another situation. |
OL_E_SITUATION_NOT_FOUND |
LaunchValidation; SessionPlanner |
SAVED_SITUATION without SituationIdentity, or the .osn is not installed. |
Plan diagnostic | Use an identity from /list:situations. |
OL_E_VEHICLE_NOT_FOUND |
SessionPlanner |
PlayerVehicle.Model is not an installed Vehicles\...\*.bus. |
Plan diagnostic | Use an identity from /list:vehicles. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_INSTALLATION_BUSY |
InstallationLease.Acquire; OmsiLaunchService.RecoverPendingAsync; FileConfigurationTransaction.RestorePendingAsync |
The installation lease (Local\OmsiLaunch.Installation.<hash>) is held by another owner in this logon session, or a journaled OMSI process (PID + creation time + executable path; or any Omsi.exe from the root for a journal past HandoffCreated without a PID) is still alive. |
Start: session diagnostic via OL_E_START_SESSION. Recovery: thrown (InvalidOperationException / IOException). CLI exit 7. |
Stop the other owner (session stop) or wait for OMSI to exit, then retry or /recover. |
OL_E_INSTALLATION_NOT_FOUND |
LaunchValidation |
Installation.RootPath is empty. |
Plan diagnostic | Pass the installation directory. |
OL_E_INSTALLATION_NOT_WRITABLE |
SessionPlanner (transaction.exact-restore unavailable); also ValidateCurrent |
The root does not exist, has the read-only attribute, or has no plugins\ directory. |
Plan diagnostic | Point at a real, writable OMSI installation. |
OL_E_PERMANENT_PLUGIN_HASH_MISMATCH |
RuntimeArtifactSet.ValidateInstalled (plan and start) |
An installed plugins\OmsiLaunch.* file differs from the hash in release-manifest.json (or from the reference closure without a manifest). |
Plan diagnostic (plan not runnable, CLI exit 1); session diagnostic via OL_E_START_SESSION only if the files change between planning and start |
Reinstall the OmsiLaunch package so plugins\ and the manifest agree. |
OL_E_PERMANENT_PLUGIN_MANIFEST_INCOMPLETE |
RuntimeArtifactSet.ValidateInstalled (plan and start) |
The manifest has no entry for a required plugin file. | Plan diagnostic; session diagnostic via OL_E_START_SESSION in the same race as above |
Reinstall the package. |
OL_E_PERMANENT_PLUGIN_MISSING |
RuntimeArtifactSet.ValidateInstalled (plan and start) |
A required plugins\OmsiLaunch.* file is absent from the OMSI installation, or a plugins/ file listed in release-manifest.json is not installed. |
Plan diagnostic; session diagnostic via OL_E_START_SESSION in the same race as above |
Install the permanent plugin closure (installation). |
OL_E_PLATFORM_CAPABILITY_MISSING |
CurrentWindowsX64Platform.ValidateCurrent only |
CurrentPlatformSupported false. Not called by the service; no current raise path. |
Thrown by that method only | See source. |
OL_E_RELEASE_MANIFEST_INVALID |
ReleaseManifest.TryReadPluginHashes / ParsePluginHashes |
release-manifest.json is empty, is not JSON, has no files array, or has an entry without path/sha256, a hash that is not 64 hex digits, a path that is rooted, contains :, an empty, . or .. segment, or a path listed twice (compared case-insensitively, / and \ equivalent). A UTF-8 BOM is accepted. |
Plan: wrapped in OL_E_RUNTIME_ARTIFACT_MISSING; start: via OL_E_START_SESSION |
Reinstall the package. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_INVALID_ARGUMENT |
LaunchValidation; CliInput.Parse/Classify |
Validation: Date.Value/Time.Value set while the mode is not Explicit. CLI: unknown flag, missing value, bad integer or range, /saved combined with /map//entrypoint, unknown command route, any ArgumentException/FormatException without a code. |
Plan diagnostic; CLI envelope exit 2 | Fix the argument. |
OL_E_INVALID_SETTING_VALUE |
ConfigurationCatalog.CreatePatch (start) |
A semantic setting value is out of range, not boolean, not in the allowed set, or malformed (graphics.particles needs four fields). Values are not validated at plan time. |
Session diagnostic via OL_E_START_SESSION |
Use a value from the settings table. |
OL_E_SETTING_NOT_WRITABLE |
SessionPlanner; CliInput.BuildSpecAsync; BuildTransactionalOverlays |
The key exists but is not writable (advanced.multithreadingCalculate, advanced.multithreadingTextureLoad, graphics.texture, graphics.textureFilter). |
Plan diagnostic; CLI exit 2 | Remove the key. |
OL_E_UNKNOWN_SETTING |
SessionPlanner; CliInput.BuildSpecAsync; BuildTransactionalOverlays |
The key is not in ConfigurationCatalog. |
Plan diagnostic; CLI exit 2 | Use a catalog key. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_SPEC_INVALID |
LaunchSpecJson.Parse |
The root is not a JSON object, or deserialization produced no record. | Thrown (InvalidDataException), CLI exit 2 |
Fix the file (LaunchSpec). |
OL_E_SPEC_NOT_FOUND |
LaunchSpecJson.LoadAsync |
The /spec file does not exist. |
Thrown (FileNotFoundException), CLI exit 6 |
Check the path. |
OL_E_SPEC_TOO_LARGE |
LaunchSpecJson.LoadAsync |
The file exceeds 1 MiB. | Thrown (InvalidDataException), CLI exit 2 |
Reduce the file. |
OL_E_SPEC_UNKNOWN_PROPERTY |
LaunchSpecJson.Validate |
A member that is not a public property of the record at that position; message OL_E_SPEC_UNKNOWN_PROPERTY: $.Path.Name. |
Thrown (InvalidDataException), CLI exit 2 |
Remove or rename the member. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_CONTROL_COMMAND_UNKNOWN |
Owner handler (OwnerSession) |
The command is not session.status, session.events, session.stop or runtime.execute with an operation argument. |
Control reply; CLI exit 7 | Use a supported command. |
OL_E_CONTROL_FAILED |
CLI client (ReportForwarded, CliEventWatch) |
The owner replied Ok = false without an error code. |
CLI envelope, exit 7 | Read the message; check the owner's console/diagnostics. |
OL_E_CONTROL_HANDLER_FAILED |
LocalControlPlane.ServeAsync |
The owner's handler threw an exception whose message carries no OL_E_ code (for example the session was already closed), or the handler's reply could not be serialized. |
Control reply | Read session status; restart the owner if it is gone. |
OL_E_CONTROL_MESSAGE_INVALID |
LocalControlPlane (both ends) |
Length prefix negative or above 64 KiB (including an oversized request frame), empty frame, JSON null, a request without Command, or JSON that could not be decoded. |
Control reply / CLI envelope | Use the documented protocol (local control plane). |
OL_E_CONTROL_MESSAGE_TOO_LARGE |
LocalControlPlane.TryRequestAsync (client) |
The client's own serialized request exceeds 64 KiB. Reported to the caller; nothing is sent. | Control reply / CLI envelope | Reduce the request. |
OL_E_CONTROL_RESPONSE_TOO_LARGE |
LocalControlPlane.ServeAsync (owner) |
The owner's reply does not fit the 64 KiB frame. The owner answers with this typed error instead of dropping the reply. session.status and session.events never reach it: their event history is trimmed oldest-first to fit. |
Control reply / CLI envelope | Retry; for events, read more often. |
OL_E_CONTROL_PROTOCOL |
LocalControlPlane, TryRequestBoundAsync |
The request ProtocolVersion is not 0.1; the owner reply could not be decoded or was empty; the owner closed the connection without replying or the connection broke after it was established; the owner reported no SessionId. |
Control reply / CLI envelope | Match client and owner versions; read session status. |
OL_E_CONTROL_SESSION_MISMATCH |
Owner handler | session.stop or runtime.execute without a session_id equal to the active session. |
Control reply; CLI exit 7 | Read session.status first and bind the request (the CLI does this automatically). |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_PLAN_NOT_RUNNABLE |
OmsiLaunchService.StartSessionAsync |
The plan passed in has IsRunnable = false, or the re-plan at start is not runnable (Omsi.exe changed, content removed, plugin closure missing); the message lists the current OL_E_ codes. |
Thrown (InvalidOperationException); CLI exit 1 |
Plan again and fix the listed diagnostics. |
All raised by SessionVisualAssets (src/OmsiLaunch.Core/SessionVisualAssets.cs). At plan time they are wrapped in OL_E_SESSION_PRESENTATION_INVALID (message carries the code); at start they surface via OL_E_START_SESSION.
| Code | Meaning / typical cause | What to do |
|---|---|---|
OL_E_ITX_PROFILE_INVALID |
The .itx file is empty, has an odd number of non-blank lines, or a URL line is not an absolute http/https URL. |
Use URL/target line pairs. |
OL_E_ITX_PROFILE_MISSING |
OverrideProfilePath (resolved against the process working directory) does not exist. Thrown as FileNotFoundException. |
Pass an existing .itx path. |
OL_E_ITX_PROFILE_REQUIRED |
InternetTextures.Mode is Override without OverrideProfilePath. CLI exit 2 when thrown. |
Provide /internet-textures-profile:<file.itx>. |
OL_E_ITX_TARGET_OUTSIDE_TEXTURE_PATH |
A target line is rooted, contains .., starts with \, resolves outside the installation, lacks a Texture\ component, or traverses a junction/symlink. |
Use Texture\... relative targets. |
OL_E_SPLASH_ASSET_DIRECTORY_MISSING |
CustomAssetDirectory does not exist. |
Fix the directory. |
OL_E_SPLASH_ASSET_MISSING |
ENG.bmp or <LANG>.bmp is missing from the asset directory, or a packaged assets\splash\<LANG>.bmp is missing when seeding .omsilaunch\assets\splash. |
Provide the BMPs / reinstall the package. |
OL_E_SPLASH_FORMAT_UNSUPPORTED |
A splash BMP is not a 640×480 24-bit BM bitmap. |
Convert the image. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_PROCESS_CLEANUP_FAILED |
OmsiLaunchService (start failure and supervisor fault paths) |
Terminating or waiting for OMSI during error cleanup threw; the inner message follows. | Session diagnostic (added to a Failed session) |
Ensure no Omsi.exe remains, then /recover if a journal is pending. |
OL_E_PROCESS_CREATION_TIME_FAILED |
CurrentWindowsX64Platform.StartAsync |
GetProcessTimes failed right after CreateProcessW (Win32=<code>); the process is terminated. |
Session diagnostic via OL_E_START_SESSION |
Retry; check antivirus/permissions. |
OL_E_PROCESS_EXITED_EARLY |
OmsiLaunchService.SuperviseAsync |
OMSI exited before gameplay.entered (crash, an OMSI error dialog was closed, the window was closed). |
Session diagnostic (Failed); restore runs |
Check OMSI's own logs and logfile.txt; look at RuntimeEvents for the last plugin event. |
OL_E_PROCESS_START_FAILED |
CurrentWindowsX64Platform.StartAsync |
CreateProcessW failed (Win32=<code> in the message). |
Session diagnostic via OL_E_START_SESSION |
Resolve the Win32 error (missing file, access denied, policy). |
OL_E_PROCESS_SUPERVISION |
OmsiLaunchService.SuperviseAsync |
The supervisor loop threw (telemetry read, process wait/terminate, journal write); OMSI is terminated and restore attempted. | Session diagnostic (Failed) |
Read the inner message and the host log. |
OL_E_PROCESS_TERMINATE_FAILED |
CurrentWindowsX64Platform.Terminate |
TerminateProcess failed (Win32=<code>). |
Inside OL_E_PROCESS_SUPERVISION / OL_E_PROCESS_CLEANUP_FAILED messages |
Terminate OMSI manually, then /recover. |
OL_E_PROCESS_WAIT_FAILED |
CurrentWindowsX64Platform.WaitForExitAsync |
WaitForSingleObject on the process handle failed. |
Inside OL_E_PROCESS_SUPERVISION / OL_E_PROCESS_CLEANUP_FAILED messages |
Same. |
"Runtime detail" means the specific code in ErrorCode, with the message in Values["detail"] and the exception type in Values["exception"].
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_CAMERA_PRESET_FAMILY_UNSUPPORTED |
OmsiCameraLockWriter |
camera.lock with preset while family is 2 (external) or 3 (map); presets exist only for driver (0) and passenger (1). |
Runtime detail | Omit preset or use family 0/1. |
OL_E_DATE_TIME_APPLY_FAILED |
LaunchValidation |
Date/Time mode Explicit without a value or with out-of-range components. The name is historical; it is a plan-time validation error. |
Plan diagnostic | Fix the value (and note explicit date/time is non-runnable on this build). |
OL_E_MAKEVEHICLE_BUS_NOT_FOUND |
CurrentRuntimeControl.MakeBasicRoadVehicle |
road-vehicles.spawn: the .bus path does not exist under the OMSI working directory (checked before the native call so OMSI cannot substitute a fallback). |
Runtime detail | Use an identity from vehicles list//list:vehicles. |
OL_E_MAKEVEHICLE_DELTA_MULTIPLE |
same | Native MakeVehicle changed the road-vehicle collection by more than one object. | Runtime detail (native_status, counts in the message) |
Report; the created objects remain until the session ends. |
OL_E_MAKEVEHICLE_DELTA_ZERO |
same | The collection did not change; OMSI refused the vehicle silently. | Runtime detail | Check the .bus file; try another model. |
OL_E_MAKEVEHICLE_NATIVE_FAILED |
same | Any other non-zero native status. | Runtime detail | Report with the message counts. |
OL_E_PLACE_RANDOM_BUS_FAILED |
CurrentRuntimeControl.PlaceRandomBus |
The profiled PlaceRandomBus call returned a failure status. | Runtime detail | Retry once gameplay is stable; report. |
OL_E_RUNTIME_ARGUMENT_REQUIRED |
PublicCapabilityRegistry.ValidateRuntimeArguments; plugin-side checks (time.set with no hour/minute/second; camera.set with no family/field_of_view; camera.lock without a parseable family; vehicle/curve operations) |
A required argument is missing or blank. | Runtime result (registry; CLI exit 2) or runtime detail (plugin) | Supply the argument (runtime control). |
OL_E_RUNTIME_ARTIFACT_MISSING |
OmsiLaunchService.PlanSessionAsync |
The plugin closure reference directory/file or the native bridge given in OmsiLaunchRuntimePaths cannot be loaded (may wrap OL_E_RELEASE_MANIFEST_INVALID). |
Plan diagnostic | Run from an intact package. |
OL_E_RUNTIME_BASELINE_UNAVAILABLE |
RuntimeBatch (/runtime-write-batch, INTERNAL harness) |
The baseline time.read/camera.read failed, so the write test was skipped. |
Batch artifact only | Not user-facing. |
OL_E_RUNTIME_BUS_IDENTITY_INVALID |
CurrentRuntimeControl.ValidateBasicBusIdentity |
model is empty, longer than 240 characters, contains NUL or .., does not start with Vehicles\ or does not end with .bus. |
Runtime detail | Pass Vehicles\<dir>\<file>.bus. |
OL_E_RUNTIME_CHANNEL_BUSY |
none (retained for compatibility) | No longer emitted. Earlier builds raised it when a cancelled request stayed in the slot; every terminal path of a request now resets the slot, and a leftover request or response found at the start of a new request is cleared. | — | — |
OL_E_RUNTIME_CHANNEL_CLOSED |
OmsiLaunchService.LiveSession.RequestRuntimeAsync |
The mailbox was disposed because the session is ending. | Thrown (InvalidOperationException) |
None; the session is over. |
OL_E_RUNTIME_CHANNEL_STATE_INVALID |
CurrentRuntimeCommandStore.RequestAsync |
The mailbox slot held a state value that is not idle, requested or responded (corruption). The slot is reset and the error is raised; the next request works normally. | Thrown (InvalidDataException) |
Retry; report if persistent. |
OL_E_RUNTIME_CONSTANTS_UNAVAILABLE |
OmsiRuntimeReaders |
The vehicle's constants block pointer is null. | Runtime detail | The vehicle has no constants; nothing to do. |
OL_E_RUNTIME_CONSTANT_NOT_FOUND |
OmsiRuntimeReaders |
name is not in the vehicle's constant table. |
Runtime detail | List constants first. |
OL_E_RUNTIME_CREATED_OBJECT_INVALID |
OmsiRuntimeReaders.RegisterRoadVehicleHandleAsync |
The object created by spawn has a VMT outside the OMSI image range. | Runtime detail | Report. |
OL_E_RUNTIME_CREATED_OBJECT_NOT_IN_COLLECTION |
same | The created object is not in the road-vehicle collection. | Runtime detail | Report. |
OL_E_RUNTIME_CURVE_DEGENERATE |
OmsiRuntimeReaders.EvaluateRoadVehicleCurveAsync |
Two consecutive curve points share the same X. | Runtime detail | Content problem in the vehicle's curve. |
OL_E_RUNTIME_CURVE_EMPTY |
same | The curve has no points. | Runtime detail | Same. |
OL_E_RUNTIME_CURVE_INVALID |
same | No segment of the curve contains x. |
Runtime detail | Evaluate inside the curve's domain. |
OL_E_RUNTIME_CURVE_NOT_FOUND |
same | name is unknown or its function pointer is null. |
Runtime detail | List curves first. |
OL_E_RUNTIME_HOF_UNAVAILABLE |
OmsiRuntimeReaders.ReadRoadVehicleHofsAsync |
The vehicle definition pointer is null. | Runtime detail | Handle refers to a vehicle without definition data. |
OL_E_RUNTIME_INSTALLATION_INCOMPLETE |
CliProgram.RunAsync (owner mode) |
plugins\OmsiLaunch.Plugin.opl or plugins\OmsiLaunch.Native.x86.dll is missing beside the executable. |
CLI envelope, exit 7 | Reinstall the package. |
OL_E_RUNTIME_OBJECT_HANDLE_REQUIRED |
CurrentRuntimeControl |
handle missing or blank for road-vehicle.read, human.read, vehicle.variables.list, vehicle.string-variables.list, vehicle.constants.list, vehicle.curves.list (the registry normally rejects these first with OL_E_RUNTIME_ARGUMENT_REQUIRED). |
Runtime detail | Supply the handle. |
OL_E_RUNTIME_OBJECT_HANDLE_STALE |
OmsiRuntimeReaders |
The handle is unknown, the object left the collection, the address generation advanced, or the object fingerprint (VMT + definition/model identity) changed because the address was reused. Residual blind spot: same class and model recreated at the same address between two list reads. | Runtime detail | Run road-vehicles.list/humans.list again and use the new handle. |
OL_E_RUNTIME_OPERATION_FAILED |
CurrentRuntimeControl.Execute; CurrentRuntimeCommandMailbox.TryDispatch; D3DRuntimeApi fallback |
Generic plugin-side failure wrapper; Values["detail"] holds the message (often a more specific code) and Values["exception"] the exception type. An exception that escapes an operation inside the mailbox dispatcher is also answered with this code (without values) instead of leaving the request unanswered. |
Runtime result | Read detail. |
OL_E_RUNTIME_OPERATION_UNAVAILABLE |
CurrentRuntimeControl.Execute |
The plugin has no implementation for an operation the registry allowed (registry/plugin version drift). | Runtime detail | Reinstall a consistent package. |
OL_E_RUNTIME_OPERATION_UNKNOWN |
PublicCapabilityRegistry.ValidateRuntimeArguments |
The operation is not in PublicRuntimeOperationIds, including every internal.* operation. Checked before session lookup. |
Runtime result; control reply; CLI exit 2 | Use a public operation id. |
OL_E_RUNTIME_PLAYER_VEHICLE_UNAVAILABLE |
OmsiCameraLockWriter |
camera.lock with preset while there is no player vehicle (headless sessions have none). Also reported as code of the camera.lock.degraded event when re-application fails. |
Runtime detail / runtime event | Lock without a preset, or use a session with a player vehicle. |
OL_E_RUNTIME_PROTOCOL_MISMATCH |
D3DRuntimeApi |
A successful D3D result had no values, or an unknown device-state string. | Thrown (OmsiRuntimeException) |
Match host and plugin versions. |
OL_E_RUNTIME_REQUEST_ID_REUSED |
CurrentRuntimeCommandStore.RequestAsync |
The slot holds a stale response with the same request id as the new request. The stale response is cleared before the error is raised. | Thrown (InvalidOperationException) |
Use strictly increasing request ids. |
OL_E_RUNTIME_REQUEST_TIMEOUT |
CurrentRuntimeCommandStore.RequestAsync |
No response within timeout; the slot is reset and a late response is discarded. |
Thrown (TimeoutException); CLI exit 5 |
Retry with a longer timeout; check that OMSI is not blocked (modal dialog, loading). |
OL_E_RUNTIME_RESPONSE_INVALID |
CurrentRuntimeCommandStore |
The response envelope is corrupt, has a bad length (negative, zero or larger than the slot), a foreign session id or a different request id. The slot is reset before the error is raised, so the next request works normally. | Thrown (InvalidDataException) |
Retry; report if persistent. |
OL_E_RUNTIME_CURSOR_INVALID |
ListPage (plugin) |
The cursor of a list operation is malformed or belongs to another kind of list. |
Runtime detail | Pass the next_cursor of the previous page of the same operation, or omit it. |
OL_E_RUNTIME_RESPONSE_TOO_LARGE |
CurrentRuntimeCommandMailbox.TryDispatch |
The serialized result exceeds the 64 KiB mailbox. Paged list results are shortened to fit instead and continue with next_cursor; no list result reaches this code. |
Runtime result | Use a narrower operation or a smaller limit. |
OL_E_RUNTIME_SCRIPT_OBJECT_UNAVAILABLE |
OmsiRuntimeReaders |
The vehicle's script definition or state pointer is null. | Runtime detail | The vehicle has no script objects. |
OL_E_RUNTIME_SESSION_MISMATCH |
OmsiLaunchService.ExecuteRuntimeAsync; CurrentRuntimeCommandStore; plugin mailbox |
RuntimeCommand.SessionId differs from the handle's session id (thrown by the host), or a request reached a plugin bound to another session (returned by the plugin as a typed result). |
Thrown (InvalidOperationException) / runtime result |
Build the command with session.SessionId. |
OL_E_WEATHER_APPLY_FAILED |
PluginRuntime (world.failed event code) |
The start weather could not be applied after the world started: OMSI has no ICAO station configured for /weather-real, or its weather objects are unavailable. The session fails. |
Session failure | Configure a station in OMSI or use /weather-icao. |
OL_E_RUNTIME_SETTING_NOT_PERSISTENT |
OmsiWeatherWriter.Prepare |
A weather.set key names a value OMSI derives on every weather tick (humidity, light factors, cloud transparency, precipitation flag, wet ground); nothing is written. |
Runtime result | Set the source key named in detail (for example dew_point instead of relative_humidity). |
OL_E_RUNTIME_SETTING_UNAVAILABLE |
OmsiWeatherWriter.Prepare |
Unknown weather.set key; nothing is written. |
Runtime result | Use a key listed in capabilities. |
OL_E_RUNTIME_STRING_VARIABLE_NOT_FOUND |
OmsiRuntimeReaders |
name is not in the string-variable table. |
Runtime detail | List string variables first. |
OL_E_RUNTIME_VALUE_INVALID |
OmsiWeatherWriter.ParseBoolean |
A weather boolean is not true/false/1/0. Currently unreachable (see above). |
Runtime detail (defined) | See source. |
OL_E_RUNTIME_VALUE_OUT_OF_RANGE |
CurrentRuntimeControl, OmsiCameraWriter, OmsiCameraLockWriter, OmsiRuntimeReaders, OmsiWeatherWriter |
time.set: hour 0..23, minute 0..59, second 0..59.999; camera.set: family 0..3, field_of_view 10..170; camera.lock: preset not an integer, family 0..3, preset 0..255; road-vehicles.place-random: ai_type 0..255, group/type/tour/line 0..65535 (type may be -1), scheduled 0..1; vehicle.variable.set: value not finite; vehicle.curve.evaluate: x not finite. |
Runtime detail | Use a value in range. |
OL_E_RUNTIME_VARIABLE_NOT_FOUND |
OmsiRuntimeReaders |
name is not in the numeric variable table. |
Runtime detail | List variables first. |
OL_E_RUNTIME_VARIABLE_UNAVAILABLE |
OmsiRuntimeReaders |
The variable slot or value address is null. | Runtime detail | The variable is not materialized for this vehicle. |
OL_E_TIME_APPLY_FAILED |
CurrentRuntimeControl.SetTime |
The clock scalars were written but the profiled native SetTime call returned failure. | Runtime detail | Retry; read back with time.read. |
All raised by CurrentRuntimeControl (ThrowD3D mapping of the native status; detail carries the operation and HRESULT, native_status the numeric status). Surface: runtime result with the code in ErrorCode; D3DRuntimeApi rethrows as OmsiRuntimeException.
| Code | Native status / cause | What to do |
|---|---|---|
OL_E_D3D_DEVICE_LOST |
8: the Direct3D device is lost. | Wait for d3d.restored; recreate textures (generation changed). |
OL_E_D3D_INVALID_ARGUMENT |
14: missing or invalid width, height, level, x, y, format or handle (ranges: width/height 1..4096, levels 0..16, level 0..15, x/y 0..4095). |
Fix the arguments. |
OL_E_D3D_INVALID_PIXEL_BUFFER |
pixels_base64 is not valid Base64 or exceeds 48 KiB. |
Send smaller rectangles. |
OL_E_D3D_INVALID_TEXTURE_FORMAT |
6, or an unknown format name (valid: A8R8G8B8, X8R8G8B8, R5G6B5, X1R5G5B5, A1R5G5B5, A4R4G4B4, A8, L8, A8L8). |
Use a listed format. |
OL_E_D3D_NATIVE_CALL_FAILED |
Any other status; the HRESULT is in detail. |
Report with the HRESULT. |
OL_E_D3D_NOT_READY |
7: the device is not ready (before the first frame or while stopping). | Retry after d3d.ready. |
OL_E_D3D_RESET_IN_PROGRESS |
9: a device reset is in progress. | Retry after d3d.restored. |
OL_E_D3D_RESOURCE_RELEASED |
13: the texture handle was already released. | Do not reuse released handles. |
OL_E_D3D_STALE_RESOURCE_HANDLE |
12: the handle belongs to a previous device generation; or the handle string is not d3dtex-<session>-<hex> / is zero. |
Recreate the texture. |
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_CAPABILITY_UNAVAILABLE |
SessionPlanner; ApplyTelemetry on plugin.request.unsupported |
Plan: LastMapState, EntrypointIdentity, date/time/year mode, weather mode, player-vehicle fields or input documents requested (Requested capability unavailable: <name>). Telemetry: the plugin rejected the handoff (cannot happen for a runnable plan). |
Plan diagnostic; session diagnostic | Remove the unsupported request (known limitations). |
OL_E_HEADLESS_ARM_FAILED |
ApplyTelemetry on headless.arm.failed |
The plugin could not arm the one-shot headless start hook in OMSI. | Session diagnostic (Failed) |
Verify the build; report. |
OL_E_NO_ACTIVE_SESSION |
CLI client (ReportForwarded, CliEventWatch) |
No owner answers on the installation's control pipe (no session, or the owner is still starting/validating). | CLI envelope, exit 4 | Start a session, or wait until it is Running. |
OL_E_PLUGIN_NOT_LOADED |
SuperviseAsync |
StartupTimeoutSeconds elapsed before plugin.started (OMSI did not load plugins\OmsiLaunch.Plugin.opl, or is stuck before plugin init). |
Session diagnostic (Failed) |
Check the plugin closure, plugins\OmsiLaunch.Plugin.opl and OMSI's logfile.txt. |
OL_E_PLUGIN_PROTOCOL_MISMATCH |
ApplyTelemetry on plugin.handoff.invalid or unparseable telemetry JSON |
The plugin could not read/verify the startup handoff (versions 3 to 6, SHA-256), or sent invalid telemetry. | Session diagnostic (Failed) |
Match host and plugin versions (reinstall the package). |
OL_E_SESSION_ALREADY_ACTIVE |
CliProgram.RunAsync |
An owner already answers session.status for this installation. |
CLI envelope, exit 7 | Use client commands (session status, session stop, runtime commands). |
OL_E_SESSION_NOT_RUNNING |
OmsiLaunchService.ExecuteRuntimeAsync |
The session state is not Running. |
Thrown (InvalidOperationException) |
WaitForAsync(session, SessionState.Running, ...) first. |
OL_E_SESSION_PRESENTATION_INVALID |
SessionPlanner |
The splash/ITX plan could not be built; the message carries the presentation code. | Plan diagnostic | See Presentation. |
OL_E_SESSION_START_FAILED |
WindowsHost.ShowFailure (OmsiLaunchW dialog) |
Fallback code shown when a launch plan is not runnable or the session did not reach gameplay, and no OL_E_ diagnostic exists. |
Message box only | Read .omsilaunch\diagnostics. |
OL_E_SITUATION_LOAD_FAILED |
ApplyTelemetry on world.situation.failed |
The native saved-situation start returned a failure (native_status in the event). |
Session diagnostic (Failed) |
Check the .osn and its map. |
OL_E_STARTUP_TIMEOUT |
SuperviseAsync |
The plugin started, but Running was not reached within StartupTimeoutSeconds. |
Session diagnostic (Failed) |
Increase /startup-timeout for large maps; check RuntimeEvents for the last world event. |
OL_E_START_SESSION |
OmsiLaunchService.StartAsync |
Any exception in the start path; the message is the inner message (usually starting with the inner code). | Session diagnostic (Failed) |
Act on the inner code. |
OL_E_WORLD_START_FAILED |
ApplyTelemetry on world.failed |
The native NEW_MAP start returned a failure (native_status in the event). |
Session diagnostic (Failed) |
Check the map, entrypoint index and OMSI's logs. |
All raised by SessionProfileCompiler (src/OmsiLaunch.Core/SessionProfiles.cs) or CliInput, thrown as SessionProfileException (an IOException with Code), CLI exit 2. See session profiles.
| Code | Meaning / typical cause | What to do |
|---|---|---|
OL_E_SESSION_PROFILE_ASSET_MISSING |
The preset's splash assets directory or internet-textures profile file does not exist inside the package. |
Add the asset. |
OL_E_SESSION_PROFILE_INVALID |
Structural or limit violation: more than 256 KiB, not exactly one root mapping, YAML anchors, unknown key, missing required key, non-scalar where a scalar is required, id differs from the directory name, presets not 1..99 or duplicate index, non-positive timeouts, unsupported weather/splash/internet-textures mode, date/time not explicit, invalid YAML, number/date parse errors. |
Fix the YAML per the message. |
OL_E_SESSION_PROFILE_MAP_MISMATCH |
compatibility.maps is non-empty and does not contain the selected map (NEW_MAP) or the map of the selected situation (SAVED_SITUATION). |
Choose a compatible world. |
OL_E_SESSION_PROFILE_NOT_FOUND |
<root>\.omsilaunch\session-profiles\<id>\profile.yaml does not exist. |
Check the id. |
OL_E_SESSION_PROFILE_OVERRIDE_CONFLICT |
An explicit CLI argument targets a field owned by the selected profile/preset. | Drop the flag or choose another preset. |
OL_E_SESSION_PROFILE_PATH_ESCAPE |
The id contains \, /, : or ..; or an asset path is rooted, escapes the package or traverses a junction/symlink. |
Keep paths inside the package. |
OL_E_SESSION_PROFILE_PRESET_NOT_FOUND |
/predefined-profile-index missing, outside 1..99, or not declared by the profile. |
Use a declared preset index. |
OL_E_SESSION_PROFILE_SCHEMA_UNSUPPORTED |
schema is not omsilaunch.session-profile/v1. |
Use the supported schema. |
OL_E_SESSION_PROFILE_SETTING_NOT_WRITABLE |
A preset setting key is known but not writable. | Remove the key. |
OL_E_SESSION_PROFILE_SETTING_UNKNOWN |
A preset setting key is not in the catalog. | Use a catalog key. |
See transactions and recovery.
| Code | Raised by | Meaning / typical cause | Surface | What to do |
|---|---|---|---|---|
OL_E_CLOSECHECK_REMOVE_FAILED |
OmsiLaunchService.RemoveStaleClosecheck |
A stale closecheck still exists after File.Delete. |
Session diagnostic via OL_E_START_SESSION |
Remove <root>\closecheck manually (permissions). |
OL_E_RECOVERY_ABSENT_OWNERSHIP_MISMATCH |
FileConfigurationTransaction.RestoreAsync |
A path that did not exist before the session now contains content that differs from what the session applied; it is not removed and the journal is kept. | Thrown (IOException); inside OL_E_RESTORE_FAILED / OL_E_START_SESSION; CLI exit 8 |
Inspect the file; remove or move it, then /recover. |
OL_E_RECOVERY_ABSENT_OWNERSHIP_UNVERIFIED |
RestoreAsync (pre-fingerprint journal) |
The journal has no applied-content fingerprint for an originally absent, non-deletion path, so ownership cannot be proven. At session start the recovery is deferred and retried with this session's planned bytes; via RecoverPendingAsync it is thrown. |
Thrown (IOException); CLI exit 8 |
Start a session with the same spec (supplies the bytes), or inspect and remove the file, then /recover. |
OL_E_RECOVERY_BACKUP_CORRUPT |
RestoreAsync |
A backup's SHA-256 does not match the snapshot recorded in the journal; nothing is written. | Thrown; inside OL_E_RESTORE_FAILED; CLI exit 8 |
Restore the file from your own backup; then delete the journal only when you are sure. |
OL_E_RECOVERY_JOURNAL_MISSING |
RestoreAsync |
Snapshots exist in memory but journal.json is gone (deleted during the session). |
Thrown; inside OL_E_RESTORE_FAILED |
Verify the session files manually. |
OL_E_RECOVERY_JOURNAL_REMOVE_FAILED |
FileConfigurationTransaction.RemoveJournal |
journal.json still exists after deletion (restore itself succeeded and was verified). |
Thrown; inside OL_E_RESTORE_FAILED; CLI exit 8 |
Delete <root>\.omsilaunch\journal.json (permissions) or run /recover again (idempotent). |
OL_E_RESTORE_DEFERRED |
OmsiLaunchService (start failure / supervisor) |
OMSI's exit could not be confirmed, so files were not replaced while it may still use them; the journal is retained. | Session diagnostic (Failed) |
After Omsi.exe has exited, run /recover (or the next start recovers automatically). |
OL_E_RESTORE_FAILED |
OmsiLaunchService (start failure / supervisor) |
RestoreAsync threw; the message carries the inner code; the journal is retained. |
Session diagnostic (Failed); CLI exit 8 when thrown from /recover |
Act on the inner code, then /recover. |
Codes of the native pause menu operations (ui.pause.*).
| Code | Emitted by | Meaning | Channel | Action |
|---|---|---|---|---|
OL_E_UI_NOT_PAUSED |
CurrentRuntimeControl |
The operation needs OMSI paused with its native pause menu shown (take-over, action), and it is not. | Runtime result | Wait until the user paused OMSI. |
OL_E_UI_BUSY |
CurrentRuntimeControl |
A pause menu action is scheduled or running (it can sit in a native modal dialog), or the call arrived inside OMSI's frame. | Runtime result | Poll ui.pause.state until busy is false, then retry. |
OL_E_UI_ALREADY_TAKEN_OVER |
CurrentRuntimeControl |
ui.pause.take-over while the native pause menu is already taken over. |
Runtime result | Use ui.pause.state, or ui.pause.restore-native first. |
| Code | Raised by | Meaning | Surface | What to do |
|---|---|---|---|---|
OL_W_BUILD_UNRECOGNIZED |
SessionPlanner |
The OMSI 2 executable has no known layout (its code identity is not in the build catalog). The plan stays runnable: every native capability is resolved and verified in process, and one that cannot be verified is unavailable. | Plan diagnostic (runnability not affected) | None needed; check /plan and profiles for predicted capabilities. |
OL_W_COOPERATIVE_SHUTDOWN_UNAVAILABLE |
OmsiLaunchService (supervisor) |
Behavior.CooperativeShutdown was requested but OMSI could not be asked to quit (its exit routine is unresolved on this build, or OMSI is already closing), or it did not exit within ShutdownTimeoutSeconds: OMSI was terminated instead. The restore runs as usual. |
session diagnostic | None: the session ends as with a forced termination. |
OL_W_CAPABILITY_PENDING |
SessionPlanner |
A capability the start needs could not be resolved from the executable file (for example a DRM-protected executable whose loaded image differs from the file). It is resolved in process at start. | Plan diagnostic (runnability not affected) | None needed; a start fails with OL_E_CAPABILITY_UNRESOLVED if it cannot be resolved in process either. |
OL_W_MODULE_NOT_LOADED |
SessionPlanner |
A module that joined the session by itself (settings file, content or default activation) cannot be loaded (Data["code"] names why, Data["activation"] how it joined). |
Plan diagnostic (runnability not affected) | Fix, disable or remove the module. |
OL_W_MODULE_SETTING_IGNORED |
SessionPlanner, ModuleSettingsFile, ModuleSettings |
An entry of .omsilaunch\modules.ini cannot be used (not a module section, outside a section, unknown key, invalid value; the default is used), or settings were requested for a module the session does not load. |
Plan diagnostic (runnability not affected) | Correct the entry or the request. |
OL_W_RESTORE_FOREIGN_FILE_RETAINED |
FileConfigurationTransaction.RestoreAsync |
A session-deletion path (ITX target, Texture\standard.ipr, closecheck) did not exist before the session and exists now, but no OMSI process ever started under this journal, so the file cannot be a session by-product. It is kept and reported (message = relative path, Data["sha256"]); the transaction still completes. |
Session diagnostic / RecoveryStatus.Diagnostics (state not affected) |
Inspect the file; remove it yourself if unwanted. |
Runtime modules (see runtime modules). At planning a code is a plan diagnostic: for a requested module it makes the plan not runnable; for a module that joined by itself (settings file, content, default) the plan reports OL_W_MODULE_NOT_LOADED instead. In a session a code is a session diagnostic (the session continues unless the code is OL_E_MODULE_SESSION_FAILED), and for a module operation it is the runtime result.
| Code | Raised by | Meaning | Surface | What to do |
|---|---|---|---|---|
OL_E_MODULE_MANIFEST_INVALID |
ModuleManifestParser, ModuleCatalog |
module.json is missing, is not valid omsilaunch.runtime-module/v1, or its id differs from its directory name. The message names the field. |
Plan diagnostic; ListRuntimeModulesAsync |
Fix the manifest. |
OL_E_MODULE_NOT_FOUND |
ModuleEligibility |
A requested module id is not installed below plugins\OmsiLaunch.Modules. |
Plan diagnostic | Check /list:RuntimeModules. |
OL_E_MODULE_INTEGRITY |
ModuleCatalog, ModuleHost |
A pinned file is missing, differs from its pinned SHA-256 or is reached through a reparse point; or, in process, module.json changed after planning. |
Plan diagnostic; session diagnostic | Reinstall the module. |
OL_E_MODULE_PROTOCOL_UNSUPPORTED |
ModuleEligibility |
The module's bridge_protocol range includes none of the protocols this build serves (1 and 2). |
Plan diagnostic | Use a module version made for this OmsiLaunch. |
OL_E_MODULE_CAPABILITY_UNRESOLVED |
ModuleEligibility, ModuleHost |
A required capability is unknown to this build, unavailable on this installation, or not resolved in process. | Plan diagnostic; session diagnostic | See capabilities and profiles. |
OL_E_MODULE_CONTENT_BINDING |
ModuleEligibility, ModuleHost |
The session does not run the module's bound map, or a bound file differs from its pinned SHA-256. | Plan diagnostic; session diagnostic | Start the bound map with the bound content. |
OL_E_MODULE_COMPONENT_UNSUPPORTED |
ModuleHost |
The module asked to start a file that is not one of its auxiliary components. | Runtime result inside the module | Module defect. |
OL_E_MODULE_LOAD_FAILED |
ModuleHost, ModuleSessionPrograms |
The managed component could not be loaded or its entry type created; or the module's session program could not be started or exited before it was ready. | Session diagnostic | Check the module build (x86-compatible, entry type implements IRuntimeModule). |
OL_E_MODULE_PHASE_FAILED |
ModuleHost |
Arm, GameplayReady or Stop threw. |
Session diagnostic | Module defect; its failure_policy applied. |
OL_E_MODULE_PHASE_TIMEOUT |
ModuleHost, ModuleSessionPrograms |
A phase or an operation returned after its budget (timeouts, timeout_ms), or a session program was not ready within prepare_ms. |
Session diagnostic; runtime result | Module defect; its failure_policy applied. |
OL_E_MODULE_DISABLED |
ModuleHost |
The module was disabled or failed earlier in the session. | Runtime result | See the session diagnostics for the first failure. |
OL_E_MODULE_NOT_LOADED |
OmsiLaunchService.ExecuteRuntimeAsync, ModuleHost |
The session did not load this module, or it is not ready yet (before gameplay). | Runtime result | Request the module at start; wait for Running. |
OL_E_MODULE_OPERATION_UNKNOWN |
OmsiLaunchService.ExecuteRuntimeAsync, ModuleHost |
The module declares no such operation. | Runtime result | Check the module's operations. |
OL_E_MODULE_OPERATION_FAILED |
ModuleHost |
The operation failed without a catalogued code; a module's own code is in Values["module_code"]. |
Runtime result | Module-specific. |
OL_E_MODULE_CLEANUP_INCOMPLETE |
ModuleHost |
After stop or failure a tracked resource was still alive (an auxiliary process that did not exit, a background thread that did not end) or its release threw. | Session diagnostic | Report the module; the process ends with OMSI in any case. |
OL_E_MODULE_SESSION_FAILED |
OmsiLaunchService |
A module whose failure_policy is fail-session failed; the session is stopped and restored. |
Session diagnostic (state Failed) |
See the preceding module code. |
OL_E_MODULE_SETTING_INVALID |
ModuleEligibility, ModuleSettings, CLI |
A requested module setting is invalid or not declared by the module, a module is both enabled and disabled, a setting name is not <module-id>.<key>, or a module flag is declared by several modules. |
Plan diagnostic (not runnable); CLI error | Correct the request; /list:RuntimeModules shows each module's settings. |
OL_E_MODULE_CONFLICT |
ModuleEligibility, ModuleHost |
An OMSI plugin the module lists under conflicts.plugins is switched on (plugins\*.opl), or loaded in OMSI. The reason names the .opl. |
Plan diagnostic; session diagnostic | Switch off or remove that plugin. OmsiLaunch never changes it. |
OL_E_MODULE_OPERATION_NOT_DECLARED |
ModuleHost |
A module asked to run a catalog operation in process (IRuntimeModuleContext.Runtime, native run_operation) that its manifest does not list in runtime_operations. The call never reaches OMSI. |
Runtime result | List the operation in runtime_operations (it needs bridge.runtime and bridge_protocol.min 3). |
OL_E_MODULE_CONTENT_INPUT_UNDECLARED |
ModuleHost |
A module asked to locate community content (IRuntimeModuleContext.Content) of a kind its manifest does not declare in content_inputs. |
Context result | Declare the kind in content_inputs. |
OL_E_MODULE_CONTENT_INPUT_INVALID |
RealmapPackage |
The openomsi-realmap package of the map cannot be read safely: it is reached through a reparse point, contains one, has more than 50,000 files or is larger than 4 GiB, or cannot be read. |
Context result | Repair or regenerate the package; the module degrades by resource. |
OL_E_MODULE_HOOK_UNAVAILABLE |
reserved | Reserved; a native component receives the numeric hook results described in runtime modules instead. | none | none |
| Code | Emitted by | Message / data | Meaning |
|---|---|---|---|
process.started |
OmsiLaunchService.LiveSession.Attach |
message = PID; Data["thread_id"], Data["creation_utc"] (ISO 8601) |
Omsi.exe was created and its identity recorded. Session diagnostic. |
closecheck.stale-removed |
OmsiLaunchService.RemoveStaleClosecheck |
message = SHA-256 of the removed file | A closecheck that existed before the session was permanently removed (SuppressStaleClosecheckWarning = true). Session diagnostic. |
restore.session-artifact-removed |
FileConfigurationTransaction.RestoreAsync |
message = relative path; Data["sha256"] |
A session-deletion path was recreated by OMSI during a session whose process had started; it was removed to restore original absence. Session diagnostic / RecoveryStatus.Diagnostics. |
plugin.integrity.reference |
OmsiLaunchService.PlanSessionAsync |
message = manifest or self |
Which reference the permanent plugin validation uses. Plan diagnostic. |
module.planned |
SessionPlanner |
message = module id; Data["module"], Data["status"], Data["activation"] |
The module is in the plan. Plan diagnostic. |
module.disabled |
SessionPlanner |
message = module id | A content or default module was kept out by a disable (request or settings file). Plan diagnostic. |
session_profile.selected |
SessionPlanner |
message = profile id; `Data["session_profile.id | name |
Runtime event names (RuntimeEvent.Type, not diagnostics) are listed in the session lifecycle.