Access Violation on pushing to a new remote

Ouverte
#1,981 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
csharp, git
Domaine
devtools

Piste de recherche

Reproduire le flux de push fourni sur Windows 10 avec .NET 6, en se concentrant sur repository.Network.Push et l’accès à branch.IsTracking indiqué dans la trace de la pile. Examiner Branch.ResolveTrackedBranch et l’appel à git_branch_upstream_name ; le travail est terminé lorsqu’une branche locale non suivie produit une erreur ordinaire plutôt qu’une violation d’accès.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Reproduction steps
  using var repository = new Repository(_options.LocalRepositoryPath);
            const string message = "message";
            var commitOptions = new CommitOptions()
            {
                AllowEmptyCommit = false,
                PrettifyMessage = true,
            };
            var authorSignature = new Signature(_options.Username, _options.Email, DateTimeOffset.UtcNow);

            await UpdateReadmeFile();

            repository.Index.Add("readme.md");
            repository.Index.Write();

            Commands.Stage(repository, "*");

            repository.Commit(message, authorSignature, authorSignature, commitOptions);

            PushOptions pushOptions = new PushOptions()
            {
                CredentialsProvider = (_, __, ___) => new DefaultCredentials(),               
            };

            _logger.LogInformation("Pushing changes to remote");
            _logger.LogDebug($"Branch has been tracked: {branch.IsTracking}");        

            repository.Network.Push(branch, pushOptions);
Expected behavior

Another error should occur when the local branch is not being tracked. But not an access violation exception.

Actual behavior

This craches with:

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Repeat 2 times:
--------------------------------
   at LibGit2Sharp.Core.NativeMethods.git_branch_upstream_name(LibGit2Sharp.Core.Handles.GitBuf, LibGit2Sharp.Core.git_repository*, System.String)
--------------------------------
   at LibGit2Sharp.Core.Proxy.git_branch_upstream_name(LibGit2Sharp.Core.Handles.RepositoryHandle, System.String)
   at LibGit2Sharp.Branch.ResolveTrackedBranch()
   at System.Lazy`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ViaFactory(System.Threading.LazyThreadSafetyMode)
   at System.Lazy`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ExecutionAndPublication(System.LazyHelper, Boolean)
   at System.Lazy`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].CreateValue()
   at LibGit2Sharp.Branch.get_IsTracking()
Version of LibGit2Sharp (release number or SHA1)
Operating system(s) tested; .NET runtime tested

OS: Windows 10 Professional
.NET runtime: NET 6.0

Langage dominant
C#
Étoiles
3.5k
Forks
925
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de libgit2/libgit2sharp

Toutes les issues de libgit2/libgit2sharp

Issues similaires

Plus d'issues C#

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.