Débogage d'un blocage JDK en 30 minutes avec Fray : Un thriller de concurrence

2025-06-07

Lors de l'ajout de tests d'intégration pour Fray, l'auteur a rencontré un blocage dans le ScheduledThreadPoolExecutor de JDK déclenché par un code apparemment inoffensif. En utilisant la relecture déterministe et la visualisation de l'ordonnancement de Fray, la cause racine a été rapidement identifiée : dans l'état SHUTDOWN, FutureTask.get peut bloquer indéfiniment. Cela provient de l'exécution entrelacée des méthodes schedule et shutdown, laissant les tâches en suspens. Fray a fourni une vue claire de l'entrelacement des threads, permettant la reproduction et le signalement de ce bug de concurrence JDK.

Lire plus
Développement Blocage

Un bug étrange causé par le mécanisme de cache de Chrome : Un voyage de débogage sinueux

2025-03-03

Lors du débogage d'un visualiseur Parquet, l'auteur a découvert un bug lors de l'accès au stockage S3. Après enquête, le problème ne résidait pas dans le code de l'application, mais dans le mécanisme de cache de Chrome. Lors du traitement des requêtes de plage, Chrome optimise le cache, mais lorsque le serveur renvoie une erreur 403, Chrome renvoie toujours des données partielles, ce qui provoque le blocage de l'application. L'auteur a signalé le problème à l'équipe Chromium, mais l'équipe l'a considéré comme une fonctionnalité et non comme un bug. Finalement, l'auteur a choisi de corriger le problème dans OpenDAL. Cette histoire nous rappelle que trouver la bonne limite de confiance peut accélérer considérablement le débogage.

Lire plus