Nimblesite / Nimblesite/SharpLsp

Sidecar PATH resolution accepts .cmd/.bat/extensionless shims the spawn then cannot execute

Open
#167 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug cluster:sidecar-startup
Dominant language
TypeScript
Stars
132
Forks
5
Avg merge
6h 24m
Merged PRs (30d)
27

Description

From the multi-agent audit (src/sidecar/manager.rs ~408 find_on_path): resolution treats a match with .cmd/.bat (or no extension) as found, but the spawn then invokes the bare command name — CreateProcess does not resolve .cmd shims (that is cmd.exe behavior), so the spawn fails; worse, because resolution SUCCEEDED, the working fallback layouts (VSIX bin dir, target/sidecar-*) are never tried. A dotnet-tools shim on PATH can therefore hard-break sidecar startup on Windows.

Fix: on Windows only accept .exe (or spawn the resolved absolute path with its real extension, via cmd /C for scripts), and keep walking the fallback chain when the spawn itself fails, not just when resolution fails.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/sidecar/manager.rs around find_on_path and trace how the resolved command reaches the Windows spawn call. Verify the fallback layouts are still attempted when a candidate cannot execute; done means Windows sidecar startup rejects unusable .cmd/.bat or extensionless shims or invokes them correctly, while preserving fallback behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
devtools, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.