Repository navigation
[Bug] 桌面版:沙箱模式下所有命令派生失败(exit code 3221225794 / 0xC0000142),被迫开全盘权限才能工作 #8420
liujingzhong
started this conversation in
General
Replies: 1 comment
|
bug_report_windows_pwsh_0xC0000142.md |
0 replies
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.
1. 一句话摘要
在 DSH 桌面版的默认沙箱模式(文件策略
workspace-write)下,工具侧的pwsh命令一律无法启动:无任何 stdout/stderr,仅返回退出码 3221225794(= 0xC0000142STATUS_DLL_INIT_FAILED)。同一命令改为sandbox_permissions: danger-full-access(绕过沙箱)后立即正常;在系统自带 PowerShell 中执行同样命令一直正常。重启 App、重启 Windows 均未恢复。2. 环境
补充:
[sandbox: file access denied under <mode> mode],此处没有出现);workspace-write下执行纯 PowerShell 命令是成功的(例如生成 XLSX、渲染 PNG 插画),之后变为稳定失败 → 属回归,而非初始即坏。5. 次要发现(可能是同一路径的另一症状)
在同一沙箱模式下、故障出现之前,把原生程序(
node)的 stdout 通过管道捕获时,曾稳定报错:即:沙箱内的原生子进程 stdio 管道捕获也异常(非沙箱下 node 正常)。此后 node 调用一律需提权。这条与
0xC0000142是否同源,请开发方一并核查。6. 影响
7. 当前绕行方案
sandbox_permissions: "danger-full-access"(需要用户逐次批准);8. 建议开发方核查的方向(按可能性排序)
STATUS_DLL_INIT_FAILED(建议在干净机器对照一次);web版或开发版是否复现);9. 请一并采集的诊断信息
10. 判定"已修复"的标准
在未提升权限的默认会话里执行第 9 节第 4 条探测:
0xC0000142),且该错误可定位原因 → 也可接受。附:本次会话上下文(供参考)
- 会话主题:制作《银发经济》手绘风格 PPT(最终 27 页,PPTX/PDF 均已产出,与缺陷无关,未受影响);
- 故障期间所有成品文件均在
- 本报告由会话内实测记录整理,未使用推测性结论:第 4 节 A–F 六组均为一手实测结果。
提交对象:DeepSeek Harness(DSH)开发方 报告人:DSH 会话内的 Agent(依据会话内实测记录整理) 日期:2026-10-02 前后(本机会话时间) 严重级别建议:P1(沙箱是安全边界;失效后用户只能在"失去沙箱保护"和"完全无法执行"之间二选一)E:\deepseek workspace,用户可直接在系统终端访问;一句话摘要
在 DSH 桌面版的默认沙箱模式(文件策略 workspace-write)下,工具侧的 pwsh 命令一律无法启动:无任何 stdout/stderr,仅返回退出码 3221225794(= 0xC0000142 STATUS_DLL_INIT_FAILED)。同一命令改为 sandbox_permissions: danger-full-access(绕过沙箱)后立即正常;在系统自带 PowerShell 中执行同样命令一直正常。重启 App、重启 Windows 均未恢复。
环境
项 值
宿主 DeepSeek Harness 桌面版,实现位于 D:\DeepSeek Harness\resources\app.asar\dsh
GUI
http://127.0.0.1:19387/
会话工作目录 E:\deepseek workspace
文件沙箱策略 workspace-write
审批策略 ask(有可用应答方)
OS / CPU Windows x64(PROCESSOR_ARCHITECTURE=AMD64)
PowerShell 7.6.6(pwsh;宿主自带 shell 通道)
附带运行时 node: C:\Users\Administrator.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\node\bin\node.exe;python: …\dependencies\python\python.exe(python-pptx 1.0.2 等)
备注 会话内曾大量使用 PowerPoint COM(数十次导出)与 node/pnpm 子进程
复现步骤(最小化)
打开 DSH 桌面版,任一会话,工作目录为 E:\deepseek workspace,保持默认沙箱策略 workspace-write;
通过 DSH 的 shell 工具执行任意命令,例如:
powershell
'ok ' + (Get-Date).ToString('HH:mm:ss')
观察工具返回。
期望:输出 ok HH:mm:ss,退出码 0。 实际:无任何输出,返回 [exit code: 3221225794]。
变量 命令 结果
A 沙箱模式 workspace-write(默认) 'ok ' + (Get-Date) ❌ 无输出 + 3221225794
B sandbox_permissions: danger-full-access(绕过沙箱) 'shell ok(danger-full-access) ' + (Get-Date).ToString('HH:mm:ss'); $PSVersionTable.PSVersion ✅ 输出 shell ok(danger-full-access) 15:56:00 + 7.6.6
C 系统自带 PowerShell(DSH 之外) 任意(node 生成 PPT、Get-Process、Stop-Process、脚本执行等) ✅ 全部正常
D 全新子代理(新进程/新会话)执行 A 同 A ❌ 同样无输出 + 3221225794(可稳定复现,非偶发)
E 重启 DSH App 后执行 A 同 A ❌ 仍失败
F 重启 Windows 后执行 A 同 A ❌ 仍失败(因此排除内存/desktop heap 耗尽)
补充:
失败发生在命令解析之前,因此与命令内容、工作目录、参数无关;
该现象不是文件沙箱策略拒绝(策略拒绝的标记形态是 [sandbox: file access denied under mode],此处没有出现);
会话早期(约前 15 轮)在 workspace-write 下执行纯 PowerShell 命令是成功的(例如生成 XLSX、渲染 PNG 插画),之后变为稳定失败 → 属回归,而非初始即坏。
5. 次要发现(可能是同一路径的另一症状)
在同一沙箱模式下、故障出现之前,把原生程序(node)的 stdout 通过管道捕获时,曾稳定报错:
代码块
程序'node.exe'运行失败: StandardOutputEncoding is only supported when standard output is redirected.
即:沙箱内的原生子进程 stdio 管道捕获也异常(非沙箱下 node 正常)。此后 node 调用一律需提权。这条与 0xC0000142 是否同源,请开发方一并核查。
可用性:Agent 在默认策略下完全丧失执行能力(无法跑 node/python/git/脚本),等于只能读写文件;
安全性(更严重):唯一可行的绕行是让用户每次批准"全盘权限"——这等于把沙箱主动关掉才能用。也就是说,该缺陷会把用户推向无沙箱运行,与沙箱设计的初衷相反;
可诊断性:失败无任何 stderr/stdout,用户与 Agent 都拿不到线索,只能靠对照实验推断。
逐条命令携带 sandbox_permissions: "danger-full-access"(需要用户逐次批准);
或由用户在自己终端里手工执行脚本(可用,但把工作推回给用户)。
沙箱内子进程创建路径:受限令牌 / AppContainer / Job Object / 环境块构造 / 注入或 hook 的 DLL 是否在本机加载失败;
安全软件交互:是否存在 EDR/杀软对每个新进程注入 DLL,导致受限令牌下 STATUS_DLL_INIT_FAILED(建议在干净机器对照一次);
桌面版(asar 分发)特有的打包问题:沙箱 helper 或原生模块是否缺失/版本不匹配(对照 web 版或开发版是否复现);
该沙箱模式下的 stdio 管道实现(见第 5 节);
回归点:本会话前 15 轮可用、之后稳定失败,请结合时序日志定位中间发生了什么(例如大量子进程、COM 自动化、沙箱状态文件等)。
powershell
1) 失败时间点附近的应用/系统事件
Get-WinEvent -FilterHashtable @{LogName='Application'; StartTime=(Get-Date).AddHours(-3)} -MaxEvents 60 |
Where-Object { $_.Message -match 'pwsh|0xc0000142|DLL|SideBySide' } |
Select-Object TimeCreated,Id,ProviderName,Message | Format-List
2) 安全软件
Get-CimInstance -Namespace root\SecurityCenter2 -ClassName AntiVirusProduct -ErrorAction SilentlyContinue |
Select-Object displayName,productState
3) 资源基线(排除型信息)
(Get-Process).Count
Get-CimInstance Win32_ComputerSystem | Select-Object @{n='总内存GB';e={[math]::Round($_.TotalPhysicalMemory/1GB,1)}}
[math]::Round((Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory/1MB,2)
4) 复现探测(在沙箱模式下执行,应能返回时间戳)
'ok ' + (Get-Date).ToString('HH:mm:ss')
10. 判定"已修复"的标准
在未提升权限的默认会话里执行第 9 节第 4 条探测:
返回时间戳、退出码 0 → 修复;
或返回明确的结构化错误(而非空输出 + 0xC0000142),且该错误可定位原因 → 也可接受。
附:本次会话上下文(供参考)
会话主题:制作《银发经济》手绘风格 PPT(最终 27 页,PPTX/PDF 均已产出,与缺陷无关,未受影响);
故障期间所有成品文件均在 E:\deepseek workspace,用户可直接在系统终端访问;
本报告由会话内实测记录整理,未使用推测性结论:第 4 节 A–F 六组均为一手实测结果。
All reactions