Fray 协助 30 分钟内调试 JDK 死锁:一个并发编程的惊险故事

2025-06-07

作者在使用 Fray 进行集成测试时,发现一个看似简单的代码片段会导致 JDK 的 ScheduledThreadPoolExecutor 出现死锁。通过 Fray 的确定性回放和调度可视化功能,作者快速定位了问题:在 SHUTDOWN 状态下,FutureTask.get 方法可能无限期阻塞。这源于 schedule 方法和 shutdown 方法执行的交错,导致任务进入一种 limbo 状态。Fray 帮助作者清晰地观察到线程交错的细节,最终成功重现并报告了这个 JDK 的并发 bug。

阅读更多
开发 Fray

Chrome缓存机制引发的诡异Bug:一段曲折的调试之旅

2025-03-03

作者在调试一个Parquet查看器时,发现程序在访问S3存储时崩溃。经过一番排查,发现问题并非在应用代码,而是Chrome的缓存机制。Chrome在处理范围请求时,会优化缓存,但当服务器返回403错误时,Chrome仍返回部分数据,导致应用崩溃。作者向Chromium团队报告了该问题,但该团队认为这是一个特性而非Bug。最终,作者选择在OpenDAL中修复该问题。这个故事提醒我们,调试时要找到正确的信任边界,才能更高效地解决问题。

阅读更多