0

我正在运行以下 bat 文件并出现错误

assertion "root_idx != -1" failed: 
file "/ext/build/netrel/src/cygwin-1.7.1-1/winsup/cygwin/mount.cc", 
line 363, function: void mount_info::init()
Stack trace: Some random stack trace
ENd of stack Trace

批号

@echo off
:top
set /a run=1
echo "Beginning of Loop"
echo %run%
wmic process where "name like '%%java%%' and CommandLine like '%%abc%%'" get caption, CommandLine | findstr "abc" 1>nul || set /a run=0
if %run%==0 (
echo "Process Not Running"
start cmd /c 'path to file')
echo "Taking a Pause"
sleep 10
goto :top

为什么首先调用cygwin?以及为什么我得到错误并且无限循环停止(循环检查程序是否存在并在它以某种方式被杀死时启动它

4

2 回答 2

0

不知道如何避免 Cygwin 错误,但如果您不想调用它,请检查您的 PATH 变量,以便 Cygwin 路径不在其中,或者至少它位于路径列表的末尾。

于 2013-08-21T07:28:30.377 回答
0

这是一个 Cygwin 错误http://cygwin.1069669.n5.nabble.com/cygwin-crash-assertion-quot-root-idx-1-quot-failed-reliably-reproduced-on-my-system-td2659.html .

在我的情况下,它在一些构建过程(以及与之关联的 Cygwin 控制台)进入暂停状态后开始重现。我使用 Process Explorer 工具(来自https://live.sysinternals.com/的工具)看到了它。

我不知道他们被停职的原因。也许父进程在他们等待某些东西的那一刻被杀死了。这真的无所谓。但重要的是,在那之后,当我打开每个新的 Cygwin 控制台时,它都会挂起。我的解决方法是找到旧的暂停 Cygwin 进程并杀死它们

为什么首先调用cygwin?

当您在 cmd.exe 中运行某些内容,但您的 PATH 配置为使用 Cygwin 时,它会首先尝试在 Cygwin 中运行您的命令(取决于 PATH 中的顺序)。

为什么我得到错误并且无限循环停止

我想你和我有同样的问题。也就是说,每个新的 Cygwin 控制台都会挂起,直到您杀死第一个有问题的控制台。

于 2020-04-01T12:22:07.783 回答