У macOS знайшли баг, який «ламає» систему через 49 днів роботи
Фахівці Photon знайшли незвичайну проблему в macOS: через 49 днів, 17 годин, 2 хвилин і 47 секунд безперервної роботи в системі заморожується фреймворк TCP, через що неможливо встановити з'єднання з інтернетом.
Проблема вирішується перезавантаження, але після цього відлік стартує знову.
Винуватцем виявився механізм tcp_now, який відстежує час у механізмі TCР. Справа в тому, що цей лічильник має граничний час, після якого він буде переповнений — цей час становить 4 294 967 секунд.
Операційні системи збирають та видаляють закриті TCP-з'єднання через короткий час, у разі macOS цей час становить 30 секунд. При спробі очистити неактивні з'єднання, коли tcp_now близький до свого граничного значення, призводить до того, що час закриття з'єднання розраховується саме за цим числом і ці з'єднання не закриваються, після чого стек TCP переповнюється, і нове з'єднання стає неможливо встановити.
Колись такій же проблемі була схильна до Windows 98 — через ті ж ~49 днів система могла зависнути через переповнення лічильника.
Фахівці дійшли висновку, що в Apple ніхто не тестував macOS протягом 49 днів безперервної роботи, тому помилки не було виявлено.
Источник: ilenta.com