Behebung eines JDK-Deadlocks in 30 Minuten mit Fray: Ein Concurrency-Thriller
2025-06-07
Beim Hinzufügen von Integrationstests für Fray stieß der Autor auf einen Deadlock im ScheduledThreadPoolExecutor des JDK, ausgelöst durch scheinbar harmlosen Code. Mit Fray's deterministischer Wiedergabe und Scheduling-Visualisierung wurde die Ursache schnell identifiziert: Im SHUTDOWN-Zustand kann FutureTask.get unbegrenzt blockieren. Dies liegt an der verflochtenen Ausführung der Methoden schedule und shutdown, wodurch Tasks im Limbo verbleiben. Fray bot eine klare Sicht auf das Thread-Interleaving, ermöglichte die Reproduktion und Meldung dieses JDK-Concurrency-Bugs.
(aoli.al)
Entwicklung