facebook / facebook/watchman

Watchman starting thousands of processes on macOS

Open
#1,306 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
13.7k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

Every once in a while, after an OS reboot, something goes horribly wrong with watchman. When I open VS Code, the Sapling extension queries watchman and suddenly there are several thousand watchman processes and the filesystem gets overwhelmed. Everything that needs to read or write files anywhere becomes painfully slow. It takes ~30s in order to get a prompt in my terminal. For whatever reason, watchman seems to recover and go back to a single process if I kill all the processes with `pkill -9 watchman`, but that takes a few minutes to run and finding/remembering the command is difficult when the entire system is responding so slowly.

Here's a sample of the output from `ps -A | grep watchman` while the problem was ongoing:

```
25483 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
25503 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
25506 ?? 0:00.10 watchman --output-encoding bser-v2 get-sockname
25531 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
25567 ?? 0:00.02 watchman --output-encoding bser-v2 get-sockname
25587 ?? 0:00.06 sl status -Tjson --copies --noninteractive --config extensions.blackbox=! --config fsmonitor.watchman-query-lock=True
25841 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
25842 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
25864 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
25875 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
25930 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
25947 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
25954 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
25975 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
25994 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
26027 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
26080 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
26099 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
26109 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26130 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26167 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26198 ?? 0:00.01 watchman --output-encoding bser-v2 get-sockname
26223 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26239 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26256 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26257 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26271 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26299 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26305 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26327 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26357 ?? 0:00.00 sl status -Tjson --copies --noninteractive --config extensions.blackbox=! --config fsmonitor.watchman-query-lock=True
26369 ?? 0:00.00 watchman --output-encoding bser-v2 get-sockname
26378 ?? 0:00.01 /opt/homebrew/bin/watchman --foreground --logfile=/var/folders/_4/4zq95g51367gf8w6jppgv98r0000gn/T//-state/log --log-level=1 --sockname=/var/folders/_4/4zq95g51367gf8w6jppgv98r0000gn/T//-state/sock --statefile=/var/folders/_4/4zq95g51367gf8w6jppgv98r0000gn/T//-state/state --pidfile=/var/folders/_4/4zq95g51367gf8w6jppgv98r0000gn/T//-state/pid
26379 ?? 0:00.00 /bin/launchctl load -F /Users//Library/LaunchAgents/com.github.facebook.watchman.plist
26380 ?? 0:00.00 /bin/launchctl load -F /Users//Library/LaunchAgents/com.github.facebook.watchman.plist
```

Log: [watchman-log.clean.txt](https://github.com/user-attachments/files/22686113/watchman-log.clean.txt)

## System details

Watchman version: `2025.09.15.00` (installed via homebrew)

macOS version: `15.7.1`

Sapling version: `0.2.20250521-115337-25ed6ac4`

VS Code version: `1.104.2`, `e3a5acfb517a443235981655413d566533107e92`, `arm64`

Sapling extension version: `0.1.63`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.