باگ سال ۲۰۳۸ کماکان برخی از سیستمها را به خطر انداخته است

پدیده جنجالی «سال ۲۰۳۸» همچنان در مرتبههای مختلف فناوری حضوری مستمر دارد. در تابستان سال ۲۰۲۶، شرکت NI اقدام به انتشار راهنمای جدیدی در خصوص ایراد مربوط به سرریز زمان در برخی سیستمهای NI Linux Real-Time نمود؛ این مشکل به فراوری زمان در قالب عدد صحیح ۳۲ بیتی وابسته است.
در سیستمهایی که زمان یونیکس بهطور ۳۲ بیتی علامتدار ذخیره میشود، بزرگترین عدد قابل ثبت برابر با ۲٬۱۴۷٬۴۸۳٬۶۴۷ است. این مقدار دقیقاً به ساعت ۰۳:۱۴:۰۷ در تاریخ ۱۹ ژانویه ۲۰۳۸ به زمان UTC (۳۰ دی ۱۴۱۶) اشاره میکند. یک ثانیه پس از آن، این عدد از حیطه قابل اندازهگیری خارج خواهد شد.
در چنین وضعیتی، سیستمعامل بهجای نمایش تاریخ سال ۲۰۳۸، به شکل ناگهانی به زمانهای گذشته پرتاب میشود و تاریخ را بهصورت ۱۳ دسامبر ۱۹۰۱ (۲۲ آذر ۱۲۸۰) تفسیر میکند؛ وضعیتی که میتواند به بروز مشکلاتی جدی در سیستمهای حیاتی، انحراف محاسباتی در تراکنشهای مالی، اختلال در فرآیندهای مسیریابی و سایر فعالیتهایی که به زمانبندی دقیق وابسته هستند، منجر گردد.
Unix Timestamp چیست؟
در بسیاری از سیستمهای کامپیوتری، بهجای ثبت تاریخ و ساعت بهصورت مستقیم، زمان بهصورت تعداد ثانیههایی که از ۱ ژانویه ۱۹۷۰ ساعت ۰۰:۰۰ گذشته است، ذخیره میشود. به این مفهوم Unix Timestamp یا زمان یونیکس گفته میشود.
اگر مایل به دانستن این هستید که عدد ۲۱۴۷۴۸۳۶۴۷ دقیقاً به کدام تاریخ مربوط میشود، میتوانید آن را در ابزار مخصوص کاویزو بررسی کنید:
راهحل اساسی، تغییر به استفاده از زمان ۶۴ بیتی است که حیطهی وسیعتری را دربرمیگیرد. کتابخانه GNU C همچنین قابلیت استفاده از time_t با بُعد ۶۴ بیت را برای سیستمهای قدیمیتر فراهم نموده است.
چرا مشکل هنوز مطرح است؟
هشدار اخیر NI نشان میدهد حتی در پروژههای صنعتی با دورههای طولانی، مسائل مربوط به جزئیات قدیمی سیستمعامل میتواند به مشکل سال ۲۰۳۸ تبدیل شود.
در برخی از نسخههای NI Linux Real-Time, فایلسیستمهای ext4 با inode-های ۱۲۸ بایتی ساخته شده بودند که از ثبت زمانهای بالاتر از مرز ۲۰۳۸ جلوگیری میکنند. NI اعلام کرده است که این مشکل در سیستمهای مبتنی بر x64 از نسخه NI Linux RT 2022 Q3 قابل حل شده و به کمک inode-های ۲۵۶ بایتی، امکان ثبت زمانهای بعد از سال ۲۰۳۸ مهیا گردیده است.
با این حال، این اصلاحات برای تمامی سختافزارها بهطور یکسان اعمال نمیشود. NI اشاره کرده است که مسئله «سال ۲۰۳۸» هنوز بهطور کامل در سیستمهای ARM32 حل نشده است. برخی تجهیزات قدیمی که نیاز دارند برای سالها بدون تعویض سختافزار فعالیت کنند، این محدودیتها را بهصورت جدی حس خواهند کرد.
از این رو، «باگ سال ۲۰۳۸» به این معنا نیست که تمام سیستمها در آن تاریخ از کار خواهند افتاد. این ایراد فقط نگرانکننده سیستمها، نرمافزارها و تجهیزات قدیمی یا خاصی است که هنوز به زمان ۳۲ بیتی وابستهاند؛ در حالی که بیشتر سیستمهای روز به زمان ۶۴ بیتی تغییر کردهاند و در این راستا با چنین محدودیتی مواجه نیستند.



