【问题标题】:Cygwin causing a longjmp when running Git pushCygwin 在运行 Git push 时导致 longjmp
【发布时间】:2011-11-11 11:33:43
【问题描述】:

我正在尝试从我的 Windows 7、64 位机器上的命令行运行 git。它在大多数情况下都可以正常工作。我尝试将本地更改推送到云中的私有存储库。

我要运行的命令是git push origin master

我使用的是 Cygwin 6.1,它导致以下错误。大概与我在 64 位机器上运行的事实有关

0 [main] git-remote-http 6168 fork: child -1 - died waiting for longjmp before initialization, retry 10, exit code 0xC0000135, errno 11 error: cannot fork() for send-pack: Resource temporarily unavailable

我按照here 的建议更新了我的 rebaseall 文件并重新运行了 rebase 命令。但这似乎并没有帮助。

其他人能否重现该问题或找到解决方案?

提前感谢您的帮助。

【问题讨论】:

  • 至少您可以尝试使用 msysgit 安装而不是 Cygwin 下的 Git 来使用相同的命令。 code.google.com/p/msysgit
  • 是的。这对我有用。如果您可以将其作为答案,我很乐意接受。

标签: windows git command-line cygwin


【解决方案1】:

答案 mfisch 为我的问题提供了奇迹。

快速的谷歌搜索产生了this result,这让我很快再次 git push。所需的软件包随默认的 cygwin 安装一起提供,所以我什至不需要安装任何东西。

【讨论】:

    【解决方案2】:

    另一种选择是使用msysgit distribution,这将允许您在不依赖于cygwin环境的情况下进行任何git命令。

    另见“Difference between msysgit and 'cygwin + git'?”。

    【讨论】:

      【解决方案3】:

      我使用的 Cygwin 口头禅是“fork failures are rebase issues”。 longjmp 不是问题,fork 是。不幸的是,Rebase 是唯一的解决方案。在过去,我使用自定义脚本来构建变基列表。我这样做是因为您可能缺少一些 DLL,尤其是如果您有手工构建的东西。您可以使用 find 构建一个列表,然后使用 -T 将其传递给 rebaseall。您还应该考虑尝试与 rebaseall 中的默认基地址不同的基地址,查看 -b 选项。 64 位机器似乎需要比 32 位机器更大的间距,因此默认设置对我来说效果不佳。

      此外,如果您完全更改系统上的任何 DLL,则需要再次变基。

      注意:即使在 Cygwin 中这个分支仍然会失败。病毒扫描程序会注入他们的 DLL,这会搞砸事情,Windows 地址空间随机化也无济于事。

      【讨论】:

      • 值得指出的是,rebaseall 是一个 cygwin 概念,与 git 无关
      • 最好是链接到 rebaseall 到底是什么?
      猜你喜欢
      • 2019-08-01
      • 2012-03-06
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      相关资源
      最近更新 更多