libgit2 / libgit2sharp

Git + .NET = ❤
http://libgit2.github.com
MIT License
3.19k stars 888 forks source link

System.AccessViolationException on CherryPick #1883

Open OoLunar opened 3 years ago

OoLunar commented 3 years ago

You are opening a bug report against the LibGit2Sharp project: we use GitHub Issues for tracking bug reports and feature requests. If you have a question about an API or usage, please ask on StackOverflow: http://stackoverflow.com/questions/tagged/libgit2sharp.

Otherwise, to report a bug, please fill out the reproduction steps (below) and delete these introductory paragraphs. Thanks!

Reproduction steps

public static void Main(string[] args) {
    Download();
}

public static Tag GetLatestVersion()
{
    using Repository repo = new("./");
    return repo.Tags
        // Order by version: 2.0.0, 1.2.0, 1.0.0, etc
        .OrderByDescending(tag => tag.FriendlyName)
        // Gets latest tag
        .First();
}

public static void Download()
{
    using Repository repo = new("./");
    Tag latestTag = GetLatestVersion();
    CherryPickOptions cherryPickOptions = new();
    cherryPickOptions.FailOnConflict = false;
    cherryPickOptions.FileConflictStrategy = CheckoutFileConflictStrategy.Theirs;
    cherryPickOptions.FindRenames = true;
    cherryPickOptions.IgnoreWhitespaceChange = false;
    repo.CherryPick((Commit)latestTag.Target, new Signature(Program.Config.Update.GitName, Program.Config.Update.GitEmail, DateTimeOffset.Now), cherryPickOptions);
}

Expected behavior

Specific commit from tag to be cherrypicked

Actual behavior

System.AccessViolationException exception thrown. Message:

An unhandled exception of type 'System.AccessViolationException' occurred in LibGit2Sharp.dll:
'Attempted to read or write protected memory. This is often an indication that other memory is corrupt.'
<Cannot evaluate the exception stack trace>

Version of LibGit2Sharp (release number or SHA1)

0.26.2 (Nuget)

Operating system(s) tested; .NET runtime tested

Windows 10 64bit; Dotnet 5.0.202