web-dev-qa-db-ja.com

フォールトトレラントヒープをオフにするにはどうすればよいですか?

最近、アプリケーションを起動すると、Visual Studio 2005の出力ウィンドウに次の行が表示されるようになりました。
FTH:(7156):***現在のプロセスに適用されているフォールトトレラントヒープシム。これは通常、以前のクラッシュが原因です。 ***

次の手順を使用して、フォールトトレラントヒープをオフにしてみました。
http://msdn.Microsoft.com/en-us/library/dd744764(VS.85).aspx

私はWindows 7 64ビット版を実行しているため、32ビットと64ビットの両方のレジストリに変更を加え、32ビットと64ビットの両方を使用して「Rundll32.exe fthsvc.dll、FthSysprepSpecialize」コマンドを実行しています。 Rundll32.exeの64ビットバージョン。

ただし、再起動後もアプリケーションをデバッグしようとすると、フォールトトレラントヒープが引き続き表示されます。

これは、再現しようとしているバグを覆い隠し、パフォーマンスを低下させるため、これは本当の問題です。

フォールトトレラントヒープを無効にする方法を他に提案している人はいますか?

37
MJW

単一のアプリケーションで無効にするには

Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\your_application.exeのHKEY_LOCAL_MACHINEおよびHKEY_CURRENT_USERバージョンに移動し、フォールトトレラントヒープエントリを削除します。

From here (実際には here

42
Lars Truijens

このレジストリ値を0に設定します:HKEY_LOCAL_MACHINE\Software\Microsoft\FTH\Enabled

6
Aaron Klotz

実行可能ファイルの名前をExclusionListに追加できます。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\ExclusionList

私のために働く。

4
Joren Boulanger
2

「Rundll32.exe fthsvc.dll、FthSysprepSpecialize」は、現在フラグが付けられているアプリケーションのリストのみをクリアするように見えます。それでもアプリケーションで奇妙な問題が発生する場合は、FTHが介入して引き継ぐ必要があります。

すでに述べたように:

このレジストリ値を0に設定します:HKEY_LOCAL_MACHINE\Software\Microsoft\FTH\Enabled

これにより、システム全体のFTHが無効になります。

1
atlas

(Microsoft :: VisualStudio :: CppUnitTestFramework)を使用して単体テストを実行すると、同様の問題が発生しました。どういうわけか私はいくつかのヒープ割り当てに違反していて、次にデバッグしようとすると、「現在のプロセスにフォールトトレラントヒープシムが適用されました。これは通常、以前のクラッシュが原因です。」というメッセージが表示され、デバッグ環境がフリーズしました。

再び機能させるには、テストケースを削除し、再コンパイルして再度追加してから再コンパイルする必要があり、ブレークポイントを設定してテストにステップインできました。

0
serup

これにも遭遇しました。 Windows\AppPatch内のAcXtrnal.dllの名前変更/削除は私にとってはうまくいくようです。このマイクロソフト推奨のアクション(私が最初に実行したもの)が何もしないのが好きです。

0
Dave McMordie

このキーに関連付けられているレジストリエントリに該当するデータがないため、ファイルの名前も変更する必要がありました。動作に問題のあるアプリケーションがある場合は、これらが表示されることを期待しています。しかし、私の場合、私はVisual Studio内で自分のアプリケーションをデバッグしていました。したがって、その場合、FTHサービスが実行されているかどうかにかかわらず、FTHを何らかの方法でロードしていたのは私のプロセスでした。実際、以前は誤動作のタグが付けられていたアプリケーションのリストはありませんでした。

しかし、私はこれらの指示に従わなければなりませんでした:

http://billroper.livejournal.com/960825.html

所有権を取得して完全に制御できるようになるまで、ファイルの名前を変更できないからです。

0
user1904938

次の手順に従って、このサービスを停止することなく、FTHによって追跡されるアプリケーションのリストをクリアできます。

  1. [スタート]メニューをクリックします。
  2. [コンピューター]を右クリックし、[管理]をクリックします。
  3. [イベントビューア]-> [アプリケーションとサービスログ]-> [Microsoft]-> [Windows]-> [フォールトトレラントヒープ]をクリックします。
  4. FTHイベントを表示します。

右クリックして操作可能という名前のファイルを見つけ、ログの消去を選択すると、プログラムを再度実行して警告メッセージが消え、オペレーティングシステムを再起動せずに動作しました。

0
clever tiger