11

「オブジェクトの書き込み」中に git push を実行しようとするとハングアップするという問題があります。これは、他の場所で回答されている Windows と git-daemon の一般的なシナリオではありません。これは、ssh を使用した Linux to Linux です。クライアントとサーバーの両方で、git バージョンは 1.7.8.6 です。

私は次のことを試しました:

  • ローカルの空のレポを作成し、そこにプッシュします -- 正常に動作します
  • ローカル リポジトリからローカル リポジトリにプル -- 正常に動作
  • リモート リポジトリをローカル マシンにクローンします -- 正常に動作します
  • git fsckサーバーリポジトリとgit gcクライアントリポジトリの両方で
  • 既存のリモート リポジトリへのプッシュ -- オブジェクトの書き込みが 11% でハングする
  • 空のリモート リポジトリを作成し、そこにプッシュします -- オブジェクトの書き込みが 2% でハングします

git にデバッグ メッセージを生成させるために設定できる環境変数があります。そこには何も役に立ちません。

私はこれについて IRC の人々と長々と話し、グーグルで調べてみました。私たちはどこにも行きません。ここで誰かが何が問題なのかを理解するのを手伝ってくれますか?

ありがとう!

更新: 誰かの提案に基づいて、私は をstrace -F実行しましたが、子プロセスの select() でスタックします。トレース全体を提供したいのですが、stackexchange にはアップロードする方法がありません。とにかく、ここに関連するセクションがあります:

[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3 4], [3], NULL, NULL) = 2 (in [4], out [3])^M
[pid 14414] read(4,  <unfinished ...>^M
[pid 14433] <... write resumed> )       = 8192^M
[pid 14433] write(1, "\262\36\237\265\234\n\332W\26\271.\250\271W\34\250N\34*\341\247R\21\177\\Dq\23\27\211\270\25"..., 8192) = 8192^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192 <unfinished ...>^M
[pid 14414] <... read resumed> "t\277\177\276\361\377\327U\361Re\f\347\300\27\3\255}E\363\2277\312p\356F\335U\345\336\250\273"..., 16384) = 16384^M
[pid 14414] write(3, "\210y\r\202\303`\222m\216\177x \354\216Y\322n\232l\273\237\214\352\32\r\261r\311\347\356\236\26"..., 16432) = 16432^M
[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3], [3], NULL, NULL) = 1 (out [3])^M
[pid 14414] write(3, "\v\267\355\33\257\332\330\326\233\260;\223\212z\333\213\21'1\20\7\366\"f\253\373\0059\24\206C4"..., 5504) = 5504^M
[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3], [], NULL, NULL <unfinished ...>^M
[pid 14433] <... write resumed> )       = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
4

2 に答える 2

7

問題は ssh のバグでした。最近のバージョンでは何かが壊れており、大規模な転送中に停止します。回避策があります。

修正は、sshd_config で「TcpRcvBufPoll no」を設定することです。

http://forums.gentoo.org/viewtopic-t-925044-start-0-postdays-0-postorder-asc-highlight-.html

http://forums.gentoo.org/viewtopic-p-7036250.html

于 2012-05-29T22:22:44.307 に答える
0

サーバーで何かが起こっていますか?私の最初の推測はスペースの問題でしょう。

その後、inode をチェックします (df -i)。

于 2012-05-24T16:02:50.490 に答える