Hasty Briefsbeta

双语

Discovering a JDK Race Condition, and Debugging It in 30 Minutes with Fray

a year ago
  • #Concurrency
  • #Debugging
  • #JDK
  • 在Fray测试过程中发现JDK存在死锁异常
  • 该问题发生于ScheduledThreadPoolExecutor中,当在一个线程调度任务同时在另一个线程关闭执行器时
  • Fray的确定性重放和调度可视化功能帮助识别了JDK中的竞态条件
  • 该缺陷会导致当执行器处于SHUTDOWN状态时,FutureTask.get方法无限阻塞
  • 竞态条件绕过了ThreadPoolExecutor中的检查机制,使任务处于悬置状态
  • Fray支持逐步重放错误场景,便于理解和调试问题
  • 文档提供了使用Fray和IntelliJ IDEA复现该缺陷的具体步骤
  • 虽然已为JDK创建补丁,但公开的缺陷报告仅包含基于Fray的复现步骤