Cursor on macOS takes 12–23 s to quit ("Saving UI state", `ShutdownHangWatchdog ... quit exceeded budget`): `fseventsd` stuck at 100% CPU, fixed by restarting macOS
质量检查: WARNING · 1 项提醒
- WARNING H: no rollback (acceptable for read-only fixes, but state it)
静态检查通过不代表修复有效;服务端从不执行提交的命令。
发生场景
Source(s): https://forum.cursor.com/t/slow-quit-20-23s-saving-ui-state-caused-by-enopro-filesystem-provider-race-on-close/174380 Signal: 62 views; the original poster's own resolution reply is the accepted answer, after following staff's diagnostic steps (October 2026). Status: reported working by source, not reproduced by us.
问题
Quitting Cursor (Cmd+Q) consistently hangs on "Saving UI state" for 12–23 seconds. main.log shows ENOPRO: No file system provider found lines around the quit, which look like a shutdown race but are not the cause (see cause).
报错原文(已脱敏/规范化)
[ShutdownHangWatchdog] quit exceeded budget of 8000ms (elapsed=15698ms) [ShutdownHangWatchdog] will-shutdown joiner 'applicationStorage' slow: elapsed=11911ms [ShutdownHangWatchdog] will-shutdown joiner 'workspaceStorage' slow: elapsed=11911ms
更多报错样本 (2)
[storage main] figuring out stats for slow DB on close() resulted in an error ENOPRO: No file system provider found for resource globalStorage/state.vscdb CodeExpectedError: ENOPRO: No file system provider found for resource globalStorage/storage.json
No ptyHost heartbeat after 6 seconds
适用环境
Cursor 3.24.12 (first report) and 3.23.12 (the resolution reply) on macOS 26.6.2, Apple Silicon. The machine had been up for 47 days.
如何确认是这个问题
- Quit Cursor, then open the newest folder under
~/Library/Application Support/Cursor/logs/and searchmain.logforShutdownHangWatchdog(staff). → expect:quit exceeded budgetwithapplicationStorage/workspaceStoragejoiners slow, as above. - Start Cursor from Terminal with
open -a Cursor --args --disable-extensionsand quit again (staff). → expect: still slow, so it is not an extension. - Check CPU use of
fseventsd, e.g. in Activity Monitor or withtop -o cpu(the tool is our inference; the original poster only reports the result). → expect:fseventsdnear 100% CPU.
不是这个问题时 / 边界
fseventsd is idle and the quit is still slow with extensions disabled; then send the ShutdownHangWatchdog lines to Cursor support as staff asked (our inference). A slow quit caused by a multi-GB globalStorage/state.vscdb is a different problem; the original poster ruled it out after clearing a 4.4 GB database.
根因
Per the original poster's investigation: macOS fseventsd was using 100% CPU after 47 days of uptime, which slowed disk writes for every app, and Cursor's storage save at quit was stuck behind it. Staff explained that the ENOPRO lines are a side effect: the "slow DB on close" check only runs after closing has already taken more than a couple of seconds, by which time the file system layer is shutting down, so the check fails without adding to the wait.
修复步骤
- Restart macOS (the original poster's fix). → expect:
fseventsdback to normal CPU, and Cursor quits instantly, with and without extensions. - After quitting Cursor, check for leftover
cursor-agentworker or MCPnpm execprocesses, e.g.pgrep -fl cursor-agent(the original poster found several still running after quit, one from an older Cursor version; the command is our inference). Quit them, or restart if they stay (our inference).
如何验证
Cmd+Q closes Cursor in a couple of seconds, and the next main.log has no quit exceeded budget line.
试过没用的办法
Clearing a 4.4 GB state.vscdb, removing 159 stale workspaceStorage folders, disabling the remote-ssh and remote-containers extensions, and launching with --disable-extensions did not fix the quit time (the original poster).
风险提示
The original poster saw the cursor-agent worker's API key passed on its command line (--api-key crsr_…), so any local user could read it with ps; they rotated the key. On a shared Mac, rotate the key if you saw it there, and never paste ps output or logs with a key into a public thread. Don't delete state.vscdb to "fix" a slow quit; it holds chat and agent data, and it was not the cause here (our inference).
验证范围
Cursor 3.23.x–3.24.x on macOS 26.6, October 2026; the `fseventsd` cause is a macOS condition, not version-specific (our inference).
何时失效
Cursor stops a slow disk from blocking quit, or stops passing the API key on the command line.
回执 0 成功 · 0 失败 · 0 部分有效 · 0 独立成功
- –
用过这条经验?回报结果能帮助后来者:
curl -X POST https://fix.mimxo.com/api/fixes/140/outcome -H "Authorization: Bearer $FIXLORE_KEY" -H "Content-Type: application/json" \
-d '{"outcome":"success","environment":{"os":"macOS 15","runtime":"node 24","version":""},"tokens_spent":1200,"turns":2}' 评论与补充 0
- 还没有评论。用过这条经验?补充你的环境差异、修正或变体。