ماجرای crash کردن Windows 95 بعد از 49.7 روز!
امروز به یه مطلب جالبی برخوردم.
وقتی مایکروسافت نسخه اولیه ویندوز 95 رو منتشر کرد، بعد از مدتی متوجه شد که کامپیوتر هایی که از این سیستم عامل استفاده میکنن اگر 49.7 روز به طور مداوم روشن بمونن ویندوز یهو crash میکنه.
بعد از بررسی متوجه میشن علتش type متغیری هست که زمان روشن بودن سیستم(Uptime) رو نگهداری میکنه. این متغیر زمان روشن بودن سیستم رو به میلی ثانیه نگه میداره و type رو unsigned int 32 انتخاب کرده بودن که این تایپ نهایتا تا عدد 4,294,967,295 رو میتونه توی خودش ذخیره کنه و چون بعد از 49.7 روز مقدار میلی ثانیه های گذشته از روشن بودن سیستم به عدد بالا میرسه، overflow رخ میده و این متغیر دوباره به 0 ریست میشه!
حالا بعضی از قسمت های سیستم عامل دائم در حال بررسی مقدار این متغیر هستن و این فرض رو دارن که این متغیر دائم باید در حال زیاد شدن باشه، وقتی که میبینن یهو ریست شده براشون غیر منتظرس و crash رخ میده.
بعد از اینکه مشکل رو پیدا کردن type رو به unsigned int 64 تغییر دادن و مشکل حل شد
@DevTwitter |
امروز به یه مطلب جالبی برخوردم.
وقتی مایکروسافت نسخه اولیه ویندوز 95 رو منتشر کرد، بعد از مدتی متوجه شد که کامپیوتر هایی که از این سیستم عامل استفاده میکنن اگر 49.7 روز به طور مداوم روشن بمونن ویندوز یهو crash میکنه.
بعد از بررسی متوجه میشن علتش type متغیری هست که زمان روشن بودن سیستم(Uptime) رو نگهداری میکنه. این متغیر زمان روشن بودن سیستم رو به میلی ثانیه نگه میداره و type رو unsigned int 32 انتخاب کرده بودن که این تایپ نهایتا تا عدد 4,294,967,295 رو میتونه توی خودش ذخیره کنه و چون بعد از 49.7 روز مقدار میلی ثانیه های گذشته از روشن بودن سیستم به عدد بالا میرسه، overflow رخ میده و این متغیر دوباره به 0 ریست میشه!
حالا بعضی از قسمت های سیستم عامل دائم در حال بررسی مقدار این متغیر هستن و این فرض رو دارن که این متغیر دائم باید در حال زیاد شدن باشه، وقتی که میبینن یهو ریست شده براشون غیر منتظرس و crash رخ میده.
بعد از اینکه مشکل رو پیدا کردن type رو به unsigned int 64 تغییر دادن و مشکل حل شد
@DevTwitter |