Debug Hacks Conference 2009に行ってきた。

ネタは吉田@小江戸さんとYuguiさんのがおもしろかった。他の方のネタもCは最近読む程度で、書かないので久しぶりに書いてみようと思うきっかけとして刺激になった。終わったあとに、Debian関係の面々で中華料理屋で夕食。仮想化やリアルタイムOS談義で沸いた。

参加者としての宿題となったDebugネタは、高等なテクニックは持ち合わせてないので、非常に原始的なやり方で解決した話をば。

以前、ハウジングで預かっているお客様環境のAIXでJava アプリケーションサーバが突然落ちる不具合が、自分が担当する前から頻発していて、引き継いだ時は当初はJava coreもCoreも吐かず、ログにも手がかりになるようなものは一切なかった。で、最初に行ったのは、 AIXのAPAR情報を精査 して、怪しいバグを当たりをつけて、 APAR fixを適用 してJava coreを吐くようになった [1] 。次に、Java coreを吐くようになったものの、それには特に原因となるような手がかりはなく、ファイルサイズとセキュリティ上の理由から自社の環境には持ってくることはできなかったので、お客様にIBMのFTPサイトに直接アップしていただいたものの、原因掴めず。 fullcoreを吐かせるようにした のち、そのfullcoreを同様にアップロードしていただいたのだが、IBMからの回答は遅いので、自力でデバッグすることにした。ただ、これがひどいことに、デバッガが無いので、1GB以上もあるfullcoreをstringsコマンドでmoreで眺めること1時間かけて、SAP JCoの呼び出し前後でエラー吐いていることを見つけて、IBMに問い合わせをしたのだが、すぐに回答葉なく、回答が出てもIBM側の対象範囲外という回答で問い合わせを打ちきられてしまった。しかたがないので、同じ情報を元に、今度はSAPに問い合わせしたところ、担当は中国人で、困ったことに、「日本語の意味が分かりません」というそこから説明するのかよ、という状況にハマった。何度かやりとりした結果、利用している環境はもともとサポート対象外だったのだが、これをSAP側のバグであることと、AIXでもサポートすることを認めさせた、という、力業でゴリ押しして、ベンダーに対する交渉で問題解決したというお話でした。Debugというには原始的スグル。

[1]正確に言うと、ulimitなどの設定が不適切でAPAR fixを適用した直後も正常に吐かなかったのだけど。