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

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

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

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

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

نكته حязيكننده

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

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

هدف ابتدایی

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

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

توسط nastoor.ir