libgit2 / libgit2/libgit2sharp
"Error reading from the zlib stream"-Exception on Fetch/ Clone/ Push with custom transport
まだ誰も着手していません。
- 主要言語
- C#
- スター
- 3.5k
- フォーク
- 925
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
I wrote a custom smarttransport according to a ssh sample. After fetch, pull or clone I get valid data but the method throws LibGit2Sharp Exception with "error reading from the zlib stream".
Transport with upload-pack read->write->read->write works, see dump below.
The error message: "error reading from the zlib stream" occurs in libgit2 within pack.c in method git_packfile_stream_read() after calling inflate(&obj->zstream, Z_SYNC_FLUSH); Error will be called if the result is !=Z_OK && !=Z_STREAM_END.
After setting pack.compression=0 the zlib stream contains uncompressed data. But the error message is still there.
STDIN/ STDOU
READ:
00fc5daa747d4ca7905ff8996f770ef74d1b894be3d2 HEAD multi_ack thin-pack side-band side-band-64k ofs-delta shallow deepen-since deepen-not deepen-relative no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2.18.0.windows.1 003f5daa747d4ca7905ff8996f770ef74d1b894be3d2 refs/heads/master 003e5daa747d4ca7905ff8996f770ef74d1b894be3d2 refs/heads/test2 0000
WRITE:
0074want 5daa747d4ca7905ff8996f770ef74d1b894be3d2 multi_ack_detailed side-band-64k include-tag thin-pack ofs-delta 0032want 5daa747d4ca7905ff8996f770ef74d1b894be3d2 00000009done
READ:
0008NAK 0023Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Compressing objects: 100% (6/6), done. 002bTotal 9 (delta 0), reused 0 (delta 0) 02e7PACK òx£ì-1-0 +=»+ÄälºNc !6Ìß$NAé+x-m763[AÁ+sª$C+!7eì[å$í¦Àn÷^A&ã:Cÿ+-T#&Ö+BfàªäëKê+Úg_·µ»}+²i¨yi·¦Ò+ï«gÅÉä+Ç \Ú¤þ}¹©]ks_.k8¬òx£ì-=-0@ß=º+ÄäþºÄäþpº ZéZszûÀ}z¦ëÏ\KpêÈUqòÉk+=-Ç U8O àú¨&oÁëÿ=óª=d+AÊ4qóÏÇ:+ã-áß»>ãf´cÌÝe>zٳƾ2*/WÙó?«ô-hOÇ
ªÄu}¬- -¿ýj~Ç@9[ÿx£ì-1-0@Ð=ºÄäLLöTBê¡þpmÀDñDj-²¦#¦³7}¯¦@°nël8eÔR-ª¿ëSûY'UM%IÓƒ+¹c_vx,g_3ý+¦p{--ûé4d©DÊÎÁ¦¦ G¿¯Ûò[8 Ë-õ¿x£343 ¢Éd¸¦åîUFzÜ--£+²Ê½2.Þr³ê]ÙdhfbóPöÜÿÆø¬WRQ-ã»Ã¤J¦_Ðß¾ØKMº¥à
3Sã¦x£-¦-,+L¦QH+¤--,I,NIa.-à-3©îí+ §Ó-¿x£343
¢Éd¸¦åîUFzÜ--£+²Ê½2.Þr³ê]ÙdhfbóPöÜÿÆø¬WRQ-=âìBnï§+=ƒ º=¦|[c N+ô¦x£-¦-,+L¦QH+¤--,I,NIa.-ò +®*ªx£340031Q(JML+Mi+®(a+§u¦sQ?-§î¦O´¢¹¦,²Û+. H>x£-¦-,+L¦QH+¤--, )-öP¸ãyô
WRITE:
0000
Exception
An unhandled exception of type 'LibGit2Sharp.LibGit2SharpException' occurred in LibGit2Sharp.dll
Additional information: error reading from the zlib stream
Callstack
bei LibGit2Sharp.Core.Ensure.HandleError(Int32 result) in C:\projects\libgit2sharp\LibGit2Sharp\Core\Ensure.cs:Zeile 136. bei LibGit2Sharp.Core.Proxy.git_remote_fetch(RemoteHandle remote, IEnumerable1 refSpecs, GitFetchOptions fetchOptions, String
logMessage) in
C:\projects\libgit2sharp\LibGit2Sharp\Core\Proxy.cs:Zeile 2268. bei
LibGit2Sharp.Commands.Fetch(Repository repository, String remote,
IEnumerable1 refspecs, FetchOptions options, String logMessage) in C:\projects\libgit2sharp\LibGit2Sharp\Commands\Fetch.cs:Zeile 76.
bei GitFunction.Test.Beta2.button1_Click(Object sender, EventArgs e) in C:\TFS\DS\ThomasZ\BeckhoffGitAdsService\GitAdsServicePackage\GitFunction.Test\Beta2.cs:Zeile 62. bei System.Windows.Forms.Control.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.ButtonBase.WndProc(Message& m) bei System.Windows.Forms.Button.WndProc(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) bei System.Windows.Forms.Application.Run(Form mainForm) bei GitFunction.Test.Program.Main() in C:\TFS\DS\ThomasZ\BeckhoffGitAdsService\GitAdsServicePackage\GitFunction.Test\Program.cs:Zeile 19. bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) bei System.Threading.ThreadHelper.ThreadStart()
Versions
LibGit2Sharp 0.24.0.0
LibGit2Sharp 0.25.0.0 with VS 2017 and .Net Standard 2.0
git version 2.18.0.windows.1
Win 10 x64
.Net 4.5
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
custom smarttransport upload-pack の読み取り/書き込みシーケンスから始め、キャプチャしたパケットと pack の出力を、Proxy.git_remote_fetch で終わる fetch パスと比較します。次に、記載されている LibGit2Sharp と Git のバージョンを使用して、libgit2 の pack.c にある git_packfile_stream_read() の inflate(..., Z_SYNC_FLUSH) 付近を調べます。fetch、clone、または push が zlib 例外なしで完了し、受信した有効なデータが保持されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- csharp, git
- 領域
- devtools, networking
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 30/100