Citrix 製品のインストールされたマシン上において、プロセスがクラッシュする場合があります。このドキュメントにおいては、プロセスクラッシュが発生した場合の一般的なトラブルシューティング方法や必要な資料、公開されている既知の事例の検索方法について紹介します。
--------------------------警告----------------------------
警告:レジストリエディタの使用を誤ると、深刻な問題が発生する可能性がり、
Windows の再インストールが必要になる場合もあります。レジストリエディタの
誤用による障害に対して、弊社では一切責任を負いません。レジストリエディ
タは、お客様の責任と判断の範囲でご使用ください。レジストリファイルのバッ
クアップを作成してから、レジストリを編集してください。
-----------------------------------------------------------
Instructions
プロセスのクラッシュが発生した場合、以下のステップを実施します:
1) プロセス名、モジュール名の確認
1. 問題の発生したマシン上でアプリケーションイベントログを確認します。
・イベントログはWindows ボタン + R キーを押し、「ファイル名を指定して実行」にて eventvwr.msc を入力、OK をクリックすることで開く、イベントビューアーで確認できます。
2. 事象発生時間帯の、"Application Error" イベントメッセージを確認します。
・例えば、以下のような出力内容となります。プロセス名、モジュール名等は実際の名称とは異なります。
======
種類:Application
ソース:Application Error
日付: 20yy/mm/dd hh:mm:ss
イベントID:1000
レベル :エラー
説明:
-----------------------------------------------------------------------------------------------------------------------
障害が発生しているアプリケーション名: xxxxx.exe、バージョン: *.*.***、タイム スタンプ: ********
障害が発生しているモジュール名: yyyyy.dll、バージョン: *.*.***、タイム スタンプ: ********
例外コード: 0xc0000005
======
xxxxx.exe がクラッシュの発生したプロセス名、yyyyy.dll は発生箇所を示すモジュール名、例外コードはクラッシュの一般的な種類となります。例えば、0xc0000005 は "STATUS_ACCESS_VIOLATION" を指し不正なアドレス領域への参照を意味しますが、例外コードは汎用的な内容を示しますため、例外コードのみから原因を特定することはできません。上記エラーイベント出力と同時に、以下のメッセージが出力される場合があります。このメッセージにはダンプファイルの出力先フォルダパスが含まれます。
======
情報 20yy/mm/dd hh:mm:ss Windows Error Reporting 1001 なし "障害バケット *******、種類 *
イベント名: BEX
応答: 使用不可
Cab ID: 0
問題の署名:
P1: xxxxx.exe
P2: 0.0.0.0
P3: ********
P4: ************
P5: 0.0.0.0
P6: 00000000
P7: ********
P8: c0000005
P9: ********
P10:
添付ファイル:
C:\Users\<ユーザー名>\AppData\Local\Temp\*******.tmp.WERInternalMetadata.xml
これらのファイルは次の場所にある可能性があります:
C:\Users\<ユーザー名>\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_xxxxx.exe_*********************************_********
======
3. クラッシュの発生したプロセスが、どのベンダーより提供されているものか、確認します。
・プロセスはアプリケーションモジュールのひとつとして各ベンダーが提供しています。例えば、wfica32.exe がクラッシュしている場合、事象発生マシン上のエクスプローラーでこのファイル名を検索すると、実行ファイルへのパスが C:\Program Files\Citrix\ICA Client\wfica32.exe であることが分かります。このパスより、wfica32.exe が Citrix 社のモジュールであると判断できます。
・クラッシュしたプロセスの実行ファイル ~.exe を右クリックし、[プロパティ] を開きます。詳細タブの「製品名」や「著作権」などから提供元ベンダーを確認できます。
・この他にも、一般のインターネットサイトなどを検索することで、どのベンダーが提供しているプロセスであるか、よくあるクラッシュの要因などについて情報を得ることができます。
4. Windows Update を実施し、OS を最新の状態へ更新します。
・プロセスから利用する OS の API やドライバ等が更新されることにより、問題が解消される可能性があります。
2) クラッシュしたプロセスが サードパーティー製のモジュールである場合
・Citrix 以外のベンダーが提供するプロセスである場合判明した場合、各ベンダーサポートへお問い合わせください。
・なお、弊社 Citrix から直接提供していない他のアプリケーションプロセスが、VDA など Citrix コンポーネントのインストールされている環境でクラッシュする場合があります。
その場合は、当該プロセスの API Hook を無効とすることで、切り分けを行うことができます。詳細は下記 KB をご参照ください。
API Hook の機能を使用することにより、Citrix 製品は各プロセスへ dll をロードし、製品としての動作を実現します。上記 KB の方法により、このロードをプロセス単位で無効化し、Citrix の影響を除外することができます。Citrix 製品のインストールされていない環境においては、 Citrix 関連の dll もロードされませんので、プロセスを一時的にデフォルトの状態へ戻すものとお考えください。API Hook を無効にしてもプロセスのクラッシュが発生する場合には、当該プロセスの提供ベンダー様へお問い合わせいただく必要がございます。
3) クラッシュしたプロセスが Citrix のモジュールである場合
1. 最新バージョンへのバージョンアップ
・Receiver, VDA, Delivery Controller など、問題が発生しているマシンへインストールされているコンポーネントを、最新バージョンへバージョンアップします。バージョンアップにより問題が解消される可能性があります。最新バージョンには報告されている既知の問題の対応を含む多くの修正が含まれ、また、dll、プロセスなどの各モジュールが一新されるためです。バージョンアップはトラブルシューティングとしても重要なフェーズとなります。
2. 基本情報の収集
・問題の発生しているコンポーネントをバージョンアップしても事象が継続する場合、以下の情報を確認します。
- 発生頻度はどの程度でしょうか。公開アプリケーション起動時に毎回、1週間に1件程度、など。
- 特定のユーザー、端末に依存し発生していますか。
- 発生時の状況、操作内容をご確認ください。特定のオペレーションをトリガーとして発生していますか。
- 問題の発生し始めた時期に、環境構成やアプリケーションのバージョン変更を行っていますか。
3. 資料取得
・発生頻度などの情報をあらかじめ収集の上、以下の資料を取得します。
- 事象発生時に生成されるプロセスダンプを取得します。
上述のアプリケーションイベントログからダンプファイル出力先フォルダをご確認いただくか、あるいは、C:\Users\<ユーザー名>\AppData\Local 配下のフォルダにて、.hdmp や .mdmp ファイルを検索ください。事象発生時刻のファイルであれば、.hdmp, .mdmp が各々クラッシュ時のヒープダンプ、ミニダンプとなり、一次解析に有効な資料となります。ただし、デフォルトで生成されるヒープダンプ、ミニダンプはプロセスダンプの一種ですが、プロセスのフルダンプではございませんので情報量が少なく、それだけでは原因解明に至らない場合もございます。その場合、後述の WER 設定でプロセスのフルダンプを取得いただく必要もございますため、ご留意ください。多くの場合、プロセスのクラッシュする要因をプロセスダンプなしで調査することは非常に難しくなります。
- 事象発生マシンのアプリケーション、システムイベントログ(.txt, .evtx 各々の形式で取得ください。)
4. プロセスのクラッシュダンプが自動生成されていない場合
・プロセスのクラッシュダンプが自動生成されていない場合は、以下の設定を行います。この設定により、Windows OS の WER (Windows Error Reporting) 機能がクラッシュ時のプロセスダンプ (Full dump)を生成します。WER の設定はプロセスのクラッシュする前に行っておく必要があります。
[WERでのプロセスダンプ取得手順]
-----
予め次の手順で WER (Windows Error Reporting) を有効にしておくことで、
アプリケーションのクラッシュダンプが自動的に生成されるようになります。
1) Windowsの「ファイル名を指定して実行」から regedit を実行します。
2) レジストリエディタが起動しますので、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting に移動します。
3) 以下のキーが存在しない場合、手動で新規作成します。
Windows Error Reporting を右クリックし、新規 > キー(k) にて LocalDumps というキーを作成してください。
キー:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting\LocalDumps
4) 続いて以下の3つのレジストリ値を追加します。「LocalDumps」キーを右クリックしそれぞれ作成してください。
※ DumpFolder はプロセスダンプの出力先として、任意に設定ください。
値の名前: DumpFolder
種類: REG_EXPAND_SZ(展開可能な文字列値)
値のデータ: %LOCALAPPDATA%\CrashDumps
値の名前: DumpCount
種類: REG_DWORD (DWORD(32ビット)値)
値のデータ: 0xa
値の名前: DumpType
種類: REG_DWORD (DWORD(32ビット)値)
値のデータ: 0x2
設定後、マシンの再起動は必要ありません。
事象が再現しましたら、上記 DumpFolder にご設定いただきましたフォルダを確認いただき
ダンプファイルが生成されていれば、これをご提供ください。
5. ご確認いただいた上述の情報、およびプロセスダンプ、イベントログを資料のセットとし、弊社テクニカルサポートへお問い合わせください。
Citrix コンポーネントにおいてプロセスのクラッシュする事例
ご利用のブラウザにて検索ワードとして wfica32.exe crash site:support.citrix.com など、対象プロセスのクラッシュをサイト指定にて検索いただくことで、弊社から公開されております関連 KB を表示することができます。プロセス名となる "wfica32.exe" や "crash" などのキーワードは適宜変更ください。