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でこの問題を修正することにしました。この話は、適切な信頼境界を見つけることがデバッグを大幅に高速化することを思い出させてくれます。

続きを読む