Fray를 사용하여 30분 만에 JDK 교착 상태 디버깅: 동시성 스릴러

2025-06-07

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

더 보기
개발 교착 상태

Chrome 캐싱 메커니즘으로 인한 이상한 버그: 꼬불꼬불한 디버깅 여정

2025-03-03

Parquet 뷰어 디버깅 중 S3 스토리지에 접근할 때 크래시되는 버그를 발견했습니다. 조사 결과, 문제는 애플리케이션 코드가 아니라 Chrome의 캐싱 메커니즘에 있었습니다. 범위 요청을 처리할 때 Chrome은 캐싱을 최적화하지만, 서버가 403 에러를 반환하면 Chrome은 부분적인 데이터를 계속 반환하여 애플리케이션이 크래시됩니다. 저자는 Chromium 팀에 이 문제를 보고했지만, 팀은 이것을 버그가 아니라 기능으로 간주했습니다. 결국 저자는 OpenDAL에서 이 문제를 수정하기로 했습니다. 이 이야기는 적절한 신뢰 경계를 찾는 것이 디버깅 속도를 크게 높일 수 있음을 상기시켜줍니다.

더 보기