SshClient - thread gets blocked indefinitely, lock not released
Nessuno ha ancora preso questa issue.
- Lingua principale
- C#
- Stelle
- 4.4k
- Fork
- 993
- Merge medio
- 9g 21h
- PR unite (30g)
- 1
Descrizione
Using version 2020.0.0-beta1 SshClient, I was doing some load testing, and consistently encountered an issue when executing commands for an extended period of time using a single client instance (a few hours running around 1M commands).
When running the SshCommand.Execute() method, the method SemaphoreLight.Wait() waits for a lock to be released indefinitely. (SemaphoreLight.cs : Line 110)
Call stack:
System.Private.CoreLib.dll!System.Threading.Monitor.Wait(object obj, int millisecondsTimeout, bool exitContext)
Renci.SshNet.dll!Renci.SshNet.Common.SemaphoreLight.Wait()
Renci.SshNet.dll!Renci.SshNet.Channels.ChannelSession.SendChannelOpenMessage()
Renci.SshNet.dll!Renci.SshNet.Channels.ChannelSession.Open()
Renci.SshNet.dll!Renci.SshNet.SshCommand.BeginExecute(System.AsyncCallback callback, object state)
As a workaround, disposing and recreating the SshClient object after every 10000 executions solved the problem.
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 da SshCommand.Execute e dal relativo percorso di chiamata verso BeginExecute, quindi esamina ChannelSession.Open e SemaphoreLight.cs intorno alla riga 110. Riproduci il test di carico di lunga durata descritto nell’issue usando un SshClient e osserva dove l’attesa rimane bloccata. Il lavoro è completato quando l’esecuzione prolungata di un comando non lascia più il client in attesa indefinitamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- csharp
- Ambito
- networking
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100