Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Fix deadlocks in async-to-sync bridge by properly managing synchronization context

Aberta
#2,372 2 comentários 1 reação 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
55/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
csharp
Domínio
tooling

Direção de pesquisa

Comece localizando RunSync e CustomSynchronizationContext; em seguida, compare a configuração e a desmontagem do contexto, bem como o comportamento de PostCallback, com o padrão comprovado de implementação do Rebus. O trabalho estará concluído quando a responsabilidade pelo contexto for transferida para CustomSynchronizationContext.Run(), as continuações permanecerem no contexto personalizado, RunSync usar ConfigureAwait(false) e o comportamento do contexto estiver documentado.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Description

  • Async method calls through the synchronous RunSync bridge were causing deadlocks due to improper synchronization context management
  • Continuations were being queued to the thread pool instead of the custom synchronization context, breaking the synchronous execution model
  • The CustomSynchronizationContext implementation needed alignment with the proven Rebus library implementation pattern

Deliverables

  • Context Management: Move synchronization context setup/teardown from RunSync into CustomSynchronizationContext.Run() for cleaner separation of concerns
  • Continuation Handling: Remove ConfigureAwait(false) from PostCallback to ensure all continuations execute on the custom context
  • API Consistency: Add ConfigureAwait(false) to RunSync method to maintain consistent async patterns
  • Code Clarity: Add comments explaining the context behavior and why ConfigureAwait is not used in PostCallback
Linguagem predominante
C#
Estrelas
9.8k
Forks
2.3k
Merge médio
11d 21h
PRs com merge (30d)
2

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de restsharp/RestSharp

Todas as issues de restsharp/RestSharp

Issues semelhantes

Mais issues de C#

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.