Windows Sensu客户端 – 运行batch file时偶尔出现“访问被拒绝”错误

我们有几个2008 R2系统上运行的Windows Sensu客户端。 我们的一个支票调用一个batch file来收集一些信息并回报。 我们零星地收到“未知:意外的错误:访问被拒绝(5)”这些检查信息 – 没有标准频率,没有相关性…下一个检查正确运行没有问题。

我已经通过堆栈和Sensu Ruby代码追踪调用)生成“cmd.exe / c”/path/to/batch.bat参数的subprocess没有问题。 我可以通过删除batch file本身的所有NTFS访问来重新创build问题。 如果在删除这些权限的情况下运行cmd / c batch.bat,它将以相同的“Access is denied(5)”错误返回。

好吧,很好,它有访问该文件的问题。 为什么? 我已经运行了进程监视器跟踪,可以发现绝对没有错误的进程:ruby加载,cmd.exe被调用,cmd.exe读取文件没有可见的错误,然后返回检查作为访问被拒绝。 什么…?

我没有想法。 一些额外的背景信息的情况下,它的帮助:ruby二进制文件运行为32位; Sensu客户端是Sensuapp网站的最新版本; 系统正在运行System Center Endpoint Protection。 我在想什么?

这原来是ChildProcess Ruby库中的一个错误,以及它如何处理将Windows进程分配给一个Job对象(竞争条件)。 一旦我清理了代码,我将与作者分享修复。