FTH و Win7!

در حال دباگ‌کردن(debugging) تک‌میکر دوجهته بر روی ویندوز ۷ بودم که متوجه اشکالی شدم که باعث بسته شدن تک‌میکر می‌شد(به قول معروف crash کرد) قسمتی از کد را که فکر می‌کردم باعث خطا شده داخل کامنت قرار دادم، مشکل crash کردن حل شد، اما دیدم در خروجی کنسول برنامه موقع اجرای برنامه پیغامی بصورت زیر ایجاد می‌شد:

FTH: (1004): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes. ***

با چند بار اجرای برنامه تعجب کردم که بدون اینکه خطا و crashی ایجاد بشه این پیغام نمایش داده میشه و میگه: «معمولا بعلت crash قبلی این اتفاق رخ میده!»
تنها راه جستجو در اینترنت بود که خوشبختانه به جواب رسید:
در واقع FTH یا همون «Fault Tolerant Heap» سرویسی برای ویندوز ۷ هست که هنگ کردن و crashهای نرم‌افزارها رو تحت‌نظر داره و سعی می‌کنه بصورت خودکار از بروز crashهای آینده برای نرم‌افزارهایی که دچار خطا شدن جلوگیری کنه!

قابلیت FTH برای کاربران یک ویژگی مثبته اما وقتی بحث توسعه و تست نرم‌افزارها پیش میاد این قابلیت باعث میشه که خطاهای نرم‌افزاری پوشیده بشن و قابل ردیابی نباشن!! خوشبختانه چند راه برای نادیده گرفتن FTH دردسترس است!
غیرفعال کردن:
برای غیرفعال کردن این سرویس باید مقدار رجیستری HKLM\Software\Microsoft\FTH\Enabled را به ۰ تغییر داده و ویندوز را راه‌اندازی مجدد کنیم.

اضافه کردن نرم‌افزار به فهرست استثناهای FTH:
کافیست نام فایل اجرایی نرم‌افزار را به مقدار رجیستری HKLM\Software\Microsoft\FTH\ExclusionList اضافه کنیم و ویندوز را راه‌اندازی مجدد کنیم.

خالی کردن فهرست نرم‌افزارهای مورد حمایت FTH:
برای اینکار باید دستور زیر را در خط فرمان با دسترسی مدیر اجرا کنیم، اجرای این دستور بدون پیغام در خروجی خط فرمان است،

Rundll32.exe fthsvc.dll,FthSysprepSpecialize