گرونترین باگ نرمافزاری تاریخ؛ ۳۷۰ میلیون دلار پودر شد رفت هوا
تصور کن یه پروژهٔ فضایی چند صد میلیون دلاری، فقط بهخاطر یه خطای برنامهنویسی ساده در عرض ۳۷ ثانیه نابود بشه ماجرای واقعی پرواز ۵۰۱ موشک آریان ۵ (Ariane 5) یکی از تلخترین و عبرتآموزترین درسهای تاریخ مهندسی کامپیوتره.
داستان چی بود؟
سال ۱۹۹۶، آژانس فضایی اروپا موشک غولپیکر آریان ۵ رو پرتاب کرد. مهندسها برای صرفهجویی در وقت و هزینه، کدهای سیستم ناوبری موشک قبلی یعنی آریان ۴ رو کپیپِیست کرده بودن
اما یه جزئیات حیاتی جا موند:
موشک جدید شتاب و سرعت افقی خیلی بیشتری داشت. در نرمافزار، متغیری برای ذخیره سرعت افقی در نظر گرفته شده بود که در قالب یک عدد ۱۶ بیتی علامتدار ذخیره میشد (با سقف ۳۲,۷۶۷). لحظه فاجعه (Integer Overflow) در ثانیه ۳۶ پرواز، سرعت افقی موشک از عدد ۳۲,۷۶۷ رد شد. سیستم که آمادگی این مقدار رو نداشت، دچار خطای سرریز حافظه یا همون Integer Overflow شد و پردازنده کرش کرد. کدهای گزارش خطا (Error Dump) که پردازنده بیرون داد، توسط کامپیوتر مرکزی به عنوان فرمان تغییر مسیر شدید تفسیر شد نازلهای موتور با تمام توان کج شدن تا به خیال خودشون مسیر رو اصلاح کنن، موشک تو آسمون متلاشی شد و در نهایت خودکار منفجر شد
کپیپیست کردن کدی که تو یه سیستم بینقص کار میکنه، دلیل نمیشه تو محیط جدید و با شرایط جدید هم درست کار کنه. همیشه ورودیها، تستهای مرزی (Edge Cases) و تغییر شرایط رو بررسی کنید
@ITSecurityComputer
Post #32473
7.95K
- ❤ 46
- 👍 16
- 🤣 5