OpenAIのエンジニアは、Rocksetデータインフラストラクチャで説明のつかないC++クラッシュが発生した原因として、Azureホストでの静かなハードウェア破損とGNU libunwind内の18年前から存在する競合条件という2つの異なる要因を特定しました。
- クラッシュは偽のアドレスへの関数戻りやアライメントされていないスタックポインタに関連しており、これは標準的なソフトウェアデバッグの仮説では説明がつきませんでした。
- 初期分析では、証拠が不足していたため、アプリケーションコードのバグ、コンパイラの不具合、カーネルシグナル配信の問題は除外されました。
研究者たちは、コアドンプとx86_64のレッドゾーンを活用して非アクティブなスタックフレームを保存し、クラッシュ後の詳細な分析を行いました。
- 調査は個々のインスタンスではなく人口レベルのクラッシュデータを分析することで、単一の原因から2つの無関係なバグへと焦点が移りました。
このアプローチは、クラッシュを疫学的な問題として扱うことで、従来のデバッグ手法では見逃されがちな稀で複雑な障害をエンジニアが特定できることを示しています。