【发布时间】:2014-01-02 22:28:31
【问题描述】:
我们正在利用 Bonobo Git 服务器来托管一些内部 git 存储库。尝试检查我们的一个存储库时,我们收到此错误:
RPC 失败;结果=22,HTTP 代码 = 500
致命:远端意外挂断
在 Windows 事件查看器中,它会记录以下消息:
Exception information:
Exception type: ArithmeticException
Exception message: Overflow or underflow in the arithmetic operation.
Request information:
Request URL: http://localhost:50287/MyRepo.git/git-upload-pack
Request path: /MyRepo.git/git-upload-pack
如果我在本地调试 Bonobo,C# 中不会抛出异常;它来自git进程的外部。该代码使用Process 运行git.exe,如下所示:
using (var process = System.Diagnostics.Process.Start(info))
{
inStream.CopyTo(process.StandardInput.BaseStream);
process.StandardInput.Write('\0');
process.StandardOutput.BaseStream.CopyTo(outStream);
process.WaitForExit();
}
传递给 git 的命令参数是:
upload-pack --stateless-rpc D:\PathToRepos\MyRepo
如果我在命令提示符下使用 clone 命令运行 git.exe,项目会正确克隆(警告 templates not found)
我认为这是 C# 和 git 流式传输到 Response.OutputStream 之间的数据类型问题。
【问题讨论】:
-
Bobobo 是否有可能将警告错误解释为来自服务器的非 vlid 答案?我发现的唯一其他类似情况表明远程端的 git install 存在问题(github.com/gitlabhq/gitlabhq/issues/3958#issuecomment-18077589)。我想这里不是这种情况,特别是如果“远程”在 localhost 上并且其他 repos 克隆就好了?
-
@VonC 我认为模板错误不是问题...如果我在本地克隆一个可以远程克隆的项目,我仍然会看到模板错误。但是,我确实意识到,克隆与上传包不同(对吗?),所以这不是一个公平的比较。我该如何测试?
-
我提到的链接与模板无关,但既然你提到了它,请仔细检查你的 Git 安装(以及 Bonobo 进程使用的确切 git):也许它不完全/正确安装。
-
现在,
upload-pack是克隆过程的一部分:github.com/git/git/blob/master/Documentation/technical/…,将客户端拥有的内容发送到服务器,以便服务器仅返回缺少的内容。是否像stackoverflow.com/a/9469744/6309 那样在 Bonobo 服务器端出现内存问题? -
@VonC 很有趣...这绝对可能是内存问题。我将查看您链接的 SO 答案,实施并查看。谢谢!
标签: c# git arithmeticexception bonobo