スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DLL Not Found = Server Not Found!?

2009年06月15日 00:13

今日は技術情報とは少しおもむきが違いますが、ブログにはいいんじゃないかと思うので自分の障害体験からのお話をしようと思います。

 読者の方では私よりもこの業界に長くおられる方もたくさんいると思いますし、色々な経験をされている方は多いのではないかと思います。
 その中であえて一番大変だった問題を挙げるとしたらどんな問題を挙げるでしょうか?
開発時にぶつかった致命的な製品の制限事項、複数の製品の隙間にはまって運用回避も出来ないほど身動きが取れなくなった問題、感情的なプレッシャー、政治やビジネスに関する厳しいプレッシャー下で厳しいデッドラインを突きつけられた場面、自分のスキルエリアではないのになぜか自分がやらないと終わらない話になっていた・・・・色々思い出す場面があるかもしれません。

 障害について「大変」と言うのは前述したとおり、色々な要素があるので、「大変だった」と一口に言っても簡単に比較する事は出来ませんが、技術的な点だけを考えると一番てこずった問題として私が真っ先に上がるのは以下の問題です。

Lotus Notes クライアントが Lotus Domino サーバーに接続できなくなる障害について

Notesの接続障害は非常に多くのお客様に迷惑をかけてしまった問題で、カスタマーサポートでも本当にたくさんのお客様からお叱りの言葉を受けました。

製品の難しい問題と言うと、どういう問題を想像するでしょうか。
再現しなかったり、デバッグしようと思うと問題が消えてしまう不確定性原理のような問題であったり、マルチスレッドの問題やRace Condition、メモリーオーバーライト、Third PartyやOSとの中間領域の問題・・・色々あると思います。

この問題ももちろんこういう要素はありました。
再現は長い間できなかったですし、Winsock 側のエラー原因を調べないといけないのに、NotesもWinsockも変えてないのにちょっとした操作で問題が消えたり、Notesの再起動をしても直らないし、OSの再起動ではお客様によって直ったり直らなかったりします。
ではシステムの問題か?と言うとNotesしか影響を受けないし、色々な症状を聞いても闇が深くなるだけでさっぱり分かりませんでした。

しかしながら、この問題で一番我々を悩ませたのは問題発生時にWinsock 側が、「Server Not Found」を返してくる事でした。 Winsock 曰く、ネットワークにつながらないのではなく、DNS サーバーに名前が見つからなかった、と。 つまり、「問題発生時には何か変なDNS Query が飛んでいるはずだ・・・」と思っていました。 だから始めは必死でパケットを採取しました。 つながらないときもNotesはDNS Query を投げているはずで、そのQueryでサーバー名が化けているとかそういう問題が起こっているに違いない!と思っていたのです。
 実際はNotesはDNS Queryどころかパケット一つ投げていませんでした。しかも他のアプリケーションは元気一杯にネットワーク上で自由にやりとりしていたのです。これは色々な人が巻き込まれても毎回、ネットワークの切り分けが必要とかパケットの取り方が悪い、と言う話になってしまってここで一番苦労しました。

ここから先の経緯は複雑なのでかいつまんで話しますが、最終的にこの問題の原因は Winsock側が必要なDLLを読み込めていないため、ライブラリ関数を呼び出せない状態になっており、「DLL Not Found」を返していたのでした。 でもこれに対する応答してWinsockは「Server Not Found」にエラー変換をして返すためにだまされてしまっていたのです。
 確かにネットワークAPI を呼ぶときにServer Not Foundはハンドルしていると思いますが、DLL NOT FOUND はハンドルしていない事が多いので考え方によってはこうするほうが親切なのかもしれません。

複雑な問題は調査が進むにしたがって、調査範囲を絞り込んでいこうとするので、始めの段階でミスリードしているといくら調べても原因にたどり着かなくなっています。正確なエラーメッセージって重要だな、とつくづく思いました。


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/167-2960b377
    この記事へのトラックバック


    最新記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。