Cygwin错误:“-bash:fork:retry:资源暂时不可用”

时间:2012-02-15 20:21:27

标签: cygwin

我最近在我的计算机上重新安装了Cygwin,以便访问我缺少的几个命令行元素。我以前从未遇到过Cygwin的困难,但在重新安装之后,在(几乎)每个命令输入之后会继续出现错误消息。例如:

-bash-4.1$ wc m1.txt
      3 [main] bash 2216 child_info_fork::abort: data segment start: parent(0x26D000) !=     child(0x38D000)
-bash: fork: retry: Resource temporarily unavailable
2013930  4027950 74968256 m1.txt

通常,命令仍然运行(如上所示),但并非总是如此。偶尔会出现“错误”消息连续几次(初始数字“3”将变为“4”或“2”,特别是如果我启动第二个Cygwin窗口。

另外,一旦我启动Cygwin,我会在提示之前收到以下消息:

      3 [main] bash 6140 child_info_fork::abort: data segment start: parent(0x26D000)     != child(0x36D000)
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$

目前,我正在讨论是否要再次卸载/重新安装Cygwin,或者只是接收错误消息,但我很好奇是否存在我不知道的问题。

13 个答案:

答案 0 :(得分:114)

(假设Cygwin安装在C:\ Cygwin):

  1. 打开任务管理器并关闭任何看起来与Cygwin相关的进程。
  2. 在Windows资源管理器中打开C:\ Cygwin \ bin
  3. 验证此文件夹中是否存在dash.exe,ash.exe,rebase.exe和rebaseall
    • 如果缺少其中任何一个,请重新运行Cygwin设置并选择破折号,灰分和rebase包
  4. 右键单击C:\ Cygwin文件夹,取消选中只读(如果已选中),然后按确定。
    • 当出现无法切换某些文件的错误时,请选择“全部忽略”。等待此过程完成。
  5. 在Windows资源管理器中浏览到C:\ Cygwin \ bin
  6. 右键单击dash.exe,然后单击“以管理员身份运行”。命令提示符应该只显示$
  7. 键入/usr/bin/rebaseall -v,按Enter键,然后等待该过程完成。
    • 如果您收到有关Cygwin进程运行的错误,请再次尝试步骤1。如果仍然无效,请将计算机重新启动到安全模式并再次尝试这些步骤。
    • 评论者注意到,根据您的设置,您可能需要输入cd /usr/bin && ./rebaseall -v
  8. 再次尝试打开Cygwin。
  9. 这个过程对我有用。我希望它也适合你们。

    来源:http://cygwin.wikia.com/wiki/Rebaseall

答案 1 :(得分:13)

我想在上面的答案中添加以下内容,因为这是重新安装Cygwin后我必须做的事情:

导航到“/ usr / bin”目录(通常是C:\ cygwin \ bin)并右键单击“以管理员身份运行”文件:dash.exe 然后,在$提示符下键入以下内容,在每行之后按Enter键:

cd /usr/bin/
/usr/bin/peflags * -d 1
/usr/bin/rebaseall -v

它的作用是,它将dll标记为“可以反射”,然后重新定义它们。除了上述文件之外,您还必须拥有peflags.exe(在之前的答案中)。执行此操作后,您可能必须重新启动Windows,并且您肯定需要确保没有属于cygwin运行的进程或服务。 (使用任务管理器,终止任何相关进程,然后在服务选项卡下查找以CYG开头的任何服务并停止它。)

执行此操作后,我能够运行cygwin而没有任何关于dll被加载到错误地址(即fork错误等)的错误。

我希望这有助于其他人,因为这很难找到。

SOURCE: http://www.cygwin.com/faq.html#faq.using.fixing-fork-failures 
and the rebase README file.

答案 2 :(得分:5)

要在此处添加其他答案,我们遇到了同样的问题,但无法从ash或dash shell运行rebase命令。但是,从Windows cmd shell启动命令时,以下操作。

cmd /c "C:\cygwin64\bin\ash.exe /usr/rebaseall -v"

-v是获得详细输出

答案 3 :(得分:3)

我在这里找到了另一个信息: http://cygwin.com/ml/cygwin/2014-02/msg00531.html 您必须删除数据库 /etc/rebase.db*并在“灰”窗口中执行: peflags * -d 1 rebaseall 它适用于2台服务器。

答案 4 :(得分:2)

我通过重新启动计算机解决了这个问题。可能安装了驱动程序更新并继续使用睡眠而不是关闭。

答案 5 :(得分:1)

在使用cygiconv-2.dll forking加载Cygwin并且未在Cygwin终端中成功加载时经历了同样的问题,但在关闭我的AntiVirus(它特别是Ad-aware)之后,问题得到解决,并且Cygwin正常工作。

答案 6 :(得分:1)

如果你使用babun的Cygwin,在rebaseall之后,尝试在Windows命令提示符或Windows资源管理器中执行.babun \ cygwin \ cygwin.bat启动Cygwin。

这适用于我(在启动babun的默认控制台时 - 在fork错误中导致了muty)。

答案 7 :(得分:0)

我在win10上遇到了错误,我试图在安装之前重新调整为c:。 然后我看到安装程序正在安装它而不是c:/ Users / myuser 所以我正在处理从c:/ Users / myuser到c:.badun的所有文件 然后重启并打开badun.bat

如果这是明智的,那么现在重复的XD是不可取的...但是它再次起作用。

答案 8 :(得分:0)

+=对我的情况没有帮助。除了其他人的建议之外,我注意到减少Rebase环境变量的长度对我(以及其他人也可以从this答案中看到)解决了这个问题。

答案 9 :(得分:0)

此问题本质上是断断续续的,当网络太慢而无法连接到AWS上的远程计算机时,我发现了此问题。...我有通过Gitbash Shell运行的Shell脚本,并且它通过ssh连接到AWS EC2实例.....在大多数情况下,它可以正常运行,但有100次出现此问题的2倍 bash:fork:重试:资源暂时不可用 .....从任务管理器中杀死MSYS2终端有助于克服这个问题。 不利的一面是您需要从头开始运行脚本...

答案 10 :(得分:0)

我在Windows 10和mobaxterm应用程序(使用cygwin)上遇到了相同的问题,我尝试了此处列出的所有答案,但是对我来说,解决方案是简单地删除“ CryptoPro CSP”应用。

答案 11 :(得分:-1)

升级到Windows 10后,我开始面临这个问题。到目前为止,我没有看到上述任何方法都有效 我注意到的是,如果您使用管理员权限启动cygwin(右键单击并说出#34;以管理员身份运行")那么它可以正常工作。
或者你以管理员身份打开cmd,然后从那里启动cygwin,然后运行正常。

答案 12 :(得分:-3)

只需重新安装cygwin并选择TCL并激活EXPECT