Repository navigation
Windows: installing/updating any plugin fails at the last step with ERR_PNPM_EPERM while computer-use-cua-driver-native is enabled #12254
DayDreamer-014
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
On Windows, once the
computer-use-cua-driver-nativeprovider has been loaded, no plugin can be installed, updated, or removed until the app is restarted with that provider disabled. The operation runs for ~60 s, imports the whole dependency set, and then dies withERR_PNPM_EPERMon a native package the running host process has mapped.This is deterministic, not flaky. It was reported to the community market plugin and closed there as a wording-only fix (dsh-market/dsh-market#798), but the underlying behaviour is in DSH itself, so I'm reporting it here.
Environment
~/.dsh/profiles/desktop, withnodeLinker: hoisted(written by
@deepseek-ai/dsh-app-boot,PROFILE_PNPM_WORKSPACE)@deepseek-ai/dsh-experimental-computer-use-cua-driver-native@0.2.2-rc.1→
@trycua/cua-driver@0.28.0→@trycua/cua-driver-win32-x64-msvc@0.38.0Steps to reproduce
computer-use-cua-driver-nativeprovider and restart DSH.(e.g. updating
dshmarket1.70.2 → 1.73.11).The UI reports the operation as failed; nothing is installed/updated/removed.
Observed 7 times on this machine (2026-10-22, 2026-10-23 ×2, 2026-11-05 ×4), always on the same package.
Evidence that the host process holds the files
Get-Process … | .Modulesshows the running host PID has both files mapped:An exclusive open of either file fails with "The process cannot access the file … because it is being used by another process".
So the installer is asked to rename a directory whose contents are memory-mapped by the very process running the installer.
Root cause
Three decisions combine:
dsh-app-bootwritesnodeLinker: hoistedinto every profile, so eachpnpm installre-imports the entire dependency set (≈340 packages) instead of only what changed — the locked package is therefore hit on every operation, not just when it changes.computer-use-cua-driver-nativeprovider keeps a native SDK (25 MB DLL + 6 MB.node) loaded for the lifetime of the host process.pnpm installin-process, in place, against thenode_modulesthat is currently loaded.Windows cannot rename a directory containing open/mapped files →
EPERM→ the whole profile is wedged.Impact
While that provider is enabled, the profile cannot be modified at all: every plugin install/update/remove fails, including operations on unrelated plugins. Reported failure modes downstream of this include a failed update leaving an emptied
node_modules(dsh-market#1061) and the market uninstalling itself mid-operation (dsh-market#1056, #962).Suggested fixes
Workaround (confirmed by users)
Fully quit DSH, then run the install without the app running, or: disable the two patch-layer entries that load the native module (
dsh-computer-use,dsh-experimental-computer-use-cua-driver-native), restart, update, re-enable, restart again. The latter was verified as a clean 5/5 success in dsh-market#798.中文摘要
启用
computer-use-cua-driver-native后,Windows 上用 DSH 自己的「设置 → 插件」安装/更新/卸载任何插件都会跑满约 60 秒后以ERR_PNPM_EPERM失败——因为该插件的 25 MB.dll/ 6 MB.node被宿主进程映射锁死,而安装器就在同一个进程里、对着同一份node_modules原地替换;再加上 profile 固定使用nodeLinker: hoisted,每次安装都会整仓重链,所以必中。这只影响启用该 provider 的 Windows 用户,但影响是「整个 profile 再也改不了插件」。All reactions