Подтвердить что ты не робот

Как отключить отказоустойчивую кучу?

Я недавно начал видеть эту строку в окне вывода Visual Studio 2005 при запуске приложения:
FTH: (7156): *** Отказоустойчивая перемычка кучи, применяемая к текущему процессу. Обычно это происходит из-за предыдущих сбоев. ***

Я попытался отключить отказоустойчивую кучу, используя инструкции здесь:
http://msdn.microsoft.com/en-us/library/dd744764(VS.85).aspx

Я использую 64-разрядную версию Windows 7, поэтому я внес изменения в 32-разрядные и 64-разрядные реестры и запустил команду Rundll32.exe fthsvc.dll, FthSysprepSpecialize, используя как 32 -битные и 64-разрядные версии Rundll32.exe.

Однако после перезагрузки я все еще получаю отказоустойчивую кучу при попытке отладки моего приложения!

Это настоящая проблема, поскольку она маскирует ошибку, которую я пытаюсь воспроизвести, а также убивает производительность.

Есть ли у кого-нибудь другие рекомендации, как отключить отказоустойчивую кучу?

4b9b3361

Ответ 1

Чтобы отключить его для одного приложения

Перейдите в версии HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\your_application.exe и удалите запись FaultTolerantHeap.

Из здесь (на самом деле здесь)

Ответ 2

Задайте для этого значения реестра значение 0: HKEY_LOCAL_MACHINE\Software\Microsoft\FTH\Enabled

Ответ 3

Вы можете добавить имя своего исполняемого файла в ExclusionList.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\ExclusionList

Работает для меня.

Ответ 5

"Rundll32.exe fthsvc.dll, FthSysprepSpecialize" ищет только очистить список приложений, помеченных в настоящее время. если ваше приложение все еще вызывает странности, FTH все равно должен вмешаться и взять на себя ответственность.

как уже упоминалось:

Задайте для этого значения реестра значение 0: HKEY_LOCAL_MACHINE\Software\Microsoft\FTH\Enabled

это должно отключить FTH для всей системы.

Ответ 6

И столкнулся с этим. Переименование/удаление AcXtrnal.dll внутри Windows\AppPatch, похоже, работает на меня. Мне нравится, как это рекомендуемое Microsoft действие (которое я сделал первым) ничего не делает.

Ответ 7

Мне также пришлось переименовать файл, потому что записи реестра, связанные с этим ключом, были пустыми применимыми данными. Я ожидаю, что они заселятся, если у вас есть неправильное приложение. Но в моем случае я отлаживал собственное приложение в Visual Studio. Поэтому в этом случае именно мой процесс каким-то образом загрузил FTH, работает ли служба FTH или нет. И на самом деле у меня не было приложений, которые ранее были помечены как неправильные.

Но я должен был следовать этим инструкциям:

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

потому что это не позволит мне переименовать файл, пока я не приобрел права собственности и не удостоился полного контроля.

Ответ 8

У меня была похожая проблема при запуске модульного теста с использованием (Microsoft :: VisualStudio :: CppUnitTestFramework). Каким-то образом я нарушил некоторое выделение кучи, и в следующий раз, когда я попытался отладить, я получил сообщение: "Отказоустойчивая прокладка кучи применена к текущему процессу. Обычно это происходит из-за предыдущих сбоев". Среда отладки зависла.

Чтобы заставить его работать снова, мне пришлось удалить тестовый пример, перекомпилировать и добавить его снова и перекомпилировать, затем я мог установить точку останова и войти в тест.

Ответ 9

Вы можете очистить список приложений, отслеживаемых FTH, не останавливая эту службу, выполнив следующие действия:

  1. Нажмите меню Пуск.
  2. Щелкните правой кнопкой мыши Компьютер и выберите Управление.
  3. Нажмите Просмотр событий> Журналы приложений и служб> Microsoft> Windows> Fault-Tolerant-Heap.
  4. Просмотр событий FTH. Вы найдете файл с рабочим именем, щелкнув правой кнопкой мыши и выбрав команду "Очистить журнал", затем вы сможете снова запустить программу и предупреждающее сообщение исчезнет, оно сработало без перезагрузки операционной системы.