libgit2 / libgit2/libgit2sharp
AccessViolationException accessing Commit.Parents concurrently on Linux .NET 10
Nessuno ha ancora preso questa issue.
- Lingua principale
- C#
- Stelle
- 3.5k
- Fork
- 925
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Environment
- LibGit2Sharp 0.32.0
- LibGit2Sharp.NativeBinaries 2.0.324 (libgit2 1.8.6)
- .NET SDK/runtime 10.0.400
- Linux x64, GitHub-hosted Ubuntu 24.04 runner
Failure
A test process intermittently terminates with System.AccessViolationException while accessing Commit.Parents during a version-height calculation. The test uses distinct temporary repositories per test instance, and the LibGit2Context and its Repository are both live and strongly referenced throughout the failing call.
The latest occurrence is in this public GitHub Actions job:
https://github.com/dotnet/Nerdbank.GitVersioning/actions/runs/33464845055/job/99722455984
Relevant managed stack:
System.AccessViolationException: Attempted to read or write protected memory.
at Nerdbank.GitVersioning.LibGit2.LibGit2GitExtensions.<GetCommitHeight>g__TryCalculateHeight|19_0(LibGit2Sharp.Commit, <>c__DisplayClass19_0 ByRef)
at Nerdbank.GitVersioning.LibGit2.LibGit2GitExtensions.GetCommitHeight(LibGit2Sharp.Commit, GitWalkTracker, Func<Commit, Boolean>)
at Nerdbank.GitVersioning.LibGit2.LibGit2GitExtensions.GetVersionHeight(LibGit2Context, Version)
at Nerdbank.GitVersioning.LibGit2.LibGit2Context.CalculateVersionHeight(VersionOptions, VersionOptions)
at Nerdbank.GitVersioning.VersionOracle..ctor(GitContext, ICloudBuild, Nullable<Int32>)
at VersionOracleTests.CloudBuildNumber_4thPosition(...)
TryCalculateHeight is walking commit.Parents; this theory does not configure path filters, so it does not call Diff.Compare.
Investigation
We found and fixed separate repository-local lifetime defects where a lazy commit query escaped its context and a VersionOracle retained a disposed context. This crash persists after those fixes, and the present stack has no escaped lazy sequence or disposed native owner.
The test assembly's normal xUnit test-collection parallelism is the remaining variable. We are temporarily serializing test collections to prevent the intermittent native process crash, but would prefer a LibGit2Sharp/libgit2 fix or guidance about concurrent independent repository operations on Linux/.NET 10.
Related historical reports include #988 and #1513, but this report targets the current package versions and live-context Commit.Parents failure.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo VersionOracleTests.CloudBuildNumber_4thPosition nel job Ubuntu 24.04 GitHub Actions collegato, quindi esamina TryCalculateHeight, dove si accede a Commit.Parents in modo concorrente. Confronta il comportamento con le raccolte di test temporaneamente serializzate e determina se le operazioni indipendenti sul repository sono supportate; il lavoro è completato quando la causa è documentata e viene fornita una correzione confermata o una guida per le versioni correnti del pacchetto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- csharp, git
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Attiva
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 38/100