Как отключить fth windows 10

Модернизация приложений

В части 6 нашей статьи мы рассказывали о механизме Windows Error Reporting. В данной части мы продолжим обсуждение темы обеспечения стабильности приложений и поговорим о механизме Fault Tolerant Heap и утилите Application Verifier.

Механизм Fault Tolerant Heap

Устойчивая к сбоям «куча» (Fault Tolerant Heap, FTH) — это новая подсистема в Windows 7, призванная уменьшить число сбоев приложений, связанных с некорректным использованием ресурсов «кучи». Сбои в области «кучи» являются наиболее частой причиной сбоев самих приложений и в большинстве случае обусловлены ошибками в коде приложений.

Индикаторами повреждений «кучи» являются сбои при применении функций RtlAllocateHeap() и RtlFreeHeap(), помимо этого сбои могут возникать при завершении работы и вызове функции RtlFreeHeap().

К основным задачам Fault Tolerant Heap относятся:

  • исправление наиболее частых ошибок за счет применения специальных «заплаток»;
  • динамическое определение необходимости исправления приложения;
  • мониторинг эффективности сделанных исправлений и их отмена в тех случаях, когда не удалось исправить ошибки;
  • отсылка диагностических данных о повреждениях «кучи» в Microsoft и разработчикам приложений.

Механизм Fault Tolerant Heap состоит из двух компонентов — сервера и системных «заплаток». Сервер отвечает за активацию механизма «заплаток» для приложения, мониторинг работы приложений, удаление «заплаток», коммуникацию с Microsoft через механизм Dr.Watson. Системные «заплатки», реализованные в библиотеке AcXtrnal.dll, загружаемой в процесс приложения, исправляют наиболее частые ошибки, связанные с использованием «кучи», и отсылают диагностическую информацию в Microsoft с помощью механизма Windows Error Reporting.

Механизм Fault Tolerant Heap поддерживается в следующих сценариях:

  • полная функциональность FTH доступна только в клиентских версиях операционной системы Windows 7. Это означает, что FTH не выполняет мониторинг и не исправляет приложения, выполняющиеся под управлением серверных версий операционной системы. Тем не менее для серверных приложений можно применить соответствующие системные «заплатки» — для этого следует использовать набор утилит Application Compatibility Toolkit;
  • полная функциональность FTH поддерживается только для интерактивных приложений. Поскольку начиная с Windows Vista и Windows Server 2008 сервисы не могут быть интерактивными, сервисы не включаются в мониторинг, выполняемый FTH. Тем не менее для приложений, которые выполняются как сервисы, можно применить соответствующие системные «заплатки» — для этого следует использовать набор утилит Application Compatibility Toolkit. Отметим, что технически FTH не отличает сервисные процессы от других процессов, но мониторинг и исправление выполняются только для процессов, ассоциированных с токеном интерактивного пользователя;
  • механизм FTH выполняется как часть службы Diagnostic Policy Service. Этот сервис осуществляется в процессе svchost.exe, который, в свою очередь, выполняется в контексте безопасности учетной записи Local Service. Для обеспечения функционирования механизма FTH учетной записи Local Service, как минимум, требуется доступ на чтение к полному имени исполняемого файла для приложения, к которому будут применены соответствующие исправления. Если у учетной записи нет такого доступа, FTH не сможет применить необходимые исправления.

Наблюдение за механизмом Fault Tolerant Heap

Fault Tolerant Heap заносит в системный журнал информацию о старте сервиса, его завершении, а также об исправлениях, примененных к приложениям. Для просмотра этой информации следует выполнить следующие шаги:

  1. Вызвать меню Start.
  2. Нажать правую кнопку мыши на команде Computer и выполнить команду Manage.
  3. Вызвать Event Viewer → Applications and Services Logs → Microsoft → Windows → Fault-Tolerant-Heap.
  4. Посмотреть события, связанные с FTH.
Читайте также:  Words with friends windows

Информация о FTH в системном журнале

События, связанные со стартом (1001) и завершением (1002) сервиса, не содержат дополнительных данных. События, касающиеся исправлений, содержат идентификатор процесса (PID), название образа на диске и время запуска процесса.

Отключение механизма Fault Tolerant Heap

Для полного отключения механизма Fault Tolerant Heap на уровне системы необходимо в реестре присвоить переменной HKLM\Software\Microsoft\FTH\Enabled значение 0. После этого следует перезагрузить операционную систему.

Сброс списка приложений

Как уже было отмечено, механизм Fault Tolerant Heap является самоуправляемым и автоматически отменяет применение системных «заплаток» в тех случаях, когда они не эффективны для того или иного приложения. Тем не менее если есть необходимость в обнулении списка приложений, исправленных средствами FTH, например при тестировании, когда необходимо воспроизвести сбой в приложении, то нужно выполнить следующую команду:

Rundll32.exe fthsvc.dll,FthSysprepSpecialize

Обратите внимание на то, что это может приводить к ошибкам в выполнении ряда приложений — до тех пор, пока механизм FTH снова не применит к ним системные «заплатки».

Утилита Application Verifier

Утилита Application Verifier (%windir%\system32\appverif.exe) — это средство для проверки Windows-приложений, написанных на неуправляемом коде (С/С++), в реальном времени с использованием групп тестов. Цель применения данной утилиты — обнаружение ошибок, которые довольно сложно «отловить» традиционными средствами тестирования, так как данная утилита позволяет отслеживать взаимодействие приложений с операционной системой, использует профилирование на базе объектов ядра системы, реестра, файловой системы и вызовов функций Windows API («куча», ссылки, блокировки и т.п.). В зависимости от задачи разработчики и тестировщики выбирают те или иные тесты, проводят тестирование приложения и анализируют результаты в протоколах, которые по умолчанию сохраняются в каталоге %USERPROFILE%\AppVerifierLogs. Утилита Application Verifier может применяться из графического интерфейса, командной строки или через набор программных интерфейсов (см. заголовочный файл vrfauto.h). Две последние возможности позволяют использовать Application Verifier для автоматизации тестирования. Помимо этого возможно применение Application Verifier как расширения отладчика через команду !avfr.

Утилита Application Verifier поддерживается для операционных систем Windows XP, Windows Vista, Windows 7, Windows Server 2003 и Windows Server 2008 для платформ x86, x64 и IA64. Самую новую версию утилиты Application Verifier можно загрузить с сайта Microsoft, если в разделе Download Center в строке поиска задать название утилиты.

В общем случае процесс проверки приложения заключается в запуске утилиты Application Verifier, выборе тестируемого приложения и необходимых тестов, запуске приложения, выполнении определенного сценария работы приложения и анализе результатов тестирования. Наиболее оптимальных результатов можно достичь, используя Application Verifier совместно с отладчиком и отладочными символами для ядра операционной системы. При применении Application Verifier совместно с отладчиком при обнаружении какой­либо ошибки возникает переключение в точку останова в отладчике (Debugger Break).

Группы тестов

Как мы уже отметили, утилита Application Verifier включает несколько групп тестов: базовые тесты — Basics Verification Layer; тесты, связанные с использованием технологий, объединяемых названием Limited User Account (более распространенное название — User Account Control), — Limited User Account Predictor Verification Layer; различные дополнительные тесты — Miscellaneous Verification Layer; тесты, эмулирующие нехватку системных ресурсов, — Low Resource Simulation Verification Layer; тес­ты, позволяющие проверить совместимость приложений, — Compatibility Verification Layer.

Рассмотрим некоторые из перечисленных тес­тов более подробно. Начнем с базовых тес­тов (Basics Verification Layer). В эту группу входят следующие тесты:

  • Exceptions — проверяет корректную работу приложения в области структурированной обработки исключений — в первую очередь в обработке ошибок, связанных с доступом к объектам и ресурсам (access violation);
  • Handles — проверяет корректную работу приложений со ссылками (handles);
  • Heaps — проверяет корректную работу с памятью в «куче»;
  • Input/Output — отслеживает операции асинхронного ввода­вывода и выполняет ряд проверок этих операций;
  • Leak — обнаруживает утечки ресурсов, выделяемых в динамически загружаемых библиотеках и не освобождаемых после выгрузки библиотек;
  • Locks — проверяет корректное использование блокировок и критических секций;
  • Memory — проверяет корректную работу с программными интерфейсами работы с виртуальной памятью (VirtualAlloc(), MapViewOfFile() и т.п.);
  • TLS — проверяет корректную работу с программными интерфейсами работы с Thread Local Storage;
  • Threadpool — проверяет корректную работу с программными интерфейсами работы с пулом потоков (threadpool).
Читайте также:  Windows 10 как сохранить значки рабочего стола

В группу различных дополнительных тестов (Miscellaneous Verification Layer) входят тесты, контролирующие использование некоторых функций Windows API (Dangerous APIs): TerminateThread(), вызов LoadLibrary() в DllMain(), вызов FreeLibrary() в DllMain() и т.п.; проверяющие использование стека (Dirty Stacks) и корректное применение функций GetTickCount() и TimeGetTime().

В состав Application Verifier также включены тесты, позволяющие проверить совмес-тимость приложений с User Account Control (тест LUAPriv) и рядом других технологий и рекомендаций по написанию совместимых приложений (группа тестов Compatibility). Тес-ты LUAPriv решают две задачи: проверяют работоспособность приложений, запущенных под стандартной учетной записью, и диагнос­тируют потенциальные проблемы, которые могут возникнуть при запуске приложений под стандартной учетной записью. Группа тестов Compatibility включает проверки корректного использования программных интерфейсов для доступа к файловой системе, проверки номера версии операционной системы, использования интерактивных сервисов и установки драйверов уровня ядра операционной системы.

Помимо этого в состав Application Verifier входят тесты Low Resource Simulation, эмулирующие нехватку основных системных ресурсов, например малый объем доступной памяти.

Использование Application Verifier из командной строки

Рассмотрим несколько примеров использования утилиты Application Verifier из командной строки. Следующие команды включают проверку корректной работы со ссылками, «кучей», блокировками, исключениями, TLS и памятью:

appverif /verify TARGET [/faults [PROBABILITY [TIMEOUT [DLL …]]]]

appverif /verify notepad

appverif -enable LAYER … -for TARGET . [-with [LAYER].PROPERTY=[VALUE] …]

appverif -disable LAYER . -for TARGET .

appverif -query LAYER . -for TARGET .

appverif –configure STOP . -for TARGET . [-with STOPPROPERTY=[VALUE] …]

Для включения специальной группы тестов для приложения следует прменять команду:

appverif –enable Heaps Locks –for notepad.exe

Для отмены всех проверок для приложения используется команда:

appverif -disable * -for notepad.exe

appverif -delete settings -for notepad.exe

В целом синтаксис командной строки для утилиты Application Verifier выглядит следующим образом:

appverif -enable LAYER . -for TARGET . [-with [LAYER].PROPERTY=[VALUE] …]

appverif -disable LAYER . -for TARGET .

appverif -query LAYER . -for TARGET .

appverif –configure STOP . -for TARGET . [-with STOPPROPERTY=[VALUE] …]

где LAYER — стандартное название группы тес­тов: Heap, Locks, Handles и т.п.; TARGET — имя исполняемого файла или идентификатор процесса; PROPERTY — название свойства одного из тестов; VALUE — значение свойства; STOP — конфигурируемое значение точки остановки для отладчика; STOPPROPERTY — название точки остановки для отладчика — ErrorReport, Severity, Flavor и т.п.

Завершая этот краткий обзор утилиты Application Verifier, отметим, что она активно используется в различных средствах обеспечения совместимости приложений, входящих в состав Microsoft Application Compatibility Toolkit (ACT), и утилитах сертификации приложения для получения логотипа Compatible with Window 7 — Windows Software Logo Kit (WSLK).

Заключение

В предыдущей и настоящей частях данной статьи мы привели ряд рекомендаций по улучшению стабильности приложений. Мы ознакомились с техникой, позволяющей избежать утечек памяти, предотвратить зависание приложений, а также обсудили применение механизмов Application Restart and Recovery и Windows Error Reporting, позволяющего собирать данные о сбоях, которые происходят в приложениях, механизма Fault Tolerant Heap, автоматически исправляющего ряд наиболее характерных ошибок в приложениях, которые приводят к сбоям при работе с «кучей», и кратко ознакомились с возможностями утилиты Application Verifier.

Читайте также:  Mac os для thinkpad

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

Вот такая ошибка.

Добрейший дзен,господа. Вот такая-вот ошибка сегодня случилась у меня,хотя вчера всё было норм. По ссылке предлагаемой,пройти не могу,так-как Макс тупо крашится. Сталкивался-ли кто с подобным?

ПыСы: Corona 1.5.2

Попробуйте исключить макс из FTH, если крашится. Но вообще FTH сделана как раз для того, чтобы приложения не падали.

Попробуйте исключить макс из FTH, если крашится. Но вообще FTH сделана как раз для того, чтобы приложения не падали.

Можно чутка по-проще разъяснить. Почитал я по ссылке,но. ничего из перечисленного у меня не наблюдается. Сцена очень легкая,никаких долгих просчетов и т.д. И к тому-же.всё вчера работало на ура. А сегодня луп,и такая штуковина.

В общем,как я понимаю. это «глюковая» ошибка? И апосля перезагрузки компа может и вовсе исчезнуть?

Проверил на других файлах. та-же история. Мистика. Буду пробовать перегружать комп.

ПыСы: сорян,лимит плюсов закончился(

А может и нет. Комп новый? Разгон снимите, если есть.

А может и нет. Комп новый?

Проблема после перезагрузки не исчезла. (((

Да.комп относительно новый. Видюху только в понедельник поменял.

Ну если комп новый, то похоже на то, что винда макса не нюхала, и FTH ещё натыкается на его глюки. Я не вникал в устройство этой службы, пересказываю своими словами, как понял.

А какой макс и винда? В 10 винде официально поддерживаются версии с 2017 включительно и новее. Остальное, как утверждает Автодеск, тоже работает, но на ваш страх и риск. Хотя вижу, винда 7-ка.

Винду переустанавливали где-то полгода назад. бо была 10-ка,и это были адские муки и судороги. Но такая трабла нарисовалась вообще на моей памяти в-первые. ни дома,ни на других местах не встречался с ней.

Попробуйте ещё корону посвежее. Есть на торрентах 1.7, а у официалов уже 2.0 версия.

Иногда эта ошибка есть, но всё работает и с ней.

Попробуйте ещё корону посвежее. Есть на торрентах 1.7, а у официалов уже 2.0 версия.

Иногда эта ошибка есть, но всё работает и с ней.

Хз. ставил как-то 1,7. так глючила.

Спасибо за советы)

Проблема как-то решилась?

У меня на прошлой неделе тоже такая кака выползла. И тоже внезапно — вечером все ОК,

утром — «Windows enabled ‘Fault Tolerant Heap’ for 3dsmax or dependent processes. This may have severe performance impact on Corona. Please follow the link to learn how to solve the problem.Affected executables are: WSCommCntr4.exe»

С виреем — все без ошибок, только с короной глюк.

Ничего не меняла, разве что автообновление драйверов произошло, не знаю.

Переустановка короны, макса+корона с очистками реестров ничего не изменили.

Ну. давно винду переставить было нужно Только это и помогло ))))

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

Оцените статью