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

我最近在我的计算机上重新安装了Cygwin,以便访问我缺less的几个命令行元素。 我以前从来没有遇到Cygwin的困难,但是在重新安装之后,每input一个命令(几乎)后都会出现错误消息。 例如:

-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,或者只是处理错误信息,但是我很好奇是否可能有一个我不知道的问题。

谢谢你的帮助!

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

  1. 打开任务pipe理器并closures任何看起来与Cygwin相关的进程。
  2. 在Windows资源pipe理器中打开C:\ Cygwin \ bin
  3. validation该文件夹中是否存在dash.exe,ash.exe,rebase.exe和rebaseall
    • 如果它们中的任何一个丢失了,重新运行Cygwin安装程序,并select破折号,灰和rebase软件包
  4. 右键单击您的C:\ Cygwin文件夹,取消选中只读(如果选中),然后按确定。
    • 当出现关于不能切换某些文件的错误时,请select“忽略全部”。 等待这个过程完成。
  5. 在Windows资源pipe理器中浏览到C:\ Cygwin \ bin
  6. 右键单击dash.exe,然后单击“以pipe理员身份运行”。 命令提示符应该只显示一个$
  7. input/usr/bin/rebaseall -v ,回车,等待进程完成。
    • 如果您遇到Cygwin进程运行错误,请再次尝试步骤1。 如果仍然无法正常工作,请将计算机重新启动到安全模式,然后重试这些步骤。
    • 一位评论者指出,根据您的设置,您可能需要inputcd /usr/bin && ./rebaseall -v
  8. 尝试再次打开Cygwin。

这个过程为我工作。 我希望它也适用于你们。

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

我想添加以下的答案,因为这是我重新安装Cygwin后必须做的:

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

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

它所做的是,它将dll标记为“rebase-able”,然后重新绑定它们。 除了上述文件外,您还必须有peflags.exe(在以前的答案中)。 这样做后,你可能不得不重新启动窗口,你一定要确保没有进程和服务属于cygwin运行。 (使用任务pipe理器,杀死任何相关的进程,然后在服务选项卡下查找任何以CYG开始的服务并停止它。)

这样做后,我能够得到cygwin运行没有任何错误的dll被加载到错误的地址又名叉错误等

我希望这可以帮助别人,因为这是一个痛苦的发现。

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

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

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

-v是获得详细的输出

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

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

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

这适用于我(当启动babun的默认控制台 – mintty结果叉错误)。

我有win10的错误,我试图重新安装到c:。 然后我看到,安装程序是安装它,而不是c:/用户/ myuser,所以我应付所有文件从c:/用户/ myuser到c:.badun,然后重新启动加上打开badun.bat

不要舒服,如果这是明智的,现在重复XD …但是,然后再次工作。

升级到Windows 10后,我开始面临这个问题。截至目前我没有看到任何上述方法的工作。
我注意到的是,如果你用pipe理员权限(右键单击并说“以pipe理员身份运行”)启动cygwin,那么它工作正常。
或者你以pipe理员身份打开cmd,然后从那里启动cygwin,然后运行正常。

当Cygwin加载Cygwinv-2.dll分叉时,遇到同样的问题,而不是在Cygwinterminal成功加载,但closures我的反病毒(这是特别是广告意识到)后,问题解决了,Cygwin工作正常。

只需重新安装cygwin并selectTCL并激活EXPECT