Depurando um deadlock do JDK em 30 minutos com Fray: Um thriller de concorrência

2025-06-07

Ao adicionar testes de integração para o Fray, o autor encontrou um deadlock no ScheduledThreadPoolExecutor do JDK, acionado por um código aparentemente inócuo. Aproveitando a reprodução determinística e a visualização de programação do Fray, a causa raiz foi rapidamente identificada: No estado SHUTDOWN, FutureTask.get pode bloquear indefinidamente. Isso decorre da execução intercalada dos métodos schedule e shutdown, deixando tarefas em um estado de limbo. O Fray forneceu uma visão clara da intercalação de threads, permitindo a reprodução e a notificação desse bug de concorrência do JDK.

Leia mais
Desenvolvimento

Bug estranho causado pelo mecanismo de cache do Chrome: Uma jornada de depuração sinuosa

2025-03-03

Ao depurar um visualizador Parquet, o autor descobriu uma falha ao acessar o armazenamento S3. Após alguma investigação, o problema não estava no código do aplicativo, mas no mecanismo de cache do Chrome. Ao lidar com solicitações de intervalo, o Chrome otimiza o cache, mas quando o servidor retorna um erro 403, o Chrome ainda retorna dados parciais, fazendo com que o aplicativo trave. O autor relatou o problema à equipe do Chromium, mas a equipe considerou isso um recurso, e não um bug. Finalmente, o autor optou por corrigir o problema no OpenDAL. Essa história nos lembra que encontrar o limite de confiança certo pode acelerar significativamente a depuração.

Leia mais