Skip to content

feat: log Kit version info on AppLauncher startup#5844

Open
pv-nvidia wants to merge 3 commits into
isaac-sim:developfrom
pv-nvidia:pv/log-kit-version
Open

feat: log Kit version info on AppLauncher startup#5844
pv-nvidia wants to merge 3 commits into
isaac-sim:developfrom
pv-nvidia:pv/log-kit-version

Conversation

@pv-nvidia
Copy link
Copy Markdown
Contributor

@pv-nvidia pv-nvidia commented May 28, 2026

Summary

Prints Kit version, kernel version, and git hash to stderr after AppLauncher initialization completes.

Motivation

While debugging a multi-GPU CI issue (#5822), we discovered the CI was silently using Kit 110.0 (from a stale pip-installed isaacsim==6.0.0) instead of Kit 111.0 from the container. Having version info printed on every startup would have caught this immediately.

Changes

  • Added _log_kit_version_info() method to AppLauncher
  • Called after AppLauncher initialization complete message
  • Prints to sys.__stderr__ (same stream as the init-complete signal)
  • Falls back to "unknown" if the git hash token is not defined

Example output

[ISAACLAB] AppLauncher initialization complete
[ISAACLAB] Kit version: 111.0.0+develop.12345.abcdef01.gl
[ISAACLAB] Kit kernel:  211.0.0+release.12345.abcdef01.gl
[ISAACLAB] Kit hash:    abcdef01

Prints Kit version, kernel version, and git hash to stderr after
AppLauncher initialization completes. This makes it easy to verify
which Kit/Isaac Sim runtime is actually being used in CI logs without
needing to add ad-hoc version probes to individual tests.

Output is best-effort (wrapped in try/except) so it never breaks
existing tests.
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label May 28, 2026
isaaclab-review-bot[bot]

This comment was marked as outdated.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 28, 2026

Greptile Summary

This PR adds a _log_kit_version_info() method to AppLauncher that prints Kit version, kernel version, and git hash to sys.__stderr__ immediately after the "initialization complete" signal, aiding CI diagnostics for version mismatch issues.

  • Version logging: Three lines are printed to sys.__stderr__ using omni.kit.app and carb.tokens APIs — consistent with the existing init-complete signal pattern.
  • No exception safety: The helper is called unconditionally inside __init__ with no try/except guard; any API failure will propagate and crash AppLauncher startup rather than degrading gracefully.
  • Token fallback: The or "unknown" guard on tokens.resolve("${kit_git_hash}") may not fire if carb returns the literal unresolved placeholder string for undefined tokens.

Confidence Score: 4/5

The change is a pure diagnostic addition, but calling the helper unconditionally in __init__ without exception handling means any carb/omni API failure will crash AppLauncher startup.

The new _log_kit_version_info method performs several API calls (omni.kit.app.get_app, carb.tokens.get_tokens_interface, get_kit_version, get_kernel_version, tokens.resolve) with no try/except guard. An unhandled exception from any of these propagates directly through AppLauncher.__init__, turning a diagnostic-only feature into a potential startup blocker across Kit versions or environments where the APIs behave differently.

source/isaaclab/isaaclab/app/app_launcher.py — the _log_kit_version_info method and its call site in __init__

Important Files Changed

Filename Overview
source/isaaclab/isaaclab/app/app_launcher.py Adds _log_kit_version_info() called unconditionally in __init__; any exception from the carb/omni.kit.app APIs will propagate and crash AppLauncher startup rather than silently degrading.
source/isaaclab/changelog.d/pv-log-kit-version.rst New changelog entry describing the Kit version logging addition — no issues.

Sequence Diagram

sequenceDiagram
    participant Caller
    participant AppLauncher.__init__
    participant omni.kit.app
    participant carb.tokens
    participant sys.__stderr__

    Caller->>AppLauncher.__init__: AppLauncher(args)
    AppLauncher.__init__->>sys.__stderr__: "AppLauncher initialization complete"
    AppLauncher.__init__->>AppLauncher.__init__: _log_kit_version_info()
    AppLauncher.__init__->>omni.kit.app: get_app()
    omni.kit.app-->>AppLauncher.__init__: app
    AppLauncher.__init__->>carb.tokens: get_tokens_interface()
    carb.tokens-->>AppLauncher.__init__: tokens
    AppLauncher.__init__->>omni.kit.app: app.get_kit_version()
    omni.kit.app-->>AppLauncher.__init__: kit_version
    AppLauncher.__init__->>omni.kit.app: app.get_kernel_version()
    omni.kit.app-->>AppLauncher.__init__: kernel_version
    AppLauncher.__init__->>carb.tokens: tokens.resolve(kit_git_hash)
    carb.tokens-->>AppLauncher.__init__: hash or literal placeholder
    AppLauncher.__init__->>sys.__stderr__: Kit version / kernel / hash lines
    AppLauncher.__init__-->>Caller: AppLauncher instance
Loading

Comments Outside Diff (1)

  1. source/isaaclab/isaaclab/app/app_launcher.py, line 1229-1243 (link)

    P1 Unhandled exception breaks AppLauncher startup

    _log_kit_version_info has no exception handling, and it is called unconditionally inside __init__. Any failure here — ImportError on carb/omni.kit.app, AttributeError if an API is missing in a different Kit version, or a runtime error from get_tokens_interface() — will propagate and crash AppLauncher initialization entirely. Since this is a pure diagnostic helper, its failure should never block startup. The method should be wrapped in a broad except Exception that falls back to a short message on sys.__stderr__ so the intent is preserved even in error paths.

Reviews (2): Last reviewed commit: "Merge branch 'develop' into pv/log-kit-v..." | Re-trigger Greptile

Comment thread source/isaaclab/isaaclab/app/app_launcher.py Outdated
@pv-nvidia pv-nvidia force-pushed the pv/log-kit-version branch 3 times, most recently from 252fde9 to 8b40653 Compare May 28, 2026 16:54
@pv-nvidia pv-nvidia force-pushed the pv/log-kit-version branch from 8b40653 to fc42687 Compare May 28, 2026 16:56
@kellyguo11 kellyguo11 moved this to Ready to merge in Isaac Lab May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-lab Related to Isaac Lab team

Projects

Status: Ready to merge

Development

Successfully merging this pull request may close these issues.

3 participants