Repository navigation
Replies: 1 comment 1 reply
|
Confirmed from the source, and the released-line boundary is narrower than "an old version". I read this against The skip is a three-way conjunction; the apply branch is the eager path. if (oldAcl !== null && labelAcl !== null
&& hasExactGrant(oldAcl, sidPtr) && hasExactDeny(oldAcl, worldSidPtr)
&& hasExactLabel(labelAcl, lowLabelSidPtr)) {Missing any one of the three falls through to
So the eager full-tree propagation is not inferred from behaviour — it is written down in the source as the reason the fast path exists at all. The call is synchronous, inside the host process, and nothing reports it. The version boundary, pinned. The deny-and-label half of the skip arrived in if (oldAcl !== null && hasExactGrant(oldAcl, sidPtr)) {— grant only. A root provisioned by What is already written down, and what this report adds. We publish a diagnostic plugin for this backend's standing edits — npm On the fix surface, honestly. The freeze itself is out of a plugin's reach: a synchronous |
Uh oh!
There was an error while loading. Please reload this page.
环境
0.2.0-rc.2(npm latest;Windows 11 / NTFS / pwsh 7)@deepseek-ai/dsh-sandbox-windows-acl与@deepseek-ai/dsh-sandbox-local均0.2.0-rc.20.2.1-alpha.4:上述两个包的lib文件 sha256 与 rc.2 完全一致,问题同样存在症状
宿主
127.0.0.1:3080无响应、所有会话停止写入;进程不崩、无错误日志,只能杀进程重启。根越大越致命 —— 实测D:\projects补齐时整树传播耗时 4490.6 秒(约 75 分钟),期间宿主全程无响应。根因(读源码定位,非推断)
dsh-sandbox-windows-acl的幂等跳过要求同一个根同时具备:① 工作区能力 ACES-1-4-x-y:(OI)(CI)(W,D,DC);②Everyone:(CI)(DENY)(DC)(worldFILE_DELETE_CHILDdeny);③ Low 完整性标签。缺任一条即走
mergeAndApply→SetNamedSecurityInfoW做整树急切传播;而调用点dsh-sandbox-local/lib/index.js:396-412的materializeAclGrant()是同步、宿主进程内调用(AclWriteGrant.create(...).add(...)),Node 事件循环因此被焊死。放大点:旧版本只授过 grant+label 的根,会在「下一次供给」时才补 deny —— 那一次就是整树重写。从旧版升级上来的用户,会在某次开新会话时突然卡死,且与那次操作毫无关系。
最小复现
icacls即可)建议(供参考,不要求采纳)
worker_threads,或至少让出(当前调用点是同步的)我方临时缓解(本地,不影响上游)
预置三条件 + 启动横幅体检 + 加根闸门(缺项只告警)。需要的话可整理成独立工具附上。
附:定位证据
dsh-sandbox-local/lib/index.js:396-412(materializeAclGrant→AclWriteGrant.create().add(),同步)dsh-sandbox-windows-acl/lib/types-Cl_DXjhk.js(hasExactGrant/hasExactDeny,后者要求FILE_DELETE_CHILDdeny 条目)0.2.0-rc.2vs0.2.1-alpha.4的index.js/runner.js/types-Cl_DXjhk.jssha256 全同English abstract:On Windows, a workspace root that has the write grant + Low integrity label but no
Everyone:(CI)(DENY)(DC)worldFILE_DELETE_CHILDdeny fails the fast-path idempotency check, so the first sandbox provision performs an eager full-treeSetNamedSecurityInfoWsynchronously inside the host process (dsh-sandbox-local/lib/index.js:396-412), freezing the event loop (measured 4490.6 s on a large root; host unresponsive throughout). Roots provisioned by older builds only receive the deny on their next provision, so users hit this after upgrading, unrelated to what they did. Identical code in 0.2.1-alpha.4 (sha256 match).All reactions