Fray를 사용하여 30분 만에 JDK 교착 상태 디버깅: 동시성 스릴러
2025-06-07
Fray의 통합 테스트를 추가하는 동안, 겉보기에는 무해한 코드로 트리거된 JDK의 ScheduledThreadPoolExecutor에서 교착 상태가 발생했습니다. Fray의 결정론적 재생 및 일정 시각화를 활용하여 근본 원인을 신속하게 파악했습니다. SHUTDOWN 상태에서는 FutureTask.get이 무기한으로 차단될 수 있습니다. 이는 schedule 메서드와 shutdown 메서드의 엇갈린 실행에서 비롯되며, 작업을 보류 상태로 만듭니다. Fray는 스레드 인터리빙에 대한 명확한 보기를 제공하여 이 JDK 동시성 버그의 재현 및 보고를 가능하게 했습니다.
(aoli.al)
개발
교착 상태