スポンサーサイト

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

OpenFileDialogを表示するときにフリーズする原因の調査手順

概要

不具合の解決手順は「OpenFileDialogを表示するときにフリーズする不具合の解決」に記載していますので、現象を解決したい方はこちらをお読みください。


ここでは「OpenFileDialogを表示するときにフリーズする不具合の解決」の信憑性の為に調査手順を記載します。

また、その他の不具合の原因調査にも使える手順と思いますので、別の不具合で困っている方のご参考にもなればと思います。


1.現象の再現手順を把握

OpenFileDialog.ShowDialogを何回かすると現象が発生することを把握しました。

現象が再現できるようになったので、どのような場合に現象が発生するか/しないかを調べて原因箇所を特定していきます。


2.ウィルス対策ソフトを停止して、現象が発生するかを確認

不具合の原因の筆頭に上がるのがウィルス対策ソフトです。これを停止して現象が発生するかを確認するのがまずは手軽です。

結果、現象は発生しました。一旦これは原因の候補から外します。


3.ネットで同種の現象と対処が無いかを調べ、実行して、現象が発生するかを確認

ネットで調べた所、同種の現象は色々ありました。しかし、私の場合どれを実行しても解決しませんでした。

既知の対処が無いので、自分で原因の調査をしていくことにします。


4.セーフモードで起動して、現象が発生するかを確認

パソコンの起動時にF8キーを連打すると「Windows 拡張オプション メニュー」が出ます。そこでセーフモードを選んで起動します。

結果、現象は発生しませんでした。

そのため、セーフモード時には起動していない、アプリ、サービス、ドライバが原因であると想定されます。


5.クリーンブートして、現象が発生するかを確認

参考「Windows Vista または Windows 7 でクリーン ブートを実行して問題のトラブルシューティングを行う方法

クリーンブートします。

クリーンブートとは具体的にはシステム構成(msconfig)の「サービス」「スタートアップ」タブを全て無効にした状態でWindowsを起動することです。

結果、現象は発生しました。Microsoftサービスも含めて「すべて無効」しましたが発生しました。

そのため、クリーンブート時だけに起動する、アプリ、サービス、ドライバが原因であると想定されます。


6.セーフブート時と同じ状態になるよう、起動中のプロセス、サービスを終了させて、現象が発生するかを確認

  1. セーフモードで起動しタスクマネージャー(taskmgr)の「プロセス」「サービス」タブの画面コピーを取ります。
  2. クリーンブートし同じ状態になるよう、プロセス、サービスを終了していきます。

結果、現象は発生しました。

まだ見逃しているアプリ、サービスもあるかもしれませんが、もう追い方を知らないのでこの2つはあきらめます。

次はドライバを見ていきます。


7.クリーンブート時だけに読み込まれるドライバを削除して、現象が発生するかを確認

Windowsには「C:\Windows\ntbtlog.txt」というファイルがあり、ここにはWindowsの起動プロセスが記録されます。つまりブートのログです。

このブートログには起動時に読み込まれるドライバも記録されています。

セーフモード起動時のブートログとクリーンブート時のブートログを取り、比較することで、クリーンブート時だけに読み込まれているドライバを知ることが出来ます。


まずセーフモード時のブートログを取ります。

  1. 「C:\Windows\ntbtlog.txt」の中身を空にします。
  2. システム構成の「ブート」タブから、「セーフブート」「ブートログ」にチェックを入れます。
  3. Windowsを再起動します。
  4. 「C:\Windows\ntbtlog.txt」をコピー&ペーストして保持しておきます。

次にクリーンブート時のブートログを取ります。

  1. 「C:\Windows\ntbtlog.txt」の中身を空にします。
  2. システム構成の「ブート」タブから、「セーフブート」のチェックを外します。
  3. Windowsを再起動します。

次に「削除予定のドライバ」をまとめます。

  1. これをWinMergeなどのソフトを使って比較します。
  2. クリーンブート時の差異をテキストファイルにコピー&ペーストし「削除予定のドライバ」として保持します。
  3. 「Did not load driver」から始まる行は「読み込まれなかった」ということなので「削除予定のドライバ」からは除外します。

取得した「削除予定のドライバ」は40個ほどありました。

これを基に原因のドライバを特定していきます。

「削除予定のドライバ」を全て削除しても現象が発生する場合はドライバもあきらめることにします。申し訳ありませんが他に原因調査の方法を知りません。バックアップからドライバを復元してOSをインストールしなおします。

以下の手順は、ドライバに原因があることを前提にしています。

  1. 「C:\Windows\System32\drivers」のバックアップを取ります。
  2. 「削除予定のドライバ」の内、対象のドライバを半分削除して半分残します。(「TrustedInstallerからアクセス許可を得る必要」のようなメッセージが出て削除できない場合は、「TrustedInstallerのアクセス許可、windows7のファイル所有権・アクセス権を変更する方法」を参照ください。takeown後、ファイルのプロパティのセキュリティタブから自身のユーザーを追加してフルコントロールを許可することで削除できるようになります。(takeownコマンドは「削除予定のドライバ」を元に正規表現置換すれば簡単に得られます。また、実行前に元の所有権をメモしておいた方がいいかもしれません))
  3. 現象が発生するかを確認します
  4. 発生した場合は、削除しなかったもう半分のドライバの中に原因のドライバがあるということです。
  5. 発生しなかった場合は、削除した半分のドライバの中に原因のドライバがあるということです。
  6. 原因のドライバを含む半分を「削除予定のドライバ」とします。
  7. バックアップをコピ&ペーストして削除したドライバを復元します。
  8. 「削除予定のドライバ」が1つになるまで、手順2~7を繰り返します。

以上で「削除予定のドライバ」が1つになりました。

これが「C:\Windows\System32\drivers\cymon.sys」でした。


8.ドライバに依存しているアプリを把握

ドライバを削除すれば現象が解決するのはわかりました。

しかしどんなアプリが依存するかを知らないと、安心して削除したままにしておけません。

そこで、ドライバに依存しているアプリを把握します。

これを調べる良い方法は知りません。

今回はネットで関連しそうなアプリを調べアンインストールし、同時にドライバが消えるかどうかを判断材料にしました。


「cymon.sys」で調べると「電子ブックのDRM絡みのドライバっぽい」という事が分かりました。

もう少し詳しく知るため、「cymon.sys」のプロパティを確認し、著作権がCypher Tec Incにあることを確認しました。

「Cypher Tec Inc」で調べると、確かにDRM関係の会社であることが分かりました。


確かに電子書籍系のアプリを入れた記憶はあるのですが、アプリ名を覚えていませんでした。

最終的にどういう経路か忘れましたが以下を見て、確認してみるとBookLive!Readerがインストールされていました。

https://twitter.com/nant0ka/statuses/235945903863787522
ここ2、3カ月ブルースクリーンが連発→ BlueScreenViewで原因を探ろう→ CYMON.SYSが原因っぽい→ 知恵袋の人いわく、電子ブックのDRM絡みのドライバっぽいらしい・・・→ あ、BookLive! Readerを入れたっけ→ 削除→ 様子見・・・

BookLive!Readerをアンインストールすると「cymon.sys」が削除されることを確認しました。

BookLive!Readerをインストールすると「cymon.sys」が追加されることを確認しました。


以上で、BookLive!Readerをアンインストールすることで解決する、としました。


参考

Pagination

Comment

Post Your Comment

コメント登録フォーム
公開設定

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