終結
メインの仕事は社内から来るOracleに関する質問に答えるサポートだったりします。
最近来た質問は、Oracleの.NET環境からデータベースに接続するOracle Data Provider for .NET(通称ODP.NET)がメモリリークをして困る、というもの。
当然、私の分からない質問もよく飛んできます。というか、調べなければ分からないような質問の方が殆どです。WebやOracleのマニュアルを見ても分からないものもあるので、そういう場合はOracleの質問窓口に投げます。
ところが、Oracle側はメモリリークなんかない、あるなら証拠を見せてくれ、と一点張り。社内側はOracleのライブラリがメモリリークを引き起こしてる、グラフを送るから見てくれ、といつまでたっても平行線。
もうこんなのを2週間近くやってます。orz
私が見ても、確かにメモリリークはしてると思うんだけど、向こうでは再現してないらしいしなぁ……、うーん分からん。
ところが、今日自分でサンプルプログラムを組んでみたらメモリリークが発生しなかったので、違いは何だろうと、二つのプログラムを書き換えては比較し……を繰り返していると、どうやらmainメソッドの上に書いてある[STAThread]という記述があるか、無いかでメモリリークが発生している模様。
ということは……このバグ、社内でもOracleでもなくて……。
マイクロソフトのバグか!!
というわけで、丁度後ろの席に当たるマイクロソフト関係サポートチームに相談してみて、調べてもらった結果、類似した報告がいくつか見つかった。パッチらしきもの(確証は無い)も貰ったので、明日試してみる予定。
でも、私は一応Oracleサポート……なんだけどなぁ……。
調べてると最終的に全然違うところに問題があった、なんてことが良くあってヤレヤレって感じです。