ソフトウェアのカスタマーサポートという仕事をしていると、顧客から様々な問題が持ち込まれてくる。 先日取り組んでいたのは、カーネル内のある構造体のメンバ変数の不整合によりカーネルパニックが発生してしまうという問題だった。この手の障害解析には問題の再現環境を作ることが重要だが、顧客の開発部門での数カ月の努力にもかかわらず再現させることができず、製品のリリース時期が迫ってきたため私のところに持ち込まれてきたのだった。 私は3日ほどで再現プログラムを作ることができたが、このことに顧客の担当者は大変驚いたようだった。しかし、種明かしをすると、この問題はそれほど難しいものではなかった。この手のデータの不整合の原因としては、そのデータに関して何らかの競合状態が発生しているという場合が多い。そこでソースを見てみると、不整合の起きている構造体のメンバ変数は少し特殊な使われ方をされており、そのような競合状態の