Cygwin错误:“-bash:fork:retry:Resource暂时不可用;

Cygwin错误:“-bash:fork:retry:Resource暂时不可用;,cygwin,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: Re

我最近在我的计算机上重新安装了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,还是只接受错误消息,但我很好奇是否有我不知道的问题。

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

  • 打开任务管理器并关闭任何看起来与Cygwin相关的进程
  • 在Windows资源管理器中打开C:\Cygwin\bin
  • 验证此文件夹中是否存在dash.exe、ash.exe、rebase.exe和rebase seal
    • 如果缺少其中任何一个,请重新运行Cygwin安装程序并选择dash、ash和rebase包
  • 右键单击C:\Cygwin文件夹,取消选中只读(如果选中),然后按OK。
    • 当出现无法切换某些文件的错误时,请选择“全部忽略”。等待此过程完成
  • 在Windows资源管理器中浏览到C:\Cygwin\bin
  • 右键单击dash.exe,然后单击“以管理员身份运行”。此时将出现一个命令提示符,提示中只显示一个
    $
  • 键入
    /usr/bin/rebaseall-v
    ,单击enter,然后等待流程完成。

    • 如果在运行Cygwin进程时出现错误,请重试步骤1。如果仍然不起作用,请将计算机重新启动到安全模式,然后重试这些步骤
    • 一位评论员指出,根据您的设置,您可能需要键入
      cd/usr/bin&&./rebaseal-v
  • 再次尝试打开Cygwin
  • 这个过程对我很有效,我希望你们也一样


    来源:

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

    导航到“/usr/bin”目录(通常为C:\cygwin\bin)并右键单击,以管理员身份运行文件:dash.exe 然后,在$prompt处键入以下内容,并在每行后按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.
    

    为了补充这里的其他答案,我们遇到了相同的问题,但无法从ash或dash shell运行rebase命令

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

    -v是获取详细输出

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

    我通过重新启动计算机解决了此问题。可能安装了驱动程序更新,并一直使用睡眠而不是关机。

    我在win10上出现错误,我试图在安装前重新设置为c:的基础。 然后我看到安装程序正在将其安装到c:/Users/myuser 所以我处理了从c:/Users/myuser到c:.badun的所有文件 然后重新启动并打开badun.bat


    如果这是明智的话,那就不是舒尔,而是它现在复制的XD…但它又重新工作了。

    我在这里找到了另一个信息: 您必须删除位于的数据库 /etc/rebase.db*并在“ash”窗口中执行: peflags*-d1 再密封
    它适用于我在两台服务器上运行。

    升级到windows 10后,我开始面临此问题。到目前为止,我看不出上述任何方法有效。
    我注意到的是,如果您使用管理员权限启动cygwin(右键单击并说“以管理员身份运行”),那么它可以正常工作。

    或者您以管理员身份打开cmd,然后从那里启动cygwin,然后它也可以正常运行。

    在使用cygiconv-2.dll分叉加载cygwin时遇到了同样的问题,但没有在cygwin终端中成功加载,但在关闭我的防病毒软件后(它特别注意广告),问题得到解决,Cygwin工作正常。

    如果您正在使用babun的Cygwin,请在重新启动后,在Windows命令提示符或Windows资源管理器中执行.babun\Cygwin\Cygwin.bat,尝试启动Cygwin


    这对我来说很有效(启动babun的默认控制台-mintty时会导致fork错误)。

    Rebase
    ing对我的情况没有帮助。除了其他人的建议之外,我还注意到减少
    PATH
    环境变量的长度解决了我的问题(对于其他人以及从答案中可以看出).

    这个问题本质上是间歇性的&我发现这个问题的原因是网络太慢,无法连接到AWS上的远程机器……我有一个通过Gitbash Shell运行的Shell脚本,它通过ssh连接到AWS EC2实例……大多数时候,它运行正常,但100次中有2次遇到这个问题bash:fork:retry:Resource暂时不可用…从任务管理器中终止MSYS2终端有助于解决此问题。。。。
    消极的一面是你需要从一开始就运行脚本…

    我在Windows 10和mobaxterm应用程序(使用cygwin)上也遇到了同样的问题,我尝试了这里列出的所有答案,但对我来说,解决方法很简单