Skip to content

[Docs] Document CloudXR port 49100 conflict troubleshooting - #7457

Merged
kellyguo11 merged 2 commits into
isaac-sim:developfrom
rwiltz:cloudxr-port-conflict-doc
Aug 31, 2026
Merged

[Docs] Document CloudXR port 49100 conflict troubleshooting#7457
kellyguo11 merged 2 commits into
isaac-sim:developfrom
rwiltz:cloudxr-port-conflict-doc

Conversation

@rwiltz

@rwiltz rwiltz commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description

QA reported that CloudXR teleoperation (isaaclab teleop run --xr) failed with
Server::create failed: Result::ERROR_STREAMSDK_PORT_UNAVAILABLE because TCP port
49100 (used for CloudXR.js WebRTC signaling) was already bound by a leftover CloudXR
runtime process. Killing the stale process resolved the issue, and QA requested a
documentation note so future users can self-diagnose this without filing a ticket.

This PR adds a "Known Issues" entry to the CloudXR teleoperation guide describing the
error, how to check which process is holding port 49100, and how to free it or select
a different port via NV_CXR_SERVER_PORT.

Fixes # (issue)

Type of change

  • Documentation update

Release backport

  • Backport this pull request to the active release branch after it merges into develop

    Checklist

    • I have read and understood the contribution guidelines
    • I have run the pre-commit checks with ./isaaclab.sh --format
    • I have made corresponding changes to the documentation
    • My changes generate no new warnings
    • I have added tests that prove my fix is effective or that my feature works
    • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
    • I have added my name to the CONTRIBUTORS.md or my name already exists there

@rwiltz
rwiltz requested a review from a team August 31, 2026 19:53
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Aug 31, 2026

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isaac Lab Review Bot

The troubleshooting note is appropriately scoped, but its heading uses unsupported nested reStructuredText markup, causing the literal backticks to appear in rendered documentation.

  • Design and architecture: The note is placed alongside the CloudXR launch instructions where the port conflict would surface. No design or architecture changes are introduced.
  • API: No public APIs, CLI options, configuration defaults, or source-package contracts are changed, so no API migration or package changelog update is required.
  • Implementation: At line 352, an inline literal is nested inside bold markup. reStructuredText does not support nested inline markup, so the error token will not render as intended. Move the literal error name outside the bold span or use a plain bold lead-in.

Minor fixes needed. Posted 1 actionable finding inline.

Automated review; human maintainers own approval decisions.


.. note::

**``ERROR_STREAMSDK_PORT_UNAVAILABLE`` / port 49100 already in use.** The CloudXR runtime

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Suggestion · Implementation — Nested inline literal inside bold will not render

reStructuredText does not support nested inline markup, so **ERROR_STREAMSDK_PORT_UNAVAILABLE / port 49100 already in use.** renders the double backticks as visible characters inside the bold lead-in. The adjacent note at line 342 uses the established pattern of a plain bold lead-in with literals in the body text. Move the error name outside the bold run so the rendered page matches surrounding notes.

@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR documents how to diagnose and resolve CloudXR signaling-port conflicts.

  • Adds commands for identifying and terminating a process using TCP port 49100.
  • Documents NV_CXR_SERVER_PORT as an alternative configuration.
  • The termination example still does not preserve the identity of the listener the user inspected and confirmed.

Confidence Score: 4/5

The PR is not yet safe to merge because its troubleshooting commands can terminate processes other than the stale CloudXR listener the user confirmed.

The inspection step does not preserve a selected PID, and both termination commands independently expand every PID reported for TCP port 49100, leaving the previously reported unsafe-targeting behavior unresolved.

Files Needing Attention: docs/source/how-to/cloudxr_teleoperation.rst

Important Files Changed

Filename Overview
docs/source/how-to/cloudxr_teleoperation.rst Adds CloudXR port-conflict troubleshooting, but the revised kill commands can still target processes other than the confirmed stale listener.

Reviews (2): Last reviewed commit: "Address review feedback: fix nested RST ..." | Re-trigger Greptile

Comment thread docs/source/how-to/cloudxr_teleoperation.rst Outdated
@rwiltz

rwiltz commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

@greptile

Comment on lines +361 to +362
kill $(lsof -ti tcp:49100) # SIGTERM first
kill -9 $(lsof -ti tcp:49100) # only if it is still running

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Kill commands retarget every process

If multiple processes have TCP sockets involving port 49100, each lsof -ti tcp:49100 invocation independently selects every matching PID rather than the listener the user inspected and confirmed, causing unrelated or newly selected processes to be terminated, including with SIGKILL.

@kellyguo11

Copy link
Copy Markdown
Contributor

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Aug 31, 2026
@kellyguo11
kellyguo11 merged commit b75dec7 into isaac-sim:develop Aug 31, 2026
46 checks passed
@isaaclab-bot

isaaclab-bot Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Backported to release/3.0.0 as e8eef86.

isaaclab-bot Bot pushed a commit that referenced this pull request Aug 31, 2026
## Description

QA reported that CloudXR teleoperation (`isaaclab teleop run --xr`)
failed with
`Server::create failed: Result::ERROR_STREAMSDK_PORT_UNAVAILABLE`
because TCP port
49100 (used for CloudXR.js WebRTC signaling) was already bound by a
leftover CloudXR
runtime process. Killing the stale process resolved the issue, and QA
requested a
documentation note so future users can self-diagnose this without filing
a ticket.
 
This PR adds a "Known Issues" entry to the CloudXR teleoperation guide
describing the
error, how to check which process is holding port 49100, and how to free
it or select
  a different port via `NV_CXR_SERVER_PORT`.
 
  Fixes # (issue)
  
  ## Type of change

  - Documentation update

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`
 
  ## Checklist
  
- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
  - [x] I have made corresponding changes to the documentation
  - [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [ ] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

(cherry picked from commit b75dec7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants