Skip to content

【Bug】Git Bash 执行器在 workspace-write 沙箱模式下"假成功"(exit 0、无输出、无文件副作用) #1

Description

@myself-illedan

摘要

dsh-gitbash-shell@0.12.0 在 Windows 上存在一个问题:在 workspace-write 沙箱模式下,所有 bash 工具调用都会**"假成功"——调用返回 completed 且 exit code: 0,但没有 stdout、没有 stderr、也没有任何文件系统副作用**,命令实际上从未执行。而在 danger-full-access 模式下,同一个执行器工作完全正常。

环境

  • DSH Desktop 2.0.5 / dsh core 0.1.2-rc.1(Windows)
  • dsh-gitbash-shell 0.12.0(安装在 desktop profile 的 bundles 中)
  • Git for Windows 位于 D:\Git(非系统盘),bash 版本 5.2.37(1)-release
  • 会话 preset:standard-gitbash(tool-bash 启用、tool-pwsh 禁用)
  • 沙箱:Windows ACL restricted-token runner(dsh-sandbox-windows-acl

复现步骤

会话为「标准模式 · Git Bash」。通过 bash 工具执行任意命令,例如 echo $BASH_VERSION  echo hi > probe.txt

  • workspace-write 模式:返回为空(连 (no output) 都没有),没有 [exit code] 标记,probe.txt 从未生成。后台模式:job 报告 started  completed, exit code: 0——但文件副作用依然从未发生。
  • danger-full-access 模式(同一会话,sandbox_permissions: danger-full-access):完全正常——stdout 输出 5.2.37(1)-release,stderr 正常回流,exit code 正常,文件写入成功。

已做过的对照实验(已排除项)

尝试 | 结果 -- | -- icacls "D:\Git" /grant Everyone:(OI)(CI)RX /T(授权 D 盘 Git 目录) | 无改善(workspace-write 下仍然假成功) bashPath 改为 D:/Git/usr/bin/bash.exe(真正的 MSYS bash,而非 bin 目录的 wrapper) | workspace-write 下无改善 重新启用官方 PowerShell 执行器(pwsh-sandbox + standard preset 对照组) | workspace-write 下完全正常 在 DSH 之外独立运行 Git Bash | 正常

疑似根因

GitBashSandboxExecutor 通过 Windows ACL runner 将命令包装为 [bash.exe, -c, cmd] 执行。在 restricted token 下,MSYS bash 进程似乎无法正常启动/初始化(怀疑与 msys-2.0.dll 有关),但该失败被吞掉,并以成功的空结果(exit 0、无输出)呈现,而不是 runner 错误(windows-acl-run: ...、exit 127)或 spawn 错误。full-access 分支(直接 spawn、无 restricted token)工作正常,说明问题出在 restricted token 与 MSYS 的交互上,而非执行器接线或 bash 路径配置。

期望行为

  • workspace-write 下的 bash 调用要么正常执行并返回输出,要么明确失败(SandboxUnavailableError / denial 标记 / [exit code]),绝不应静默假成功。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions