Redisクライアントのuse-after-freeを偶然のflaky testが暴く
A flaky test exposed a Redis client use-after-free

Buildkiteのエンジニアリングチームは、flaky testの調査中にredis-clientライブラリの深刻なメモリ破壊バグを発見しました。原因はhiredisのC拡張にあり、readerスレッドがwriterバッファを解放することでuse-after-freeが発生していました。コアダンプとASANを駆使して特定に至るまでの過程を、チームの協力と幸運も交えて綴ります。
メモリ破壊バグは、セグフォルトによるコアダンプが生成されても、メモリがいつ破壊されたかはわかるが、どのように破壊されたかの手がかりはほとんど得られないため、修正に数か月かかることがよくあります。