libgit2 / libgit2/libgit2sharp
throw LibGit2SharpException or repo.Head.TIp==null while parallel
オープン
まだ誰も着手していません。
- 主要言語
- C#
- スター
- 3.5k
- フォーク
- 925
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Updated. Code simplified
// use LibGit2Sharp.0.16.0.0 from nuget
// https://github.com/torvalds/linux
var gitpath = @"path/to/linux/source";
var times = 10;
for (int i = 0; i < times; i++)
{
Task.Run(() =>
{
using (var repo = new Repository(gitpath))
{
// sometimes throw LibGit2SharpException here
// An exception of type 'LibGit2Sharp.LibGit2SharpException' occurred in LibGit2Sharp.dll but was not handled in user code
// Additional information: An error was raised by libgit2. Category = Os (Error).
// Failed to mmap. No data written: Not enough storage is available to process this command.
foreach (var commit in repo.Commits)
{
}
}
});
}
while (true)
{
using (var repo = new Repository(gitpath))
{
// sometimes repo.Head.Tip == null
repo.Head.Tip.ToString();
}
}
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
Repository(gitpath)、repo.Commits、repo.Head.Tip を使用した並列再現から始め、次に LibGit2Sharp 0.16.0.0 を使って Linux リポジトリに対して実行します。リポジトリの同時構築または同時アクセスが mmap の失敗と null tip を引き起こすかどうかを調査します。完了の条件は、報告された並列操作でどちらの症状も発生しなくなることです。プロジェクトに適切なテスト場所がある場合は、回帰テストも追加します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- csharp, git
- 領域
- devtools
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100