`rs` command collides with the pre-installed BSD rs (reshape) utility on macOS/BSD, causing a silent, CPU-idle hang
Mantenedores costumam responder em até 1 dia
@chenjiahan já está trabalhando nisso.
Desde 24/9/2026.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Environment
- rstack: 0.8.0
- Node.js: v24.21.0
- pnpm: 12.6.0
- OS: macOS 27
- Package manager mode: pnpm strict node_modules
Summary
On macOS and other BSD-derived operating systems (FreeBSD, NetBSD, OpenBSD), /usr/bin/rs is a standard pre-installed utility (BSD rs — "reshape a data array", part of the base system since 4.2BSD). When Rstack CLI's rs binary is not resolved first on $PATH (e.g. when typed directly in an interactive shell rather than invoked through a package.json script), the shell falls back to the OS-native /usr/bin/rs instead of node_modules/.bin/rs.
Steps to reproduce
- In a project using
[email protected], open a plain shell (not throughpnpm run <script>) and run:
rs check
- The command hangs indefinitely with no output.
Ctrl+Cexits with no error message.- Running
npx rs check(which forces resolution to the localnode_modules/.bin/rs) works correctly and completes.
Root cause
BSD's rs utility reads from standard input by default and blocks waiting for piped input when invoked with no valid input stream — this matches the observed symptoms exactly:
- Near-zero CPU usage during the hang (blocked on a
read()call, not computing) - No output before or after interruption
- Resolved entirely by forcing local binary resolution via
npx/pnpm exec
Impact
This affects any BSD-derived OS (macOS included) where /usr/bin/rs precedes the project's node_modules/.bin in $PATH — which is the default shell behavior outside of npm/pnpm script execution contexts. Linux (GNU coreutils-based) is unaffected, as it has no native rs command.
Suggested fix
Since renaming the rs binary would be a breaking change, consider:
- Documenting the
$PATHcollision explicitly in the README, alongside a recommendation to invoke viapnpm exec rs/npx rsrather than a barersin interactive shells - Optionally detecting this collision at runtime (e.g., checking
which rsresolves to the expected package path) and warning the user
Related
This was discovered while investigating what first appeared to be an unrelated hang in rs check --type-check; see #519 for the original (now corrected) report.
- Linguagem predominante
- TypeScript
- Estrelas
- 28
- Forks
- 1
- Merge médio
- 6h 58min
- PRs com merge (30d)
- 91
Preparar o ambiente
Ainda não verificamos os arquivos de configuração deste projeto. Comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de rstackjs/rstack-cli
-
`rstack/types/index.d.ts` references `@rsbuild/core/types` which cannot be resolved under pnpmTalvez já em andamento @chenjiahan assumiu há 3 dias. Aberta
rstackjs/rstack-cli#519 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Rstack CLI RoadmapAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
rstackjs/rstack-cli#44 ·
Mantenedores costumam responder em até 1 dia
-
Dependency DashboardAberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
rstackjs/rstack-cli#37 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de rstackjs/rstack-cli
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
rohitg00/agentmemory#1428 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
boxlite-ai/boxlite#1729 ·
Mantenedores costumam responder em até 1 dia
-
detectors enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
SM260845/readme-gen#1 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
angular/angularfire#3774 ·
Mantenedores costumam responder em até 2 dias