Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
On a shared Linux login node at NERSC Perlmutter, Remote SSH authentication succeeds, but Cursor server setup stalls after Checking node executable and the successful v24.18.1 output. Later attempts fail with Could not acquire lock after multiple attempts.
The installer was waiting for a ps pipeline. The ps process had STAT D and WCHAN access_remote_vm; its open file descriptor pointed to /proc/<other-user-PID>/cmdline. The target process belonged to another account. This blocked read is a host/kernel condition whose underlying cause is still unknown; the extension is affected because setup scans arguments system-wide while holding its installation lock.
Inspecting the generated setup template in anysphere.remote-ssh 1.1.16 found 2 uses of ps ax during build cleanup and 8 uses of ps -o pid,args -A for server discovery/reuse and related operations. One unrelated process can therefore block setup and subsequent retries.
Steps to Reproduce
Observed on October 14, 2026:
- Connect with Remote-SSH to a shared Linux login node where reading one unrelated user’s
/proc/PID/cmdlineblocks. - Authentication succeeds and the installed server’s Node executable prints its version.
- Setup’s system-wide
psscan blocks inaccess_remote_vm. - Retry the connection; the earlier setup process retains the installation lock and retries fail to acquire it.
This requires the abnormal host condition; I do not have a portable way to create it on a healthy machine. While diagnosing the affected node (procps 3.3.17), these checks were performed:
pids=$(ps -u "$USER" -o pid= | tr -d " " | paste -sd, -)
timeout -k 2s 5s ps -u "$USER" -o pid,args >/dev/null
# exit 137
timeout -k 2s 5s ps -p "$pids" -o pid,args >/dev/null
# exit 124; ps reported signal 15 and ps/display.c:70
timeout -k 2s 5s ps -q "$pids" -o pid,args >/dev/null
# exit 0
The -u and -p output filters did not avoid the blocked read on this system. GNU ps quick mode (-q) restricted reads to the specified PIDs and completed.
Expected Behavior
For a server installed in the connecting user’s home directory, process discovery should inspect only the relevant user’s PIDs or known server PIDs, avoiding unrelated users’ command-line reads. On GNU/Linux, collecting PIDs without arguments and then using ps -q is one tested approach.
If discovery blocks or fails, setup should stop within a bounded time, release the installation lock, and report which operation failed. Failed scans should not be treated as proof that no server is running during build cleanup.
Operating System
MacOS
Version Information
Cursor IDE: 3.24.12
Commit: 37b865941ccb31e2fc90c685157534efca87f960
Build date: 2026-10-09T20:56:41.904Z
Extension: anysphere.remote-ssh 1.1.16
Client: macOS 26.3, arm64
Remote: GNU/Linux x64, NERSC Perlmutter login node
Remote ps: procps 3.3.17
Bundled server Node: v24.18.1
Additional Information
A local workaround was applied to the extension’s Bash setup template by replacing the 10 scans with a helper. On GNU/Linux it collects only the connecting user’s PIDs without arguments, then uses quick PID mode:
pids=$(ps -u "$(id -u)" -o pid= | tr -d "[:blank:]" | paste -sd, -)
if [ -n "$pids" ]; then
ps -q "$pids" -o pid,args -ww
fi
The patched helper is scoped locally to NERSC’s Linux environment; other hosts retain the original command. JavaScript and Bash syntax checks passed, and the remote quick-PID diagnostic returned 0. A full Cursor reconnect has not yet been verified in this investigation.
NERSC support has separately been notified about the underlying blocked command-line read. The request here is to make Remote SSH setup resilient to unrelated processes on shared hosts. Other platforms need their appropriate process-discovery implementation.
Impact: Cursor remote development is blocked on the affected login node; local use remains available.
Does this stop you from using Cursor
Sometimes - I can sometimes use Cursor