یک هفته پیش، ما گزارش دادیم که چگونه ویندوز 11 با تغییر نحوه مدیریت حافظه، یک باگ 20 ساله را در بازی GTA San Andreas دوباره زنده کرد و نقص قدیمی در کد بازی را آشکار کرد. مشخص شد که ویندوز در طول سال‌ها رفتارهای عجیب و پنهان خود را داشته است، و توضیح اخیر یک مهندس باسابقه مایکروسافت، نمونه تاریخی جالب دیگری را برجسته می‌کند.

در سال 2009، حوالی زمان انتشار ویندوز 7، اعضای انجمن Neowin و کاربران دیگر شروع به گزارش یک مشکل عجیب کردند: صفحه خوش‌آمدگویی گاهی اوقات پس از ورود به سیستم، تا 30 ثانیه طول می‌کشید تا ناپدید شود. این تأخیر به طور خاص با یک تنظیم ساده مرتبط بود که شامل انتخاب یک رنگ ساده به عنوان پس‌زمینه دسکتاپ می‌شد. بعداً یک مقاله پشتیبانی مایکروسافت تأیید کرد که این مشکل برای کاربران ویندوز 7 و ویندوز سرور 2008 R2 با پس‌زمینه‌های رنگ ساده وجود داشت.

 

کشف باگ عجیب در ویندوز 7: تاخیر 30 ثانیه‌ای لاگین با تغییر رنگ پس‌زمینه | مهندس مایکروسافت پرده از راز 15 ساله برداشت

 

ریموند چن، مهندس باسابقه مایکروسافت و نویسنده وبلاگ The Old New Thing، اخیراً دلیل فنی پشت این تأخیر عجیب در ورود به سیستم را توضیح داد. به گفته چن، که از زمان ویندوز 95 از پس‌زمینه رنگ ساده برای صرفه‌جویی در حافظه و آسان‌تر کردن گزارش باگ استفاده می‌کرده، فرآیند ورود به ویندوز شامل بارگذاری همزمان چندین جزء مانند نوار وظیفه، سرویس‌های سیستم، آیکون‌های دسکتاپ و پس‌زمینه است. سیستم منتظر می‌ماند تا همه آنها سیگنال آماده بودن خود را ارسال کنند. تنها پس از دریافت تأیید همه یا گذشت 30 ثانیه، صفحه خوش‌آمدگویی محو و دسکتاپ ظاهر می‌شود.

چن توضیح می‌دهد که دلیل تأخیر 30 ثانیه‌ای این بود که یکی از این اجزا در ارسال سیگنال “آماده” خود شکست می‌خورد. او این را با یک مثال ساده‌شده از کدی که ممکن است برای بارگذاری کاغذدیواری استفاده شده باشد، نشان می‌دهد:

 

نکته مهم، همانطور که چن اشاره می‌کند، این است که فراخوانی Report(WallpaperReady) درون تابع LoadWallpaperBitmap قرار داشت. این تابع فقط زمانی اجرا می‌شد که یک “تصویر کاغذدیواری” تعریف شده باشد. اگر به جای تصویر یک رنگ ساده انتخاب می‌کردید، تابع LoadWallpaperBitmap کاملاً نادیده گرفته می‌شد، یعنی خط Report(WallpaperReady) هرگز اجرا نمی‌شد. سیستم ورود همچنان منتظر این سیگنال می‌ماند که هرگز نمی‌آمد و در نهایت پس از 30 ثانیه تایم‌اوت می‌کرد و دسکتاپ را نمایش می‌داد.

چن اشاره می‌کند که مشکل مشابهی می‌توانست در صورت فعال کردن گروه پالیسی “پنهان کردن آیکون‌های دسکتاپ” رخ دهد. این به این دلیل بود که کدی که آماده بودن آیکون‌های دسکتاپ را گزارش می‌کرد، احتمالاً درون بررسی شرطی برای آن پالیسی قرار داشت.

 

چن تأکید می‌کند که مهم است بدانیم فرآیند ورود به سیستم لزوماً 30 ثانیه اضافی برای تکمیل همه وظایفش طول نمی‌کشید. صفحه خوش‌آمدگویی فقط برای مدت کامل 30 ثانیه تایم‌اوت قابل مشاهده می‌ماند، زیرا یک جزء خاص در گزارش تکمیل خود شکست می‌خورد، حتی اگر تمام بخش‌های دیگر ورود خیلی زودتر بارگذاری شده بودند.

همانطور که مقاله پشتیبانی مایکروسافت نشان می‌دهد، در نوامبر 2009 یک هات‌فیکس برای رفع این مشکل برای ویندوز 7 و ویندوز سرور 2008 R2 منتشر شد.

source

توسط wikiche.com