Fault tolerant heap 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 относятся:

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

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

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

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

Информация о 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). В эту группу входят следующие тесты:

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

Читайте также:  Bcm4313gn driver windows 7 x64

В состав 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 Heaps Locks –for notepad.exe

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

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

где 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.

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Очень долгий старт рендера!

так же, на форуме короны шлют попробовать вот это

Боже мой. 1,5 года мучений. Почему только корона дает на это ссылку?! Решение работает и для Vray

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

Там при рендере открывается окошко, в котором перечислены все косяки сцены и даны ссылки на методы их устранения. Просто избавляемся от всех ошибок и все прекрасно работает.

Читайте также:  Microsoft windows 7 sp1 ultimate x86

Уже с десяток проектов сделал с тех пор в короне без всяких проблем, единственная сложность это оптимизировать сцену так, чтобы хватало оперативки. у нас на ферме машины с 32гб и если сильно не переваливать за эту цифру, то проблем больше никаких.

Удачных вам проектов, не бойтесь переходить на корону, да и вообще использовать новые методы в своей работе, это бывает сложно, но оно того стоит!

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

Свежая инфа: сегодня эту же сцену (ничего не меняла с последнего раза) поставила снова на рендер, старт более 40 минут.. я не дождалась. Это проект для себя, так что сроков нет. В сцене нет почти инстансов и точно нет прокси. Виснет на Secondary GIЧто за фигня? Хоть опять ставь 1.1, там хотя бы рендер шел.

и это сообщение будет появляться постоянно на протяжении рендера.

также сверх огромные текстуры можно пережать. всегда есть способ что-нибудь оптимизировать)

Может было это на форуме.

У меня тоже зависал старт рендера, может эта информация кому-то поможет:

Оказалось, что при включении clipping planes на стандартной (free) камере, если секущая плоскость попадала на источник света (солнце, лайты, материал света, неважно что из этого), то старт зависал на десятки минут, а отмена старта просто вешала всю сцену.

Corona 1.3 Max 2014.

При перемещении секущей плоскости (красная линия) с источника света, стартовал рендер моментально. Может это только у меня такой глюк. но поделюсь этой информацией.

Уменьш количество прокси до одного вида на каждое дерево куст и т.д., старайся скатерить, у меня после скатера норм стартует!

так же, на форуме короны шлют попробовать вот это

Боже мой. 1,5 года мучений. Почему только корона дает на это ссылку?! Решение работает и для Vray

Ребята, может кто то по русски всё таки подскажет что делать то. )

Стал наблюдать что с выходом 1.3 это стало частой проблемой, особенно для тех у кого машины по слабее.

Моя сцена считалась долго из за еверовских деревьев, почему так, причину я так и не нашел. Карты менял, делал полностью новые материалы, ничего не помогло. Сменил деревья на Hq сборник, полет сразу ровный.

В моем случае это была геометрия, либо что то в матах.

Ностальгия прям про старым играм с автоматическим переводом, когда перевод еще сильнее запутывает, чем оригинал )))

Во общем подобная проблема тоже была, что помогло:

И да деревья от Evermotion тоже неким магическим способом влияют на время рендера, продлевая его

Не понимаю только как FTH влияет на рендер, если я отправляю его на ферму.

Вобщем. 24 гига оперативы, Корона 1.5 hofix 2, макс 2014. В сцене много-много проксей. Тотально 50 мультов треугольников.

Источник

Corona Renderer Helpdesk for 3ds Max plugin

How can we help you today?

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: xxxx (typically 3dsmax.exe) Print

Modified on: Fri, 16 Sep, 2016 at 11:16 AM

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:
xxxx (typically 3dsmax.exe)

This article contains possible solutions to following problems:

These problems may be related to Microsoft Windows detecting an application which is often crashing (in this case 3ds Max, Corona, or other plugin) and applying special mitigations to it. In some cases this can prevent the application from crashing, but at the same time makes it extremely slow.

The solution to these problems may be disabling the Fault Tolerant Heap globally, or for a specific application (see below).

What is FTH?

The Fault Tolerant Heap (FTH) is a subsystem of Windows 7 responsible for monitoring application crashes and autonomously applying mitigations to prevent future crashes on a per application basis. For the vast majority of users, FTH will function with no need for intervention or change on their part. However, in some cases, application developers and software testers may need to override the default behavior of this system.

Viewing FTH Logs

Viewing Fault Tolerant Heap activity

Fault Tolerant Heap logs information when the service starts, stops, or starts mitigating problems for a new application. To view this information, follow these steps:

Disabling FTH

Note: basic knowledge on editing the Windows registry is required to perform the below steps. Please see: Windows registry information for advanced users

This will permanently exclude an application from FTH, unless it is reverted by the user.

Then delete the exe entry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\State

This should disable FTH for the added application.

This will temporarily exclude an application from FTH, and Windows will be able to autonomously include the application again in the future.

Go to HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER versions of Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\ your_application.exe and delete the Fault­Tolerant­Heap entry.

3. Disabling FTH completely:

To disable Fault Tolerant Heap entirely on a system, set the REG_DWORD value HKEY_LOCAL_MACHINE \ Software\Microsoft\FTH\Enabled to .

After changing this value, restart the system. FTH will no longer activate for new applications.

You may additionally need to delete the exe entry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\State

Читайте также:  Anime cursors for windows 10

4. Resetting the list of applications tracked by FTH

Fault Tolerant heap is self-managing and will autonomously stop applying in the case that mitigations are not effective for a given application. However, if you need to reset the list of applications for which FTH is mitigating problems (for example, if you are testing an application and need to reproduce a crash that FTH is mitigating), you can run the following command from an elevated command prompt:

Caution Running this command will clear all FTH applications, so applications that are currently functioning properly may begin to crash again after running this command.

Parsing the scene and network performance (solved by disabling FTH)

Corona 1.01.00 Transforming Vertices too long on Slave (WSCommCntr4.exe was found in FTH logs, solved by renaming WSCommCntr4.exe and thus preventing it from running)

Источник

Ошибка памяти в Windows: современные методы войны с ними

Обычно мы имеем свойство не рассматривать и не публиковать информацию с русскоязычных блогов Microsoft, но этот раз будет исключением, в силу того что Петр Диденко, веб-евангиелист Microsoft, поделился на своем ресурсе о примечательной не заметной для обывательского глаза функции Windows 7, обеспечивающая стабильность в работе данной системы. Именно наличие и знание о существовании этих небольших полезных функций позволяет работать с данной системой комфортно и без ошибок.

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

Эта примечательная функция носит название FTH, или Fault Tolerant Heap, и к нашему сожалению очень поверхностно описана в базе знаний MSDN, несмотря на свою очевидную полезность. Так как не ясно в чем смысл такой секретности данной функции, придется быть предельно осторожными в ее рассмотрении.

Новшества Windows 7: современные методы борьбы с ошибками памяти

Одним словом, если вы хотя бы мало-мальски знакомы с языками программирования, вам известен такой термин как «heap» это пространство в памяти, использующаяся той структурой данных, за счет которой осуществляется динамическая область памяти программы. Чтобы получить понимание о принципах работы «heap» достаточно воспользоваться какой-либо поисковой системой.

«Heap» – достаточно проблемная часть, так как ее неправильное функционирование а вследствие этого неправильная работа с памятью, чаще всего приводит к таким проблемам как неправильное высвобождение памяти при завершении или начале работы приложения, переполнение буфера при чтении/записи, выдача неверного адреса памяти после высвобождения нужного пространства и многое другое. В конечном итоге можно объяснить это короче, не используя стоь сложные термины: программы в основном отказываются работать именно из-за неправильной их работы с памятью. Большая часть этих проблем связана именно с плохо обеспеченной работой с «heap».

Изучив статистику ошибок в результате использования операционной системы Vista, программисты Microsoft решили реализовать новую подсистему, использующеюся в настольных версиях Windows 7, при помощи которой осуществляется автоматическое определение приложений, которые отказываются работать из-за неполадок в «heap», и предотвращать ошибки посредством использования автоматизированных методов и приемов во избежание неприятностей связанных с «heap». В результате действия этих приемов и методик программы не прекращают свою работу выдавая ошибку, или как минимум делают это реже. FTH распознает и предупреждает огромное количество неполадок в работе «heap».

Подробная информация об ошибках группируется и поддается анализу, происходит это посредством WER, которая связывается с головной базой знаний (не секрет что FTH реализуется во взаимодействии с Dr. Watson), которая получает подробные отчеты, и дополнительная служебная информация по диагностике проблемного элемента, что особенно важно, не содержащая каких-либо персональных данных о владельце.

FTH – логически дополненное расширение WDI (Windows Diagnostics Instrumentation), и является очень эффективным инструментом выполняющим присмотр за оригинальным NT heap, и изменяющим и дополняющим часть запросов. Основным принципом в его работе является минимальное вмешательство в производительность системы в целом.

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

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

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

При возникновении ошибок у приложения Windows автоматически рассмотрит имеет ли это какую-либо связь с «heap», и сделает вывод использовать ли в данном случае FTH, или все же – нет. FTH может дать два результата: первое, — программа или совсем перестанет ломаться или станет делать это реже; второе – проинформирует о данной ситуации центральную базу данных об ошибках, вследствие чего разработчик их исправит. Но в любом случае польза – налицо.

Эта фишка одна из тех о которых пользователей наверняка не знает, хотя она и очень важна. Так что в следующий раз спрашивая мысленно у Гейтса, — «За что я плачу», вспоминайте о множестве подобных невидимых нюансов.

И информация для размышления: большая часть проблем с памятью возникает именно в использовании сторонних приложений.

Источник

Поделиться с друзьями
Советы экспертов и специалистов
Adblock
detector