IMAサービスに対して全ページヒープを有効にする方法

IMAサービスに対して全ページヒープを有効にする方法

book

Article ID: CTX110147

calendar_today

Updated On:

Description

この文書では、診断ツールを使用してヒープの検出を有効にする方法について記述しています。
 

背景

ヒープの破損は、誤ったアプリケーションのコーディングや、外部データの破損によって引き起こされます。
ヒープの破損により、IMAサービスが応答しなくなったりクラッシュしたりすることがあります。

通常ヒープの破損の効果は一定の時間が経過したあとに表れるため、各種存在する Hotfix の中で、原因となっているモジュール(Citrix 社製のモジュールまたは他社製のモジュール)を特定することが常に可能であるとは限りません。


Instructions


ヒープの破損を発生時に検出するには、追加のランタイム診断ツール(「全ページヒープ」)を有効にします。この診断ツールを有効にすると、アプリケーションダンプが生成されます。

まず、Microsoft社の以下のWebサイトからDebugging Tools for Windowsをダウンロードしてインストールします。

Debugging Tools for Windows 32-bit version

注:x64 Windows上でも、IMAサービスは32ビットの実行ファイルなので、32ビットのDebugging Toolsからgflags.exeを実行する必要があります。

注:以下は、gflags.exe実行に関する説明です。コマンドラインからgflags.exeを実行する必要があるのみの場合、Citrixサーバー上にデバッグツールをインストールする必要はありません。デバッグツールをワークステーションまたはテストサーバー上にインストールして、インストールディレクトリからgflags.exeファイルのみをCitrixサーバーへコピーできます。

全ページヒープを有効にするには、以下のコマンドを実行します。

gflags /p /enable ImaSrv.exe /full

―または―

gflags /i ImaSrv.exe +hpa

gflagsでページヒープの検証が有効になっていることを確認するには、以下のコマンドを実行します。:

gflags.exe /p

―または―

gflags /i ImaSrv.exe

以下のメッセージが表示されます。

ImaSrv.exe: page heap enabled with flags (full traces)

―または―

Current Registry Settings for ImaSrv.exe executable are 02000000

ダンプが生成されると、パフォーマンスの低下を防ぐために全ページヒープは無効になります。

全ページヒープを無効にするには、以下のコマンドを実行します。

gflags /p /disable ImaSrv.exe

―または―

gflags /i ImaSrv.exe -hpa

全ページヒープが無効になっていることを確認するには、以下のコマンドを実行します。

gflags.exe /p

―または―

gflags /i ImaSrv.exe

以下のメッセージが表示されます。

No application has page heap enabled

―または―

Current Registry Settings for ImaSrv.exe executable are 00000000

gflags.exeのGUIインターフェイスを使用して、同様の作業を行うことができます。

ユーザが追加した画像

WindowsにDebugging Toolsをインストールしたくない場合またはgflags.exeを使用する場合は、レジストリを直接修正することも可能です。

注:レジストリエディタの使用を誤ると、深刻な問題が発生する可能性があり、Windowsの再インストールが必要になることがあります。レジストリエディタは自己の責任と判断の範囲でご使用ください。

32ビットWindowsシステムの場合

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImaSrv.exe

64ビットWindowsシステムの場合

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImaSrv.exe

ユーザが追加した画像

以下のレジストリキーの下に新しく2つのREG_DWORD値を作成します。

32ビットWindowsシステムの場合

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<processname>

x64ビットWindowsシステムの場合

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<processname>

以下のようになります。

名前: GlobalFlag

種類: REG_DWORD

値: 0x02000000

名前: PageHeapFlags

種類: REG_DWORD

値: 0x00000003
 

追加情報

ほかのアプリケーションに対して全ページヒープを有効にする場合は、「ImaSrv」をそのアプリケーションの名前に置き換えます。

 

Issue/Introduction

この文書では、診断ツールを使用してヒープの検出を有効にする方法について記述しています。