【问题标题】:GIT pack objects died of signal 10GIT 包对象死于信号 10
【发布时间】:2017-04-03 02:11:39
【问题描述】:

我今天试图将我的更改推送到远程存储库,但出现以下错误:

git push -u origin master
error: pack-objects died of signal 10

昨天提交和推送工作正常,设置没有变化,没有其他人提交或推送到存储库,提交并不大,只有大约 10 个文件。

我正在使用 MacOS Sierra - git 版本 2.9.3 (Apple Git-75), 存储库是 GitLab 8.13.5 (Git 2.7.4)

整个存储库只有 33MB,因此没有包含大文件(甚至在提交中也不包含)。我正在使用 SSH 访问存储库。

git config pack.threads 1 无效。

我还尝试将远程克隆到新位置,编辑一个文件,提交,推送并且工作正常,所以问题应该与特定提交有关。

运行 git fsck 会导致同样的错误:

git fsck
error: unable to open .git/objects/14: Interrupted system call
Checking object directories: 100% (256/256), done.
Bus error: 10

有什么问题?

【问题讨论】:

  • 尝试git config pack.threads 1,然后再次推送
  • 信号 #10 在基于 BSD 的类 Unix 系统上是 SIGBUS,在 Linux 上是 SIGUSR1。您使用的是什么操作系统?
  • 推送是否适用于新的 repo 克隆?尝试确认问题是否出在您机器上的特定 repo 或与您的操作系统和/或 git 安装有关
  • 你使用什么协议 SSH 或 HTTPS?您尝试推送的提交,它有一个大文件吗?
  • @AshutoshJindal:我真的不知道如何克隆本地存储库并尝试推送它?抱歉,对 git 很陌生。

标签: git git-push


【解决方案1】:

这个错误:

error: unable to open .git/objects/14: Interrupted system call

相当神秘。这应该是一个目录,git fsck应该能够在不被中断的情况下打开它。1你可以运行:

ls -ld .git/objects/14

验证它一个目录,如果是,ls -l .git/objects/14 看看里面有什么(它应该包含零个或多个以哈希 ID 作为名称的文件2支持>)。

SIGBUS 表示 Git 中存在某种内部错误。 C 程序在尝试使用它们从未被授予的内存地址或其他无效的内存地址时会获得 SIGBUS 或 SIGSEGV(请参阅Bus error vs Segmentation fault 并注意传递哪个信号的决定取决于操作系统和体系结构,因此 ARM、MIPS 或 SPARC 上的 Linux 的行为将与 x86 上的相同版本的 Linux 不同)。似乎是什么导致 Git 无法读取存储在存储库中的对象导致 Git 随后崩溃,但 Git——或者至少,git fsck——不不应该 em>crash 由于错误的存储库。 应该特别使用git fsck 来诊断错误存储库的错误。无论如何,至少在打开目录时得到EINTR 是不寻常的。

如果文件 不是本地的(通过网络找到),您可以将它们移动到本地(磁盘上)存储,看看这是否至少可以解决问题。这不是“修复”错误,而是简单地“避免”它,但如果这就足够了...... :-)


1可能不是的一个明显路径是文件或目录未存储在本地磁盘上,而是通过网络存储,例如就像在 AFP 服务器上一样。

2这些名称只有 38 个字符长,在删除前导 14 后给出散列 ID 的 剩余部分14 暗示着它们位于 .git/objects/14/ 中。

【讨论】:

  • 避免问题就成功了。我应该指出该目录是通过 SSHFS 挂载的,它实际上是一个 CentOS 7 服务器。我认为可能的问题是工作副本中有 2 个未暂存的文件具有相同的名称“file.txt”和“File.txt”,而我的本地驱动器不区分大小写,所以......可能吗?
  • 这表明 sshfs 实现中可能存在错误:它可能应该重新启动 SIGALRM 上的系统调用,而不是中断它们。不同大小写的文件在 Mac 上会给你带来不同的头痛:要解决这个问题,请在本地磁盘上创建一个区分大小写的文件系统。请注意,该区域的某些 MacOS 版本存在一些错误;见apple.stackexchange.com/questions/217915/…
猜你喜欢
  • 1970-01-01
  • 2019-11-15
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
  • 2013-09-20
相关资源
最近更新 更多